Age | Commit message (Collapse) | Author | |
---|---|---|---|
2021-10-08 | ATA: implement the IDENTIFY PACKET DEVICE command | dzwdz | |
2021-10-08 | remove return statements from void function | dzwdz | |
2021-10-08 | ata: proper drive type detection; soft reset; 400ns delay function | dzwdz | |
2021-10-07 | ATA: detect device type | dzwdz | |
2021-10-07 | ATA: read identify data, detect drive size | dzwdz | |
2021-10-07 | kernel/i386: fix port_in16's return value size | dzwdz | |
2021-10-07 | kernel/i386: add 16bit port io functions | dzwdz | |
2021-10-07 | kernel/i386: rename the port io functions with their bit length | dzwdz | |
2021-10-06 | kernel/i386: implement part of ATA IDENTIFY | dzwdz | |
2021-10-05 | isr: simplify the exception handler | dzwdz | |
2021-10-05 | kill the process that caused an exception instead of panicking | dzwdz | |
2021-10-02 | implement serial/tty input | dzwdz | |
2021-10-02 | serial: implement a selftest | dzwdz | |
2021-10-02 | rename kernel/arch/log.h to io.h | dzwdz | |
it's not related to logging but to general io, the old name didn't make sense | |||
2021-09-21 | start using sparse's `-Wnon-pointer-null` | dzwdz | |
While I personally don't see a reason to use NULL instead of 0, I assume that whoever made that a sparse default knew what they were doing. | |||
2021-09-21 | start using sparse's `-Wdecl` | dzwdz | |
2021-09-20 | create a few specialized panic()s | dzwdz | |
thanks to this i can tell which ones are placeholders, and which ones should stay | |||
2021-09-19 | call sysenter_setup before kmain_early | dzwdz | |
makes the code slightly simpler, imo | |||
2021-09-18 | merge `kernel/types.h` and `init/types.h` | dzwdz | |
2021-09-14 | merge the `syscall_handler` and `_syscall` declarations | dzwdz | |
i think that making the call a bit more "transparent" makes the code nicer | |||
2021-09-14 | add support for 4-parameter syscalls | dzwdz | |
2021-09-12 | log cr2 on page faults | dzwdz | |
2021-09-12 | make the inline functions static | dzwdz | |
otherwise this doesn't compile with -O0 | |||
2021-09-11 | replace `user_ptr` with a linux-style `__user` annotation | dzwdz | |
2021-09-11 | fix the `sparse` warnings | dzwdz | |
2021-09-05 | move most of the memory stuff to kernel/mem/ | dzwdz | |
2021-08-24 | switch to using user_ptr for pointers coming from userland | dzwdz | |
this avoid accidental dereferences, and now it's easy to tell apart which pointers are safe to directly read and which aren't. cons: - const is completely discarded | |||
2021-08-24 | replace () with (void) in function definitions | dzwdz | |
`()` means that any amt of arguments will be accepted, which isn't what i want | |||
2021-08-22 | kernel: implement assert | dzwdz | |
2021-08-10 | statically assert that the pointer size == 4 bytes | dzwdz | |
2021-08-09 | move the x86 port io code to a separate file | dzwdz | |
2021-08-09 | print the boot heart on both VGA and serial | dzwdz | |
2021-08-09 | vga tty: vga_putchar is now static | dzwdz | |
2021-08-09 | implement serial output | dzwdz | |
2021-08-09 | rename `log_` to `tty_`, `tty_` to `vga_` | dzwdz | |
2021-08-09 | move all the tty stuff to a tty directory | dzwdz | |
2021-07-26 | fork() pt 1: cloning process memory | 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 | save all registers on syscalls | dzwdz | |
2021-07-23 | update the process' EIP/ESP when it syscalls | 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 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 | |