Age | Commit message (Collapse) | Author | |
---|---|---|---|
2021-08-03 | remove the dummy kernel test | dzwdz | |
what's the point, we have real tests now | |||
2021-08-03 | fix inconsistent semicolons | dzwdz | |
2021-08-03 | kernel: implement static_strcmp() | dzwdz | |
will be used to test functions operating on strings | |||
2021-08-03 | kernel: implement memcmp | dzwdz | |
2021-08-03 | a bad testing framework | dzwdz | |
2021-08-03 | put the NUM2STR macro in util.h | dzwdz | |
i'll use it outside of panic.h | |||
2021-07-31 | try documenting the syscalls (and fail badly) | dzwdz | |
2021-07-31 | change the syscall naming convention; same one in kernel and userland | dzwdz | |
2021-07-31 | kmalloc() and kfree() stubs | dzwdz | |
2021-07-26 | rename process_new() to process_seed() | dzwdz | |
it's only meant to create the root process, the old name could've been misleading | |||
2021-07-26 | exit() now switches to the first running process | dzwdz | |
i used a linked list because it's the simplest way to implement this | |||
2021-07-26 | fork() pt 1: cloning process memory | dzwdz | |
2021-07-26 | mark sc_exit() as noreturn | dzwdz | |
gets rid of the double panic() call | |||
2021-07-25 | print a heart on boot | dzwdz | |
2021-07-24 | fix some warnings | dzwdz | |
2021-07-24 | simplify the struct copy in sysexit() | dzwdz | |
2021-07-24 | sysenter: save the registers into _sysexit_regs, makes the code cleaner (imo) | dzwdz | |
2021-07-24 | merge the `register` and `register_pushad` structs | dzwdz | |
2021-07-24 | sysexit() now overrides all registers | dzwdz | |
when doing anything more complex than starting a new program, you pretty much need to pass a full register dump. otherwise stuff will break | |||
2021-07-24 | remove sysenter_setup from arch/generic.h - it's not even used | dzwdz | |
2021-07-24 | save all registers on syscalls | dzwdz | |
2021-07-23 | add a barebones exit() syscall | dzwdz | |
2021-07-23 | update the process' EIP/ESP when it syscalls | dzwdz | |
2021-07-22 | don't map the VGA console buffer in user processes | dzwdz | |
2021-07-22 | disable paging when handling interrupts | dzwdz | |
The kernel code assumes that paging is always disabled. I've also added a bit of comments to the assembly / ruined the git blame. | |||
2021-07-22 | implement the debuglog() syscall | dzwdz | |
2021-07-21 | syscall parameter & return value passing | dzwdz | |
Sadly, sysenter on i386 limits me to only 4 arguments (so, 1 for the syscall id + 3 real args). If that turns out to be an issue I'll either just switch to interrupts, or switch to x64. | |||
2021-07-21 | barebones syscall | dzwdz | |
2021-07-21 | fix init stack alignment | dzwdz | |
2021-07-21 | fix sysenter()'s stack argument | dzwdz | |
It was taken from the wrong place - also I don't think that functions should change their EIP in the first place? | |||
2021-07-21 | simplify the IDT generation | dzwdz | |
2021-07-21 | create ISR stubs, which call a single main isr handler | dzwdz | |
quick explaination of how this even works: The `call` in each stub pushes its own address onto the stack before calling stage2. We can substract the address of the 0th ISR to get the offset, which we then divide by the size of each stub to get the index. | |||
2021-07-20 | remove an already finished TODO | dzwdz | |
2021-07-20 | per-process virtual memory | dzwdz | |
VGA is only mapped into the virtual memory because there are no other ways of interacting with the OS. | |||
2021-07-20 | rename pagedir_use() to pagedir_switch() | dzwdz | |
imo "use" was slightly misleading | |||
2021-07-20 | only enable paging when jumping into ring 0 | dzwdz | |
The kernel can't use the limited paging tables of user processes. Alternatively, sysenter could accept a parameter with a new cr3. That would allow/require using paging in the kernel - so I'll switch to it later, but I want to get other stuff done first. | |||
2021-07-20 | global PAGE_MASK define | dzwdz | |
it's pretty useful, so it makes sense to define it alongside PAGE_SIZE | |||
2021-07-19 | fix some style inconsistenties | dzwdz | |
2021-07-19 | remove the unused r3_test function | dzwdz | |
2021-07-19 | very basic paging | dzwdz | |
2021-07-19 | add a page fault handler | dzwdz | |
2021-07-18 | basic executable loading | dzwdz | |
2021-07-18 | clean up the linker script, remove duplicate labels | dzwdz | |
2021-07-18 | fix most current compiler warnings | dzwdz | |
stack_top got changed into a char, because `extern void` isn't even valid. others are self-explanatory | |||
2021-07-18 | move the kernel linker script to src/kernel/ | dzwdz | |
2021-07-18 | move all kernel sources to src/kernel/ | dzwdz | |
2021-07-17 | detect the highest used memory address, and only allocate pages above it | dzwdz | |
2021-07-17 | Revert "debug code, verifies if the memory gets set up correctly" | dzwdz | |
not meant to be in the main tree, included for completeness | |||
2021-07-17 | debug code, verifies if the memory gets set up correctly | dzwdz | |
i guess that i can include this for completeness. if not for the awful pointer printing thingy this could probably get into the main version. TODO? | |||
2021-07-17 | basic boot module support | dzwdz | |
This loads a file from the boot disk into memory. Currently it just gets printed, but it's going to become a real executable soon. |