summaryrefslogtreecommitdiff
path: root/src/kernel/arch/i386/sysenter.s
AgeCommit message (Collapse)Author
2022-05-21kernel/i386: only map what's absolutely necessary in the userdzwdz
2022-04-11kernel: implement `cpu_pause()` in assembly, remove `irq_interrupt_flag()`dzwdz
2021-07-24sysenter: save the registers into _sysexit_regs, makes the code cleaner (imo)dzwdz
2021-07-24sysexit() now overrides all registersdzwdz
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-24save all registers on syscallsdzwdz
2021-07-23update the process' EIP/ESP when it syscallsdzwdz
2021-07-21syscall parameter & return value passingdzwdz
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-21barebones syscalldzwdz
2021-07-21fix sysenter()'s stack argumentdzwdz
It was taken from the wrong place - also I don't think that functions should change their EIP in the first place?
2021-07-20only enable paging when jumping into ring 0dzwdz
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-18move all kernel sources to src/kernel/dzwdz