feat(cpu): add per-vector interrupt stub assembly
This commit is contained in:
1 parent
e5c4139e49
commit
8c846c9ca5
1 file changed
+170
+170
@@ -0,0 +1,170 @@
|
|||||||
|
.section .text
|
||||||
|
.code64
|
||||||
|
.extern isrDispatch
|
||||||
|
|
||||||
|
.macro isrNoError num
|
||||||
|
.global isrStub\num
|
||||||
|
isrStub\num:
|
||||||
|
pushq $0
|
||||||
|
pushq $\num
|
||||||
|
jmp isrCommon
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro isrWithError num
|
||||||
|
.global isrStub\num
|
||||||
|
isrStub\num:
|
||||||
|
pushq $\num
|
||||||
|
jmp isrCommon
|
||||||
|
.endm
|
||||||
|
|
||||||
|
isrNoError 0
|
||||||
|
isrNoError 1
|
||||||
|
isrNoError 2
|
||||||
|
isrNoError 3
|
||||||
|
isrNoError 4
|
||||||
|
isrNoError 5
|
||||||
|
isrNoError 6
|
||||||
|
isrNoError 7
|
||||||
|
isrWithError 8
|
||||||
|
isrNoError 9
|
||||||
|
isrWithError 10
|
||||||
|
isrWithError 11
|
||||||
|
isrWithError 12
|
||||||
|
isrWithError 13
|
||||||
|
isrWithError 14
|
||||||
|
isrNoError 15
|
||||||
|
isrNoError 16
|
||||||
|
isrWithError 17
|
||||||
|
isrNoError 18
|
||||||
|
isrNoError 19
|
||||||
|
isrNoError 20
|
||||||
|
isrWithError 21
|
||||||
|
isrNoError 22
|
||||||
|
isrNoError 23
|
||||||
|
isrNoError 24
|
||||||
|
isrNoError 25
|
||||||
|
isrNoError 26
|
||||||
|
isrNoError 27
|
||||||
|
isrNoError 28
|
||||||
|
isrNoError 29
|
||||||
|
isrNoError 30
|
||||||
|
isrNoError 31
|
||||||
|
|
||||||
|
isrNoError 32
|
||||||
|
isrNoError 33
|
||||||
|
isrNoError 34
|
||||||
|
isrNoError 35
|
||||||
|
isrNoError 36
|
||||||
|
isrNoError 37
|
||||||
|
isrNoError 38
|
||||||
|
isrNoError 39
|
||||||
|
isrNoError 40
|
||||||
|
isrNoError 41
|
||||||
|
isrNoError 42
|
||||||
|
isrNoError 43
|
||||||
|
isrNoError 44
|
||||||
|
isrNoError 45
|
||||||
|
isrNoError 46
|
||||||
|
isrNoError 47
|
||||||
|
|
||||||
|
.global isrStub128
|
||||||
|
isrStub128:
|
||||||
|
pushq $0
|
||||||
|
pushq $128
|
||||||
|
jmp isrCommon
|
||||||
|
|
||||||
|
isrCommon:
|
||||||
|
pushq %rax
|
||||||
|
pushq %rbx
|
||||||
|
pushq %rcx
|
||||||
|
pushq %rdx
|
||||||
|
pushq %rsi
|
||||||
|
pushq %rdi
|
||||||
|
pushq %rbp
|
||||||
|
pushq %r8
|
||||||
|
pushq %r9
|
||||||
|
pushq %r10
|
||||||
|
pushq %r11
|
||||||
|
pushq %r12
|
||||||
|
pushq %r13
|
||||||
|
pushq %r14
|
||||||
|
pushq %r15
|
||||||
|
|
||||||
|
cld
|
||||||
|
movq %rsp, %rdi
|
||||||
|
call isrDispatch
|
||||||
|
movq %rax, %rsp
|
||||||
|
|
||||||
|
popq %r15
|
||||||
|
popq %r14
|
||||||
|
popq %r13
|
||||||
|
popq %r12
|
||||||
|
popq %r11
|
||||||
|
popq %r10
|
||||||
|
popq %r9
|
||||||
|
popq %r8
|
||||||
|
popq %rbp
|
||||||
|
popq %rdi
|
||||||
|
popq %rsi
|
||||||
|
popq %rdx
|
||||||
|
popq %rcx
|
||||||
|
popq %rbx
|
||||||
|
popq %rax
|
||||||
|
|
||||||
|
addq $16, %rsp
|
||||||
|
iretq
|
||||||
|
|
||||||
|
.section .rodata
|
||||||
|
.align 8
|
||||||
|
.global isrStubTable
|
||||||
|
isrStubTable:
|
||||||
|
.quad isrStub0
|
||||||
|
.quad isrStub1
|
||||||
|
.quad isrStub2
|
||||||
|
.quad isrStub3
|
||||||
|
.quad isrStub4
|
||||||
|
.quad isrStub5
|
||||||
|
.quad isrStub6
|
||||||
|
.quad isrStub7
|
||||||
|
.quad isrStub8
|
||||||
|
.quad isrStub9
|
||||||
|
.quad isrStub10
|
||||||
|
.quad isrStub11
|
||||||
|
.quad isrStub12
|
||||||
|
.quad isrStub13
|
||||||
|
.quad isrStub14
|
||||||
|
.quad isrStub15
|
||||||
|
.quad isrStub16
|
||||||
|
.quad isrStub17
|
||||||
|
.quad isrStub18
|
||||||
|
.quad isrStub19
|
||||||
|
.quad isrStub20
|
||||||
|
.quad isrStub21
|
||||||
|
.quad isrStub22
|
||||||
|
.quad isrStub23
|
||||||
|
.quad isrStub24
|
||||||
|
.quad isrStub25
|
||||||
|
.quad isrStub26
|
||||||
|
.quad isrStub27
|
||||||
|
.quad isrStub28
|
||||||
|
.quad isrStub29
|
||||||
|
.quad isrStub30
|
||||||
|
.quad isrStub31
|
||||||
|
.quad isrStub32
|
||||||
|
.quad isrStub33
|
||||||
|
.quad isrStub34
|
||||||
|
.quad isrStub35
|
||||||
|
.quad isrStub36
|
||||||
|
.quad isrStub37
|
||||||
|
.quad isrStub38
|
||||||
|
.quad isrStub39
|
||||||
|
.quad isrStub40
|
||||||
|
.quad isrStub41
|
||||||
|
.quad isrStub42
|
||||||
|
.quad isrStub43
|
||||||
|
.quad isrStub44
|
||||||
|
.quad isrStub45
|
||||||
|
.quad isrStub46
|
||||||
|
.quad isrStub47
|
||||||
|
|
||||||
|
.section .note.GNU-stack, "", @progbits
|
||||||
Reference in new issue
Block a user