50 lines
597 B
ArmAsm

.intel_syntax noprefix
.extern int_handler
.global isr_common
.global isr_return
isr_common:
// Push all registers
push r15
push r14
push r13
push r12
push r11
push r10
push r9
push r8
push rbp
push rdi
push rsi
push rdx
push rcx
push rbx
push rax
mov rdi, rsp
call int_handler
mov rdi, rax
isr_return:
// Return and restore stack
mov rsp, rdi
pop rax
pop rbx
pop rcx
pop rdx
pop rsi
pop rdi
pop rbp
pop r8
pop r9
pop r10
pop r11
pop r12
pop r13
pop r14
pop r15
// Pop error code and fault number
add rsp, 16
iretq