All checks were successful
Build documentation / build-and-deploy (push) Successful in 43s
97 lines
1.9 KiB
ArmAsm
97 lines
1.9 KiB
ArmAsm
#include <amd64/intr_defs.h>
|
|
#include <amd64/regsasm.h>
|
|
|
|
.extern amd64_intr_handler
|
|
|
|
#define err(z) \
|
|
pushq $z;
|
|
|
|
#define no_err(z) \
|
|
pushq $0; \
|
|
pushq $z;
|
|
|
|
#define make_intr_stub(x, n) \
|
|
.global amd64_intr ## n; \
|
|
amd64_intr ## n:; \
|
|
x(n); \
|
|
cli; \
|
|
;\
|
|
push_regs; \
|
|
;\
|
|
cld; \
|
|
;\
|
|
movq %rsp, %rdi; \
|
|
;\
|
|
movq %cr3, %rax; \
|
|
pushq %rax; \
|
|
;\
|
|
movq %rsp, %rbp; \
|
|
;\
|
|
subq $8, %rsp; \
|
|
andq $~0xF, %rsp; \
|
|
;\
|
|
callq amd64_intr_handler; \
|
|
;\
|
|
movq %rbp, %rsp; \
|
|
;\
|
|
popq %rax; \
|
|
movq %rax, %cr3; \
|
|
;\
|
|
pop_regs; \
|
|
addq $16, %rsp; \
|
|
;\
|
|
iretq;
|
|
|
|
|
|
make_intr_stub(no_err, 0)
|
|
make_intr_stub(no_err, 1)
|
|
make_intr_stub(no_err, 2)
|
|
make_intr_stub(no_err, 3)
|
|
make_intr_stub(no_err, 4)
|
|
make_intr_stub(no_err, 5)
|
|
make_intr_stub(no_err, 6)
|
|
make_intr_stub(no_err, 7)
|
|
make_intr_stub(err, 8)
|
|
make_intr_stub(no_err, 9)
|
|
make_intr_stub(err, 10)
|
|
make_intr_stub(err, 11)
|
|
make_intr_stub(err, 12)
|
|
make_intr_stub(err, 13)
|
|
make_intr_stub(err, 14)
|
|
make_intr_stub(no_err, 15)
|
|
make_intr_stub(no_err, 16)
|
|
make_intr_stub(err, 17)
|
|
make_intr_stub(no_err, 18)
|
|
make_intr_stub(no_err, 19)
|
|
make_intr_stub(no_err, 20)
|
|
make_intr_stub(err, 21)
|
|
make_intr_stub(no_err, 22)
|
|
make_intr_stub(no_err, 23)
|
|
make_intr_stub(no_err, 24)
|
|
make_intr_stub(no_err, 25)
|
|
make_intr_stub(no_err, 26)
|
|
make_intr_stub(no_err, 27)
|
|
make_intr_stub(no_err, 28)
|
|
make_intr_stub(err, 29)
|
|
make_intr_stub(err, 30)
|
|
make_intr_stub(no_err, 31)
|
|
make_intr_stub(no_err, 32)
|
|
make_intr_stub(no_err, 33)
|
|
make_intr_stub(no_err, 34)
|
|
make_intr_stub(no_err, 35)
|
|
make_intr_stub(no_err, 36)
|
|
make_intr_stub(no_err, 37)
|
|
make_intr_stub(no_err, 38)
|
|
make_intr_stub(no_err, 39)
|
|
make_intr_stub(no_err, 40)
|
|
make_intr_stub(no_err, 41)
|
|
make_intr_stub(no_err, 42)
|
|
make_intr_stub(no_err, 43)
|
|
make_intr_stub(no_err, 44)
|
|
make_intr_stub(no_err, 45)
|
|
make_intr_stub(no_err, 46)
|
|
make_intr_stub(no_err, 47)
|
|
|
|
make_intr_stub(no_err, SCHED_PREEMPT_TIMER)
|
|
make_intr_stub(no_err, TLB_SHOOTDOWN)
|