blob: 33d87e11114bfbd57b764c425bdf1e36f9dc261c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
.extern panic_rsp
#include "x86_64_regs.S"
.macro isrstub
push_caller_saved
/* get error code from stack */
mov 0x50(%rsp), %rsi
mov %rsp, panic_rsp
cld
call isr_def_handler
pop_caller_saved
add $8, %rsp
iretq
.endm
.macro isr_no_error number
.global isr\number
isr\number:
push $0
mov $\number, %rdi
isrstub
.endm
.macro isr_error number
.global isr\number
isr\number:
mov $\number, %rdi
isrstub
.endm
.macro irq number
.global irq\number
irq\number:
push_caller_saved
mov $\number, %rdi
mov %rsp, panic_rsp
cld
call irq_def_handler
pop_caller_saved
iretq
.endm
isr_no_error 0
isr_no_error 1
isr_no_error 2
isr_no_error 3
isr_no_error 4
isr_no_error 5
isr_no_error 6
isr_no_error 7
isr_error 8
isr_no_error 9
isr_error 10
isr_error 11
isr_error 12
isr_error 13
isr_error 14
isr_no_error 15
isr_no_error 16
isr_error 17
isr_no_error 18
isr_no_error 19
isr_no_error 20
isr_no_error 21
isr_no_error 22
isr_no_error 23
isr_no_error 24
isr_no_error 25
isr_no_error 26
isr_no_error 27
isr_no_error 28
isr_error 29
isr_error 30
isr_no_error 31
irq 0
irq 1
irq 2
|