Age | Commit message (Collapse) | Author | |
---|---|---|---|
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 | minor Makefile readibility tweaks | dzwdz | |
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-18 | Make: use a from_sources function instead of a global OBJ macro | dzwdz | |
this will make sense once i start compiling other binaries too | |||
2021-07-17 | add a shitty readme | 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. | |||
2021-07-17 | hacky function for logging pointers | dzwdz | |
2021-07-17 | rename _kernel_end to _bss_end | dzwdz | |
2021-07-17 | multiboot: manually address regions of the kernel | dzwdz | |
thanks to this, i can specify the region where the bss is - so GRUB won't place any boot modules there | |||
2021-07-16 | `make boot` uses boot.iso / GRUB now | dzwdz | |
I'm going to implement the "initrd" soon, and it'll use multiboot modules - I have no idea how to use them with the qemu -kernel thing, and I have to support GRUB anyways, so I'm just going to use it instead. | |||
2021-07-10 | implement a basic linter | dzwdz | |
Currently it just checks if the kernel doesn't accidentally use arch-dependent headers. | |||
2021-07-10 | abstract away logging | dzwdz | |
Now, the kernel only interfaces with the architecture dependent stuff via functions declared in generic.h. I'll write a linter enforcing this soon. | |||
2021-07-10 | fix the `make debug` target | dzwdz | |
2021-07-10 | building the .iso is now the default Make target | dzwdz | |
2021-07-10 | clean up the GDT initialization code | dzwdz | |
2021-07-10 | allocate the initial stack directly in linker.ld | dzwdz | |
IMO it's cleaner this way. I wanted to put it just under 1M, but it turns out that it isn't accessible at boot in QEMU. | |||
2021-07-10 | a sensible source structure | dzwdz | |
The idea is that src/kernel/ is only allowed to interface with the hardware using whatever's defined in src/arch/generic.h. I'll probably write a small script for checking this later on. This is a giant commit so I've probably fucked something up. It boots fine on Bochs and QEMU, so at least there's that. | |||
2021-07-10 | make clangd detect the includes again | dzwdz | |
2021-07-10 | separate the source code from object files; more modular Makefile | dzwdz | |
2021-07-10 | add a basic #GP handler | dzwdz | |
2021-07-10 | update all segment registers when setting the GDT | dzwdz | |
not doing that caused interrupts to break on Bochs | |||
2021-07-09 | fix some dumb typos | dzwdz | |
2021-07-09 | Add more debug prints; move the old ones around | dzwdz | |
2021-07-09 | implement basic kernel panics | dzwdz | |
2021-07-09 | interrupt self-test | dzwdz | |
2021-07-09 | basic interrupt support | dzwdz | |
2021-07-09 | support building .iso images | dzwdz | |
2021-07-09 | fix the r0 data segment | dzwdz | |
2021-07-06 | stub page allocator | dzwdz | |
the malloc stub didn't even make sense | |||
2021-06-25 | malloc stub + processes | dzwdz | |
well, there's only one process, but shh | |||
2021-06-25 | tty_const | dzwdz | |
2021-06-25 | ring3 | dzwdz | |