Added interrupt and exception handling
This commit is contained in:
577
isr.S
Normal file
577
isr.S
Normal file
@@ -0,0 +1,577 @@
|
||||
.text
|
||||
|
||||
.global isr_handler
|
||||
.global isr_stub_table
|
||||
|
||||
.macro ISR_NOERR num
|
||||
.global isr\num
|
||||
isr\num:
|
||||
pushq $0
|
||||
pushq $\num
|
||||
jmp isr_common
|
||||
.endm
|
||||
|
||||
.macro ISR_ERR num
|
||||
.global isr\num
|
||||
isr\num:
|
||||
pushq $\num
|
||||
jmp isr_common
|
||||
.endm
|
||||
|
||||
isr_common:
|
||||
cld
|
||||
|
||||
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
|
||||
|
||||
movq %rsp, %rdi
|
||||
call isr_handler
|
||||
|
||||
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
|
||||
|
||||
ISR_NOERR 0
|
||||
ISR_NOERR 1
|
||||
ISR_NOERR 2
|
||||
ISR_NOERR 3
|
||||
ISR_NOERR 4
|
||||
ISR_NOERR 5
|
||||
ISR_NOERR 6
|
||||
ISR_NOERR 7
|
||||
ISR_ERR 8
|
||||
ISR_NOERR 9
|
||||
ISR_ERR 10
|
||||
ISR_ERR 11
|
||||
ISR_ERR 12
|
||||
ISR_ERR 13
|
||||
ISR_ERR 14
|
||||
ISR_NOERR 15
|
||||
ISR_NOERR 16
|
||||
ISR_ERR 17
|
||||
ISR_NOERR 18
|
||||
ISR_NOERR 19
|
||||
ISR_NOERR 20
|
||||
ISR_NOERR 21
|
||||
ISR_NOERR 22
|
||||
ISR_NOERR 23
|
||||
ISR_NOERR 24
|
||||
ISR_NOERR 25
|
||||
ISR_NOERR 26
|
||||
ISR_NOERR 27
|
||||
ISR_NOERR 28
|
||||
ISR_NOERR 29
|
||||
ISR_ERR 30
|
||||
ISR_NOERR 31
|
||||
ISR_NOERR 32
|
||||
ISR_NOERR 33
|
||||
ISR_NOERR 34
|
||||
ISR_NOERR 35
|
||||
ISR_NOERR 36
|
||||
ISR_NOERR 37
|
||||
ISR_NOERR 38
|
||||
ISR_NOERR 39
|
||||
ISR_NOERR 40
|
||||
ISR_NOERR 41
|
||||
ISR_NOERR 42
|
||||
ISR_NOERR 43
|
||||
ISR_NOERR 44
|
||||
ISR_NOERR 45
|
||||
ISR_NOERR 46
|
||||
ISR_NOERR 47
|
||||
ISR_NOERR 48
|
||||
ISR_NOERR 49
|
||||
ISR_NOERR 50
|
||||
ISR_NOERR 51
|
||||
ISR_NOERR 52
|
||||
ISR_NOERR 53
|
||||
ISR_NOERR 54
|
||||
ISR_NOERR 55
|
||||
ISR_NOERR 56
|
||||
ISR_NOERR 57
|
||||
ISR_NOERR 58
|
||||
ISR_NOERR 59
|
||||
ISR_NOERR 60
|
||||
ISR_NOERR 61
|
||||
ISR_NOERR 62
|
||||
ISR_NOERR 63
|
||||
ISR_NOERR 64
|
||||
ISR_NOERR 65
|
||||
ISR_NOERR 66
|
||||
ISR_NOERR 67
|
||||
ISR_NOERR 68
|
||||
ISR_NOERR 69
|
||||
ISR_NOERR 70
|
||||
ISR_NOERR 71
|
||||
ISR_NOERR 72
|
||||
ISR_NOERR 73
|
||||
ISR_NOERR 74
|
||||
ISR_NOERR 75
|
||||
ISR_NOERR 76
|
||||
ISR_NOERR 77
|
||||
ISR_NOERR 78
|
||||
ISR_NOERR 79
|
||||
ISR_NOERR 80
|
||||
ISR_NOERR 81
|
||||
ISR_NOERR 82
|
||||
ISR_NOERR 83
|
||||
ISR_NOERR 84
|
||||
ISR_NOERR 85
|
||||
ISR_NOERR 86
|
||||
ISR_NOERR 87
|
||||
ISR_NOERR 88
|
||||
ISR_NOERR 89
|
||||
ISR_NOERR 90
|
||||
ISR_NOERR 91
|
||||
ISR_NOERR 92
|
||||
ISR_NOERR 93
|
||||
ISR_NOERR 94
|
||||
ISR_NOERR 95
|
||||
ISR_NOERR 96
|
||||
ISR_NOERR 97
|
||||
ISR_NOERR 98
|
||||
ISR_NOERR 99
|
||||
ISR_NOERR 100
|
||||
ISR_NOERR 101
|
||||
ISR_NOERR 102
|
||||
ISR_NOERR 103
|
||||
ISR_NOERR 104
|
||||
ISR_NOERR 105
|
||||
ISR_NOERR 106
|
||||
ISR_NOERR 107
|
||||
ISR_NOERR 108
|
||||
ISR_NOERR 109
|
||||
ISR_NOERR 110
|
||||
ISR_NOERR 111
|
||||
ISR_NOERR 112
|
||||
ISR_NOERR 113
|
||||
ISR_NOERR 114
|
||||
ISR_NOERR 115
|
||||
ISR_NOERR 116
|
||||
ISR_NOERR 117
|
||||
ISR_NOERR 118
|
||||
ISR_NOERR 119
|
||||
ISR_NOERR 120
|
||||
ISR_NOERR 121
|
||||
ISR_NOERR 122
|
||||
ISR_NOERR 123
|
||||
ISR_NOERR 124
|
||||
ISR_NOERR 125
|
||||
ISR_NOERR 126
|
||||
ISR_NOERR 127
|
||||
ISR_NOERR 128
|
||||
ISR_NOERR 129
|
||||
ISR_NOERR 130
|
||||
ISR_NOERR 131
|
||||
ISR_NOERR 132
|
||||
ISR_NOERR 133
|
||||
ISR_NOERR 134
|
||||
ISR_NOERR 135
|
||||
ISR_NOERR 136
|
||||
ISR_NOERR 137
|
||||
ISR_NOERR 138
|
||||
ISR_NOERR 139
|
||||
ISR_NOERR 140
|
||||
ISR_NOERR 141
|
||||
ISR_NOERR 142
|
||||
ISR_NOERR 143
|
||||
ISR_NOERR 144
|
||||
ISR_NOERR 145
|
||||
ISR_NOERR 146
|
||||
ISR_NOERR 147
|
||||
ISR_NOERR 148
|
||||
ISR_NOERR 149
|
||||
ISR_NOERR 150
|
||||
ISR_NOERR 151
|
||||
ISR_NOERR 152
|
||||
ISR_NOERR 153
|
||||
ISR_NOERR 154
|
||||
ISR_NOERR 155
|
||||
ISR_NOERR 156
|
||||
ISR_NOERR 157
|
||||
ISR_NOERR 158
|
||||
ISR_NOERR 159
|
||||
ISR_NOERR 160
|
||||
ISR_NOERR 161
|
||||
ISR_NOERR 162
|
||||
ISR_NOERR 163
|
||||
ISR_NOERR 164
|
||||
ISR_NOERR 165
|
||||
ISR_NOERR 166
|
||||
ISR_NOERR 167
|
||||
ISR_NOERR 168
|
||||
ISR_NOERR 169
|
||||
ISR_NOERR 170
|
||||
ISR_NOERR 171
|
||||
ISR_NOERR 172
|
||||
ISR_NOERR 173
|
||||
ISR_NOERR 174
|
||||
ISR_NOERR 175
|
||||
ISR_NOERR 176
|
||||
ISR_NOERR 177
|
||||
ISR_NOERR 178
|
||||
ISR_NOERR 179
|
||||
ISR_NOERR 180
|
||||
ISR_NOERR 181
|
||||
ISR_NOERR 182
|
||||
ISR_NOERR 183
|
||||
ISR_NOERR 184
|
||||
ISR_NOERR 185
|
||||
ISR_NOERR 186
|
||||
ISR_NOERR 187
|
||||
ISR_NOERR 188
|
||||
ISR_NOERR 189
|
||||
ISR_NOERR 190
|
||||
ISR_NOERR 191
|
||||
ISR_NOERR 192
|
||||
ISR_NOERR 193
|
||||
ISR_NOERR 194
|
||||
ISR_NOERR 195
|
||||
ISR_NOERR 196
|
||||
ISR_NOERR 197
|
||||
ISR_NOERR 198
|
||||
ISR_NOERR 199
|
||||
ISR_NOERR 200
|
||||
ISR_NOERR 201
|
||||
ISR_NOERR 202
|
||||
ISR_NOERR 203
|
||||
ISR_NOERR 204
|
||||
ISR_NOERR 205
|
||||
ISR_NOERR 206
|
||||
ISR_NOERR 207
|
||||
ISR_NOERR 208
|
||||
ISR_NOERR 209
|
||||
ISR_NOERR 210
|
||||
ISR_NOERR 211
|
||||
ISR_NOERR 212
|
||||
ISR_NOERR 213
|
||||
ISR_NOERR 214
|
||||
ISR_NOERR 215
|
||||
ISR_NOERR 216
|
||||
ISR_NOERR 217
|
||||
ISR_NOERR 218
|
||||
ISR_NOERR 219
|
||||
ISR_NOERR 220
|
||||
ISR_NOERR 221
|
||||
ISR_NOERR 222
|
||||
ISR_NOERR 223
|
||||
ISR_NOERR 224
|
||||
ISR_NOERR 225
|
||||
ISR_NOERR 226
|
||||
ISR_NOERR 227
|
||||
ISR_NOERR 228
|
||||
ISR_NOERR 229
|
||||
ISR_NOERR 230
|
||||
ISR_NOERR 231
|
||||
ISR_NOERR 232
|
||||
ISR_NOERR 233
|
||||
ISR_NOERR 234
|
||||
ISR_NOERR 235
|
||||
ISR_NOERR 236
|
||||
ISR_NOERR 237
|
||||
ISR_NOERR 238
|
||||
ISR_NOERR 239
|
||||
ISR_NOERR 240
|
||||
ISR_NOERR 241
|
||||
ISR_NOERR 242
|
||||
ISR_NOERR 243
|
||||
ISR_NOERR 244
|
||||
ISR_NOERR 245
|
||||
ISR_NOERR 246
|
||||
ISR_NOERR 247
|
||||
ISR_NOERR 248
|
||||
ISR_NOERR 249
|
||||
ISR_NOERR 250
|
||||
ISR_NOERR 251
|
||||
ISR_NOERR 252
|
||||
ISR_NOERR 253
|
||||
ISR_NOERR 254
|
||||
ISR_NOERR 255
|
||||
|
||||
isr_stub_table:
|
||||
.quad isr0
|
||||
.quad isr1
|
||||
.quad isr2
|
||||
.quad isr3
|
||||
.quad isr4
|
||||
.quad isr5
|
||||
.quad isr6
|
||||
.quad isr7
|
||||
.quad isr8
|
||||
.quad isr9
|
||||
.quad isr10
|
||||
.quad isr11
|
||||
.quad isr12
|
||||
.quad isr13
|
||||
.quad isr14
|
||||
.quad isr15
|
||||
.quad isr16
|
||||
.quad isr17
|
||||
.quad isr18
|
||||
.quad isr19
|
||||
.quad isr20
|
||||
.quad isr21
|
||||
.quad isr22
|
||||
.quad isr23
|
||||
.quad isr24
|
||||
.quad isr25
|
||||
.quad isr26
|
||||
.quad isr27
|
||||
.quad isr28
|
||||
.quad isr29
|
||||
.quad isr30
|
||||
.quad isr31
|
||||
.quad isr32
|
||||
.quad isr33
|
||||
.quad isr34
|
||||
.quad isr35
|
||||
.quad isr36
|
||||
.quad isr37
|
||||
.quad isr38
|
||||
.quad isr39
|
||||
.quad isr40
|
||||
.quad isr41
|
||||
.quad isr42
|
||||
.quad isr43
|
||||
.quad isr44
|
||||
.quad isr45
|
||||
.quad isr46
|
||||
.quad isr47
|
||||
.quad isr48
|
||||
.quad isr49
|
||||
.quad isr50
|
||||
.quad isr51
|
||||
.quad isr52
|
||||
.quad isr53
|
||||
.quad isr54
|
||||
.quad isr55
|
||||
.quad isr56
|
||||
.quad isr57
|
||||
.quad isr58
|
||||
.quad isr59
|
||||
.quad isr60
|
||||
.quad isr61
|
||||
.quad isr62
|
||||
.quad isr63
|
||||
.quad isr64
|
||||
.quad isr65
|
||||
.quad isr66
|
||||
.quad isr67
|
||||
.quad isr68
|
||||
.quad isr69
|
||||
.quad isr70
|
||||
.quad isr71
|
||||
.quad isr72
|
||||
.quad isr73
|
||||
.quad isr74
|
||||
.quad isr75
|
||||
.quad isr76
|
||||
.quad isr77
|
||||
.quad isr78
|
||||
.quad isr79
|
||||
.quad isr80
|
||||
.quad isr81
|
||||
.quad isr82
|
||||
.quad isr83
|
||||
.quad isr84
|
||||
.quad isr85
|
||||
.quad isr86
|
||||
.quad isr87
|
||||
.quad isr88
|
||||
.quad isr89
|
||||
.quad isr90
|
||||
.quad isr91
|
||||
.quad isr92
|
||||
.quad isr93
|
||||
.quad isr94
|
||||
.quad isr95
|
||||
.quad isr96
|
||||
.quad isr97
|
||||
.quad isr98
|
||||
.quad isr99
|
||||
.quad isr100
|
||||
.quad isr101
|
||||
.quad isr102
|
||||
.quad isr103
|
||||
.quad isr104
|
||||
.quad isr105
|
||||
.quad isr106
|
||||
.quad isr107
|
||||
.quad isr108
|
||||
.quad isr109
|
||||
.quad isr110
|
||||
.quad isr111
|
||||
.quad isr112
|
||||
.quad isr113
|
||||
.quad isr114
|
||||
.quad isr115
|
||||
.quad isr116
|
||||
.quad isr117
|
||||
.quad isr118
|
||||
.quad isr119
|
||||
.quad isr120
|
||||
.quad isr121
|
||||
.quad isr122
|
||||
.quad isr123
|
||||
.quad isr124
|
||||
.quad isr125
|
||||
.quad isr126
|
||||
.quad isr127
|
||||
.quad isr128
|
||||
.quad isr129
|
||||
.quad isr130
|
||||
.quad isr131
|
||||
.quad isr132
|
||||
.quad isr133
|
||||
.quad isr134
|
||||
.quad isr135
|
||||
.quad isr136
|
||||
.quad isr137
|
||||
.quad isr138
|
||||
.quad isr139
|
||||
.quad isr140
|
||||
.quad isr141
|
||||
.quad isr142
|
||||
.quad isr143
|
||||
.quad isr144
|
||||
.quad isr145
|
||||
.quad isr146
|
||||
.quad isr147
|
||||
.quad isr148
|
||||
.quad isr149
|
||||
.quad isr150
|
||||
.quad isr151
|
||||
.quad isr152
|
||||
.quad isr153
|
||||
.quad isr154
|
||||
.quad isr155
|
||||
.quad isr156
|
||||
.quad isr157
|
||||
.quad isr158
|
||||
.quad isr159
|
||||
.quad isr160
|
||||
.quad isr161
|
||||
.quad isr162
|
||||
.quad isr163
|
||||
.quad isr164
|
||||
.quad isr165
|
||||
.quad isr166
|
||||
.quad isr167
|
||||
.quad isr168
|
||||
.quad isr169
|
||||
.quad isr170
|
||||
.quad isr171
|
||||
.quad isr172
|
||||
.quad isr173
|
||||
.quad isr174
|
||||
.quad isr175
|
||||
.quad isr176
|
||||
.quad isr177
|
||||
.quad isr178
|
||||
.quad isr179
|
||||
.quad isr180
|
||||
.quad isr181
|
||||
.quad isr182
|
||||
.quad isr183
|
||||
.quad isr184
|
||||
.quad isr185
|
||||
.quad isr186
|
||||
.quad isr187
|
||||
.quad isr188
|
||||
.quad isr189
|
||||
.quad isr190
|
||||
.quad isr191
|
||||
.quad isr192
|
||||
.quad isr193
|
||||
.quad isr194
|
||||
.quad isr195
|
||||
.quad isr196
|
||||
.quad isr197
|
||||
.quad isr198
|
||||
.quad isr199
|
||||
.quad isr200
|
||||
.quad isr201
|
||||
.quad isr202
|
||||
.quad isr203
|
||||
.quad isr204
|
||||
.quad isr205
|
||||
.quad isr206
|
||||
.quad isr207
|
||||
.quad isr208
|
||||
.quad isr209
|
||||
.quad isr210
|
||||
.quad isr211
|
||||
.quad isr212
|
||||
.quad isr213
|
||||
.quad isr214
|
||||
.quad isr215
|
||||
.quad isr216
|
||||
.quad isr217
|
||||
.quad isr218
|
||||
.quad isr219
|
||||
.quad isr220
|
||||
.quad isr221
|
||||
.quad isr222
|
||||
.quad isr223
|
||||
.quad isr224
|
||||
.quad isr225
|
||||
.quad isr226
|
||||
.quad isr227
|
||||
.quad isr228
|
||||
.quad isr229
|
||||
.quad isr230
|
||||
.quad isr231
|
||||
.quad isr232
|
||||
.quad isr233
|
||||
.quad isr234
|
||||
.quad isr235
|
||||
.quad isr236
|
||||
.quad isr237
|
||||
.quad isr238
|
||||
.quad isr239
|
||||
.quad isr240
|
||||
.quad isr241
|
||||
.quad isr242
|
||||
.quad isr243
|
||||
.quad isr244
|
||||
.quad isr245
|
||||
.quad isr246
|
||||
.quad isr247
|
||||
.quad isr248
|
||||
.quad isr249
|
||||
.quad isr250
|
||||
.quad isr251
|
||||
.quad isr252
|
||||
.quad isr253
|
||||
.quad isr254
|
||||
.quad isr255
|
||||
|
||||
.section .note.GNU-stack,"",@progbits
|
||||
Reference in New Issue
Block a user