Bananymous
a3a287f5ca
Bootloader: Continue work on bootloader
...
Bootloader can now get the memory map and read cmdline from user.
Now 'just' video mode query, ext2 and ELF parsing are needed :D
2023-11-11 22:49:00 +02:00
Bananymous
c47f6a78bc
Bootloader: Start work on bootloader
...
I wrote a fast first stage bootloader and a installer to put it into
a disk image.
2023-11-09 22:42:47 +02:00
Bananymous
430a006acf
Toolchain: Fix typo when setting make flags
...
I defaultet MAKEFLAGS to -j which will launch processes in parallel
without any limit.
2023-11-09 21:57:45 +02:00
Bananymous
845ed66e5e
Toolchain: add em=gnu to gas. This allows using / in expressions
2023-11-09 21:43:13 +02:00
Bananymous
2191ca46bb
Kernel: Make TmpFS enforce max page count.
2023-11-07 16:13:21 +02:00
Bananymous
cec04a2858
Kernel: Remove now obsolete RamFS
...
Everything is using now the better TmpFS which uses physical pages
for page allocation instead of the static kmalloc memory.
2023-11-07 16:07:11 +02:00
Bananymous
b87351f6d5
Kernel: Make DevFS use the new and better TmpFS instead of RamFS
2023-11-07 16:05:05 +02:00
Bananymous
464737fbe9
Kernel: Add method to TmpFS for looping over all (cached) inodes
2023-11-07 16:04:34 +02:00
Bananymous
8b4f661acb
Kernel: Lock TmpFS in all its methods
2023-11-07 16:03:52 +02:00
Bananymous
27963febc0
Kernel: Implement symlinks to TmpFS
2023-11-07 15:59:50 +02:00
Bananymous
6d4b684219
Kernel: Make PS/2 keyboard wait until interrupts are enabled
2023-11-07 15:58:50 +02:00
Bananymous
670c787af3
BuildSystem: Fix temporary sysroot creation in toolchain compilation
2023-11-07 14:16:49 +02:00
Bananymous
a0fbf18d3b
meminfo: better format for files without permissions
2023-11-07 02:41:01 +02:00
Bananymous
1acc0abf2e
Kernel: Make unlinking from /proc always fail with EPERM
2023-11-07 02:40:27 +02:00
Bananymous
c20f773c5d
Kernel: /tmp is now TmpFS instead of RamFS
2023-11-07 02:36:22 +02:00
Bananymous
a46b2f43d9
Kernel: Make ProcFS use the new TmpFS internally
2023-11-07 02:35:44 +02:00
Bananymous
a20f8607de
Kernel: Implement TmpFS Inode unlinking and deletion
2023-11-06 21:49:12 +02:00
Bananymous
af330f7b8e
Kernel: TmpFS directory inodes now iterate over only valid entries
2023-11-06 21:41:51 +02:00
Bananymous
e33b3bcdff
Kernel: Fix TmpFS directory entry enumeration early return
2023-11-06 21:06:10 +02:00
Bananymous
181d139c7d
Kernel: Fix ext2 directory listing for big directories
2023-11-06 21:05:58 +02:00
Bananymous
639fd8804c
Kernel: Implement TmpFS directory listing
2023-11-06 21:05:58 +02:00
Bananymous
cbb2c37e00
Kernel: Implement TmpFS inode chmod
2023-11-06 20:11:34 +02:00
Bananymous
ab4f033385
Kernel: Cleanup TmpFS code and block access doesn't require allocs
...
TmpFS blocks are now accessed with a simple wrapper
2023-11-06 20:07:09 +02:00
Bananymous
1ed08f62d3
Kernel: TmpInode blocks are on demand allocated
2023-11-06 10:44:37 +02:00
Bananymous
8164c15b6c
Kernel: Implement read/write/truncate for TmpFileInode
2023-11-05 02:28:43 +02:00
Bananymous
f9bf47ab30
Kernel: Start work on proper TmpFS in Heap instead of kmalloc memory
2023-11-04 18:18:45 +02:00
Bananymous
e5ffadb109
Kernel: Add better APIs for fast page
2023-11-04 18:13:16 +02:00
Bananymous
061d10e635
BAN: Update bytespan -> span API
2023-11-04 18:12:46 +02:00
Bananymous
6d899aa6ce
BuildSystem: using sysroot doesn't need root privileges anymore!
...
Sysroot is now created with fakeroot. This allows root access to be
only needed for disk image creation, since it uses loopback devices.
2023-11-04 17:50:43 +02:00
Bananymous
120f7329b1
BAN: Update ASSERT api
...
its now much harder to mix < with <= and > with >=
2023-11-02 00:01:12 +02:00
Bananymous
4f25c20c97
Kernel: Canonicalize vaddr before using it
2023-10-30 19:20:17 +02:00
Bananymous
5e396851f4
Kernel: Remove unused externs in kernel.cpp
2023-10-30 19:09:31 +02:00
Bananymous
a44482639d
Kernel: Temporarily force FileBackedRegion mappings writable
...
Now that write-protect bit is enabled this is neccessary.
2023-10-30 19:08:33 +02:00
Bananymous
3bac19e518
Kernel: Add fast page to page table
...
Add "fast page" to KERNEL_OFFSET. This is always present in page
tables and only requires changing the page table entry to map. This
requires no interrupts since it should only be for very operations
like memcpy.
I used to map all temporary mappings to vaddr 0, but this is much
better. C++ standard always says that nullptr access is undefined
and this gets rid of it.
Fixed some bugs I found along the way
2023-10-30 19:02:09 +02:00
Bananymous
4dbe15aa0e
Kernel: Remove GeneralAllocator since it was not used
2023-10-30 18:13:17 +02:00
Bananymous
1c5985148c
Kernel: Allow offsetof with packed fields
...
This is not standard C++ but should be fine with my toolchain.
2023-10-30 17:51:18 +02:00
Bananymous
ce2461d0e8
Kernel: panic takes arguments as rvalue references
2023-10-30 16:22:02 +02:00
Bananymous
4e785a133c
Kernel: Fix ext2 small link deallocation
...
Also fix deallocation bug
2023-10-30 16:22:02 +02:00
Bananymous
26c7aee327
Kernel: only map kernel from g_kernel_start onwards
2023-10-30 16:22:02 +02:00
Bananymous
0405461742
BAN: Implement better ASSERT macros
...
Implement macros for all basic binary ops. These macros print failed
values when the fail.
2023-10-30 16:22:02 +02:00
Bananymous
8a10853ba7
Kernel: Enable Write Protect. This seems to be good for security
2023-10-30 12:23:22 +02:00
Bananymous
5d34cebeca
Kernel: Fix stack OOB detection
...
I now check both interrupt and normal stack to detect OOB. Processes
are killed if they encouner stack over/under flow.
2023-10-30 12:17:08 +02:00
Bananymous
3d899d2e44
Kernel/LibELF: Map pages always as RW so kernel can write to them
...
Kernel doesn't seem to require W permissions to a page without UEFI
so this had not been found earlier.
2023-10-30 12:14:12 +02:00
Bananymous
f72fdeeb59
BAN: String now uses union for its sso storage
...
This allows String to shrink by 8 bytes since Variant's 8 index is
no longer stored in here.
This required me to make Strings max size one bit less, but that
should still be fine. There should never be strings with size of
over half of the computer's address space.
2023-10-30 11:13:16 +02:00
Bananymous
382f9d9bb3
Userspace: Add quick test for global ctors and dtors
2023-10-30 11:11:10 +02:00
Bananymous
bc1d1bf919
LibC: implement and call __cxa_finalize() on exit()
...
This allows global destructors to be actually called
2023-10-30 11:10:08 +02:00
Bananymous
f05b9a6877
Kernel/LibC: Add crt* files to LibC and remove crt0 from kernel
...
There was no reason for libc get crt0 from kernel.
2023-10-30 11:06:13 +02:00
Bananymous
ea5ed3001e
Toolchain: Clone GCC and Binutils from git
...
This feels much cleaner than just downloading tar balls from
pregiven urls. Also patching works much better like this!
I added --disable-initfini-array since global constructors were
not called.
2023-10-30 11:02:57 +02:00
Bananymous
f312c3a4d7
Kernel: Fix ACPI DSDT address
...
Read x_dsdt address only if fadt's length contains it. Bochs seems
to have version 1 fadt without the x_* fields.
2023-10-29 21:35:11 +02:00
Bananymous
1af3ca19ab
BAN: Rewrite String with small string optimizations
...
String now holds a 15 byte sso buffer. I'm not sure what the size
should actually be but 15 will work for now. Maybe the sso buffer
should be contained in an union with one bit flag in size instead of
variant that uses extra 8 bytes for type index.
This patch buffs sizeof(String) from 24 bytes to 32 bytes on 64 bit.
I assume this is much better version than the old which had to make
allocation even for empty strings :D.
2023-10-29 03:11:13 +03:00