kvisc/ka/sys/intr/common.k

41 lines
732 B
Plaintext

; The OS/K Team licenses this file to you under the MIT license.
; See the LICENSE file in the project root for more information.
TrapHandlers.prolog:
mov q[rbp-8], r11
mov q[rbp-16], r12
mov q[rbp-24], r13
sub rsp, rbp, 24
xor rdx, rdx
; nx0 = caller's cr2
push cr2
mov ax0, r12
mov ax1, $cr2
iocall CPUDEV, RFS.LoadReg.slot
mov nx0, cr2
pop cr2
jmp rcx ; go back
TrapHandlers.epilog:
mov r13, q[rbp-24]
mov r12, q[rbp-16]
mov r11, q[rbp-8]
; TRAP return values: RAX-RDX
mov ax0, r12
mov ax1, $rax
mov ax2, rax
call RFS.StoreReg
mov ax1, $rdx
mov ax2, rdx
call RFS.StoreReg
mov ax0, r11
call IDT.DoneHandling
iret