Pause syscall and int 0xee interrupt syscalls
The syscall/sysret instructions don't swap stacks. This was bad but passable until syscalls caused the scheduler to run, and scheduling a task that paused due to interrupt. Adding a new (hopefully temporary) syscall interrupt `int 0xee` to allow me to test syscalls without stack issues before I tackle the syscall/sysret issue. Also implemented a basic `pause` syscall that causes the calling process to become unready. Because nothing can wake a process yet, it never returns.
This commit is contained in:
@@ -1,11 +1,22 @@
|
||||
global _start
|
||||
_start:
|
||||
xor rbp, rbp ; Sentinel rbp
|
||||
mov r11, 0 ; counter
|
||||
|
||||
.loop:
|
||||
;mov rax, 1 ; DEBUG syscall
|
||||
mov rax, 0 ; NOOP syscall
|
||||
syscall
|
||||
mov rax, 1 ; DEBUG syscall
|
||||
;mov rax, 0 ; NOOP syscall
|
||||
;syscall
|
||||
int 0xee
|
||||
|
||||
inc r11
|
||||
cmp r11, 5
|
||||
|
||||
jle .loop
|
||||
|
||||
mov rax, 3 ; PAUSE syscall
|
||||
; syscall
|
||||
int 0xee
|
||||
|
||||
mov r11, 0
|
||||
jmp .loop
|
||||
|
||||
|
||||
Reference in New Issue
Block a user