aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/interrupts
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/interrupts')
-rw-r--r--kernel/interrupts/common.s94
-rw-r--r--kernel/interrupts/generic.c95
-rw-r--r--kernel/interrupts/generic.h33
-rw-r--r--kernel/interrupts/vectors.s1543
4 files changed, 1765 insertions, 0 deletions
diff --git a/kernel/interrupts/common.s b/kernel/interrupts/common.s
new file mode 100644
index 0000000..a03fb1c
--- /dev/null
+++ b/kernel/interrupts/common.s
@@ -0,0 +1,94 @@
+extern generic_interrupt
+global asm_generic_interrupt
+global s_trap_start
+global s_trap_end
+
+section .text
+align 4
+
+s_trap_start:
+ push r15
+ push r14
+ push r13
+ push r12
+ push r11
+ push r10
+ push r9
+ push r8
+ push rdi
+ push rsi
+ push rbp
+ push rdx
+ push rcx
+ push rbx
+ push rax
+
+ mov rdi, rsp
+ call generic_interrupt
+
+s_trap_end:
+ pop rax
+ pop rbx
+ pop rcx
+ pop rdx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r8
+ pop r9
+ pop r10
+ pop r11
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+
+ add rsp, 16
+
+ iretq
+
+asm_generic_interrupt:
+ ;push 0x0 ;
+ ;push 0xE ; <- need to create the individual interrupts pushing the specific values to the stack (how to pop them?)
+ push r15
+ push r14
+ push r13
+ push r12
+ push r11
+ push r10
+ push r9
+ push r8
+ push rdi
+ push rsi
+ push rbp
+ push rdx
+ push rcx
+ push rbx
+ push rax
+
+ ; ??
+ ; cld
+ mov rdi, rsp
+ call generic_interrupt
+
+ pop rax
+ pop rbx
+ pop rcx
+ pop rdx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r8
+ pop r9
+ pop r10
+ pop r11
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ ;pop
+ ;pop
+
+ add rsp, 16
+
+ iretq
diff --git a/kernel/interrupts/generic.c b/kernel/interrupts/generic.c
new file mode 100644
index 0000000..900c7e3
--- /dev/null
+++ b/kernel/interrupts/generic.c
@@ -0,0 +1,95 @@
+#include "generic.h"
+#include "../kprintf.h"
+#include "../asm_inline.h"
+
+void generic_interrupt(trapframe* f)
+{
+
+ kprintf("!!!! INTERRUPT !!!!\n");
+ kprintf("ARG: %p\n", f);
+ switch(f->trapno)
+ {
+ case 0x0:
+ kprintf("NO: %s | ERR_ %lX\n", "Division Error", f->err);
+ break;
+ case 0x1:
+ kprintf("NO: %s | ERR_ %lX\n", "Debug", f->err);
+ break;
+ case 0x2:
+ kprintf("NO: %s | ERR_ %lX\n", "Non-Maskable", f->err);
+ break;
+ case 0x3:
+ kprintf("NO: %s | ERR_ %lX\n", "Breakpoint", f->err);
+ break;
+ case 0x4:
+ kprintf("NO: %s | ERR_ %lX\n", "Overflow", f->err);
+ break;
+ case 0x5:
+ kprintf("NO: %s | ERR_ %lX\n", "Bound Range Exceeded", f->err);
+ break;
+ case 0x6:
+ kprintf("NO: %s | ERR_ %lX\n", "Invalid Opcode", f->err);
+ break;
+ case 0x7:
+ kprintf("NO: %s | ERR_ %lX\n", "Device Not Available", f->err);
+ break;
+ case 0x8:
+ kprintf("NO: %s | ERR_ %lX\n", "Double Fault", f->err);
+ break;
+ case 0xA:
+ kprintf("NO: %s | ERR_ %lX\n", "Invalid TSS", f->err);
+ break;
+ case 0xB:
+ kprintf("NO: %s | ERR_ %lX\n", "Segment Not Present", f->err);
+ break;
+ case 0xC:
+ kprintf("NO: %s | ERR_ %lX\n", "Stack-Segment fault", f->err);
+ break;
+ case 0xD:
+ kprintf("NO: %s | ERR_ %lX\n", "General Protection Fault", f->err);
+ break;
+ case 0xE:
+ kprintf("NO: %s | ERR_ %lX\n", "Page Fault", f->err);
+ break;
+ case 0x10:
+ kprintf("NO: %s | ERR_ %lX\n", "x87 Floating Point Exception", f->err);
+ break;
+ case 0x11:
+ kprintf("NO: %s | ERR_ %lX\n", "Alignment Check", f->err);
+ break;
+ case 0x12:
+ kprintf("NO: %s | ERR_ %lX\n", "Machine Check", f->err);
+ break;
+ case 0x13:
+ kprintf("NO: %s | ERR_ %lX\n", "SIMD Floating Point Exception", f->err);
+ break;
+ case 0x14:
+ kprintf("NO: %s | ERR_ %lX\n", "Virtualization Exception", f->err);
+ break;
+ case 0x15:
+ kprintf("NO: %s | ERR_ %lX\n", "Control Protection Exception", f->err);
+ break;
+ case 0x1C:
+ kprintf("NO: %s | ERR_ %lX\n", "Hypervisor Injection Exception", f->err);
+ break;
+ case 0x1D:
+ kprintf("NO: %s | ERR_ %lX\n", "VMM Communication Exception", f->err);
+ break;
+ case 0x1E:
+ kprintf("NO: %s | ERR_ %lX\n", "Security Exception", f->err);
+ break;
+ default:
+ kprintf("NO: %lX | ERR: %lX\n", f->trapno, f->err);
+ }
+ kprintf("RAX: %lX | RBX: %lX | RCX: %lX | RDX: %lX\n", f->rax, f->rbx, f->rcx, f->rdx);
+ kprintf("RSI: %lX | RDI: %lX | RBP: %lX\n", f->rsi, f->rdi, f->rbp);
+ kprintf("R8: %lX | R9: %lX | R10: %lX | R11: %lX\n", f->r8, f->r9, f->r10, f->r11);
+ kprintf("R12: %lX | R13: %lX | R14: %lX | R15: %lX\n", f->r12, f->r13, f->r14, f->r15);
+ kprintf("===================\n");
+ hlt();
+
+ //if(f->err == 0xE)
+ //{
+ // hlt();
+ //}
+}
diff --git a/kernel/interrupts/generic.h b/kernel/interrupts/generic.h
new file mode 100644
index 0000000..aee4dde
--- /dev/null
+++ b/kernel/interrupts/generic.h
@@ -0,0 +1,33 @@
+#pragma once
+
+#include <stdint.h>
+
+typedef struct {
+ uint64_t rax; // rax
+ uint64_t rbx;
+ uint64_t rcx;
+ uint64_t rdx;
+ uint64_t rbp;
+ uint64_t rsi;
+ uint64_t rdi;
+ uint64_t r8;
+ uint64_t r9;
+ uint64_t r10;
+ uint64_t r11;
+ uint64_t r12;
+ uint64_t r13;
+ uint64_t r14;
+ uint64_t r15;
+
+ uint64_t trapno;
+ uint64_t err;
+
+ uint64_t rip; // rip
+ uint64_t cs;
+ uint64_t eflags; // rflags
+ uint64_t esp; // rsp
+ uint64_t ds; // ss
+} trapframe;
+
+void generic_interrupt(trapframe* frame);
+
diff --git a/kernel/interrupts/vectors.s b/kernel/interrupts/vectors.s
new file mode 100644
index 0000000..17f05d7
--- /dev/null
+++ b/kernel/interrupts/vectors.s
@@ -0,0 +1,1543 @@
+global vector0
+global vector1
+global vector2
+global vector3
+global vector4
+global vector5
+global vector6
+global vector7
+global vector8
+global vector9
+global vector10
+global vector11
+global vector12
+global vector13
+global vector14
+global vector15
+global vector16
+global vector17
+global vector18
+global vector19
+global vector20
+global vector21
+global vector22
+global vector23
+global vector24
+global vector25
+global vector26
+global vector27
+global vector28
+global vector29
+global vector30
+global vector31
+global vector32
+global vector33
+global vector34
+global vector35
+global vector36
+global vector37
+global vector38
+global vector39
+global vector40
+global vector41
+global vector42
+global vector43
+global vector44
+global vector45
+global vector46
+global vector47
+global vector48
+global vector49
+global vector50
+global vector51
+global vector52
+global vector53
+global vector54
+global vector55
+global vector56
+global vector57
+global vector58
+global vector59
+global vector60
+global vector61
+global vector62
+global vector63
+global vector64
+global vector65
+global vector66
+global vector67
+global vector68
+global vector69
+global vector70
+global vector71
+global vector72
+global vector73
+global vector74
+global vector75
+global vector76
+global vector77
+global vector78
+global vector79
+global vector80
+global vector81
+global vector82
+global vector83
+global vector84
+global vector85
+global vector86
+global vector87
+global vector88
+global vector89
+global vector90
+global vector91
+global vector92
+global vector93
+global vector94
+global vector95
+global vector96
+global vector97
+global vector98
+global vector99
+global vector100
+global vector101
+global vector102
+global vector103
+global vector104
+global vector105
+global vector106
+global vector107
+global vector108
+global vector109
+global vector110
+global vector111
+global vector112
+global vector113
+global vector114
+global vector115
+global vector116
+global vector117
+global vector118
+global vector119
+global vector120
+global vector121
+global vector122
+global vector123
+global vector124
+global vector125
+global vector126
+global vector127
+global vector128
+global vector129
+global vector130
+global vector131
+global vector132
+global vector133
+global vector134
+global vector135
+global vector136
+global vector137
+global vector138
+global vector139
+global vector140
+global vector141
+global vector142
+global vector143
+global vector144
+global vector145
+global vector146
+global vector147
+global vector148
+global vector149
+global vector150
+global vector151
+global vector152
+global vector153
+global vector154
+global vector155
+global vector156
+global vector157
+global vector158
+global vector159
+global vector160
+global vector161
+global vector162
+global vector163
+global vector164
+global vector165
+global vector166
+global vector167
+global vector168
+global vector169
+global vector170
+global vector171
+global vector172
+global vector173
+global vector174
+global vector175
+global vector176
+global vector177
+global vector178
+global vector179
+global vector180
+global vector181
+global vector182
+global vector183
+global vector184
+global vector185
+global vector186
+global vector187
+global vector188
+global vector189
+global vector190
+global vector191
+global vector192
+global vector193
+global vector194
+global vector195
+global vector196
+global vector197
+global vector198
+global vector199
+global vector200
+global vector201
+global vector202
+global vector203
+global vector204
+global vector205
+global vector206
+global vector207
+global vector208
+global vector209
+global vector210
+global vector211
+global vector212
+global vector213
+global vector214
+global vector215
+global vector216
+global vector217
+global vector218
+global vector219
+global vector220
+global vector221
+global vector222
+global vector223
+global vector224
+global vector225
+global vector226
+global vector227
+global vector228
+global vector229
+global vector230
+global vector231
+global vector232
+global vector233
+global vector234
+global vector235
+global vector236
+global vector237
+global vector238
+global vector239
+global vector240
+global vector241
+global vector242
+global vector243
+global vector244
+global vector245
+global vector246
+global vector247
+global vector248
+global vector249
+global vector250
+global vector251
+global vector252
+global vector253
+global vector254
+global vector255
+extern s_trap_start
+extern s_trap_end
+
+section .text
+align 4
+
+vector0:
+ push 0x00
+ push 0x00
+ jmp s_trap_start
+
+vector1:
+ push 0x00
+ push 0x01
+ jmp s_trap_start
+
+vector2:
+ push 0x00
+ push 0x02
+ jmp s_trap_start
+
+vector3:
+ push 0x00
+ push 0x03
+ jmp s_trap_start
+
+vector4:
+ push 0x00
+ push 0x04
+ jmp s_trap_start
+
+vector5:
+ push 0x00
+ push 0x05
+ jmp s_trap_start
+
+vector6:
+ push 0x00
+ push 0x06
+ jmp s_trap_start
+
+vector7:
+ push 0x00
+ push 0x07
+ jmp s_trap_start
+
+vector8:
+ push 0x00
+ push 0x08
+ jmp s_trap_start
+
+vector9:
+ push 0x00
+ push 0x09
+ jmp s_trap_start
+
+vector10:
+ push 0x00
+ push 0x0A
+ jmp s_trap_start
+
+vector11:
+ push 0x00
+ push 0x0B
+ jmp s_trap_start
+
+vector12:
+ push 0x00
+ push 0x0C
+ jmp s_trap_start
+
+vector13:
+ push 0x00
+ push 0x0D
+ jmp s_trap_start
+
+vector14:
+ push 0x00
+ push 0x0E
+ jmp s_trap_start
+
+vector15:
+ push 0x00
+ push 0x0F
+ jmp s_trap_start
+
+vector16:
+ push 0x00
+ push 0x10
+ jmp s_trap_start
+
+vector17:
+ push 0x00
+ push 0x11
+ jmp s_trap_start
+
+vector18:
+ push 0x00
+ push 0x12
+ jmp s_trap_start
+
+vector19:
+ push 0x00
+ push 0x13
+ jmp s_trap_start
+
+vector20:
+ push 0x00
+ push 0x14
+ jmp s_trap_start
+
+vector21:
+ push 0x00
+ push 0x15
+ jmp s_trap_start
+
+vector22:
+ push 0x00
+ push 0x16
+ jmp s_trap_start
+
+vector23:
+ push 0x00
+ push 0x17
+ jmp s_trap_start
+
+vector24:
+ push 0x00
+ push 0x18
+ jmp s_trap_start
+
+vector25:
+ push 0x00
+ push 0x19
+ jmp s_trap_start
+
+vector26:
+ push 0x00
+ push 0x1A
+ jmp s_trap_start
+
+vector27:
+ push 0x00
+ push 0x1B
+ jmp s_trap_start
+
+vector28:
+ push 0x00
+ push 0x1C
+ jmp s_trap_start
+
+vector29:
+ push 0x00
+ push 0x1D
+ jmp s_trap_start
+
+vector30:
+ push 0x00
+ push 0x1E
+ jmp s_trap_start
+
+vector31:
+ push 0x00
+ push 0x1F
+ jmp s_trap_start
+
+vector32:
+ push 0x00
+ push 0x20
+ jmp s_trap_start
+
+vector33:
+ push 0x00
+ push 0x21
+ jmp s_trap_start
+
+vector34:
+ push 0x00
+ push 0x22
+ jmp s_trap_start
+
+vector35:
+ push 0x00
+ push 0x23
+ jmp s_trap_start
+
+vector36:
+ push 0x00
+ push 0x24
+ jmp s_trap_start
+
+vector37:
+ push 0x00
+ push 0x25
+ jmp s_trap_start
+
+vector38:
+ push 0x00
+ push 0x26
+ jmp s_trap_start
+
+vector39:
+ push 0x00
+ push 0x27
+ jmp s_trap_start
+
+vector40:
+ push 0x00
+ push 0x28
+ jmp s_trap_start
+
+vector41:
+ push 0x00
+ push 0x29
+ jmp s_trap_start
+
+vector42:
+ push 0x00
+ push 0x2A
+ jmp s_trap_start
+
+vector43:
+ push 0x00
+ push 0x2B
+ jmp s_trap_start
+
+vector44:
+ push 0x00
+ push 0x2C
+ jmp s_trap_start
+
+vector45:
+ push 0x00
+ push 0x2D
+ jmp s_trap_start
+
+vector46:
+ push 0x00
+ push 0x2E
+ jmp s_trap_start
+
+vector47:
+ push 0x00
+ push 0x2F
+ jmp s_trap_start
+
+vector48:
+ push 0x00
+ push 0x30
+ jmp s_trap_start
+
+vector49:
+ push 0x00
+ push 0x31
+ jmp s_trap_start
+
+vector50:
+ push 0x00
+ push 0x32
+ jmp s_trap_start
+
+vector51:
+ push 0x00
+ push 0x33
+ jmp s_trap_start
+
+vector52:
+ push 0x00
+ push 0x34
+ jmp s_trap_start
+
+vector53:
+ push 0x00
+ push 0x35
+ jmp s_trap_start
+
+vector54:
+ push 0x00
+ push 0x36
+ jmp s_trap_start
+
+vector55:
+ push 0x00
+ push 0x37
+ jmp s_trap_start
+
+vector56:
+ push 0x00
+ push 0x38
+ jmp s_trap_start
+
+vector57:
+ push 0x00
+ push 0x39
+ jmp s_trap_start
+
+vector58:
+ push 0x00
+ push 0x3A
+ jmp s_trap_start
+
+vector59:
+ push 0x00
+ push 0x3B
+ jmp s_trap_start
+
+vector60:
+ push 0x00
+ push 0x3C
+ jmp s_trap_start
+
+vector61:
+ push 0x00
+ push 0x3D
+ jmp s_trap_start
+
+vector62:
+ push 0x00
+ push 0x3E
+ jmp s_trap_start
+
+vector63:
+ push 0x00
+ push 0x3F
+ jmp s_trap_start
+
+vector64:
+ push 0x00
+ push 0x40
+ jmp s_trap_start
+
+vector65:
+ push 0x00
+ push 0x41
+ jmp s_trap_start
+
+vector66:
+ push 0x00
+ push 0x42
+ jmp s_trap_start
+
+vector67:
+ push 0x00
+ push 0x43
+ jmp s_trap_start
+
+vector68:
+ push 0x00
+ push 0x44
+ jmp s_trap_start
+
+vector69:
+ push 0x00
+ push 0x45
+ jmp s_trap_start
+
+vector70:
+ push 0x00
+ push 0x46
+ jmp s_trap_start
+
+vector71:
+ push 0x00
+ push 0x47
+ jmp s_trap_start
+
+vector72:
+ push 0x00
+ push 0x48
+ jmp s_trap_start
+
+vector73:
+ push 0x00
+ push 0x49
+ jmp s_trap_start
+
+vector74:
+ push 0x00
+ push 0x4A
+ jmp s_trap_start
+
+vector75:
+ push 0x00
+ push 0x4B
+ jmp s_trap_start
+
+vector76:
+ push 0x00
+ push 0x4C
+ jmp s_trap_start
+
+vector77:
+ push 0x00
+ push 0x4D
+ jmp s_trap_start
+
+vector78:
+ push 0x00
+ push 0x4E
+ jmp s_trap_start
+
+vector79:
+ push 0x00
+ push 0x4F
+ jmp s_trap_start
+
+vector80:
+ push 0x00
+ push 0x50
+ jmp s_trap_start
+
+vector81:
+ push 0x00
+ push 0x51
+ jmp s_trap_start
+
+vector82:
+ push 0x00
+ push 0x52
+ jmp s_trap_start
+
+vector83:
+ push 0x00
+ push 0x53
+ jmp s_trap_start
+
+vector84:
+ push 0x00
+ push 0x54
+ jmp s_trap_start
+
+vector85:
+ push 0x00
+ push 0x55
+ jmp s_trap_start
+
+vector86:
+ push 0x00
+ push 0x56
+ jmp s_trap_start
+
+vector87:
+ push 0x00
+ push 0x57
+ jmp s_trap_start
+
+vector88:
+ push 0x00
+ push 0x58
+ jmp s_trap_start
+
+vector89:
+ push 0x00
+ push 0x59
+ jmp s_trap_start
+
+vector90:
+ push 0x00
+ push 0x5A
+ jmp s_trap_start
+
+vector91:
+ push 0x00
+ push 0x5B
+ jmp s_trap_start
+
+vector92:
+ push 0x00
+ push 0x5C
+ jmp s_trap_start
+
+vector93:
+ push 0x00
+ push 0x5D
+ jmp s_trap_start
+
+vector94:
+ push 0x00
+ push 0x5E
+ jmp s_trap_start
+
+vector95:
+ push 0x00
+ push 0x5F
+ jmp s_trap_start
+
+vector96:
+ push 0x00
+ push 0x60
+ jmp s_trap_start
+
+vector97:
+ push 0x00
+ push 0x61
+ jmp s_trap_start
+
+vector98:
+ push 0x00
+ push 0x62
+ jmp s_trap_start
+
+vector99:
+ push 0x00
+ push 0x63
+ jmp s_trap_start
+
+vector100:
+ push 0x00
+ push 0x64
+ jmp s_trap_start
+
+vector101:
+ push 0x00
+ push 0x65
+ jmp s_trap_start
+
+vector102:
+ push 0x00
+ push 0x66
+ jmp s_trap_start
+
+vector103:
+ push 0x00
+ push 0x67
+ jmp s_trap_start
+
+vector104:
+ push 0x00
+ push 0x68
+ jmp s_trap_start
+
+vector105:
+ push 0x00
+ push 0x69
+ jmp s_trap_start
+
+vector106:
+ push 0x00
+ push 0x6A
+ jmp s_trap_start
+
+vector107:
+ push 0x00
+ push 0x6B
+ jmp s_trap_start
+
+vector108:
+ push 0x00
+ push 0x6C
+ jmp s_trap_start
+
+vector109:
+ push 0x00
+ push 0x6D
+ jmp s_trap_start
+
+vector110:
+ push 0x00
+ push 0x6E
+ jmp s_trap_start
+
+vector111:
+ push 0x00
+ push 0x6F
+ jmp s_trap_start
+
+vector112:
+ push 0x00
+ push 0x70
+ jmp s_trap_start
+
+vector113:
+ push 0x00
+ push 0x71
+ jmp s_trap_start
+
+vector114:
+ push 0x00
+ push 0x72
+ jmp s_trap_start
+
+vector115:
+ push 0x00
+ push 0x73
+ jmp s_trap_start
+
+vector116:
+ push 0x00
+ push 0x74
+ jmp s_trap_start
+
+vector117:
+ push 0x00
+ push 0x75
+ jmp s_trap_start
+
+vector118:
+ push 0x00
+ push 0x76
+ jmp s_trap_start
+
+vector119:
+ push 0x00
+ push 0x77
+ jmp s_trap_start
+
+vector120:
+ push 0x00
+ push 0x78
+ jmp s_trap_start
+
+vector121:
+ push 0x00
+ push 0x79
+ jmp s_trap_start
+
+vector122:
+ push 0x00
+ push 0x7A
+ jmp s_trap_start
+
+vector123:
+ push 0x00
+ push 0x7B
+ jmp s_trap_start
+
+vector124:
+ push 0x00
+ push 0x7C
+ jmp s_trap_start
+
+vector125:
+ push 0x00
+ push 0x7D
+ jmp s_trap_start
+
+vector126:
+ push 0x00
+ push 0x7E
+ jmp s_trap_start
+
+vector127:
+ push 0x00
+ push 0x7F
+ jmp s_trap_start
+
+vector128:
+ push 0x00
+ push 0x80
+ jmp s_trap_start
+
+vector129:
+ push 0x00
+ push 0x81
+ jmp s_trap_start
+
+vector130:
+ push 0x00
+ push 0x82
+ jmp s_trap_start
+
+vector131:
+ push 0x00
+ push 0x83
+ jmp s_trap_start
+
+vector132:
+ push 0x00
+ push 0x84
+ jmp s_trap_start
+
+vector133:
+ push 0x00
+ push 0x85
+ jmp s_trap_start
+
+vector134:
+ push 0x00
+ push 0x86
+ jmp s_trap_start
+
+vector135:
+ push 0x00
+ push 0x87
+ jmp s_trap_start
+
+vector136:
+ push 0x00
+ push 0x88
+ jmp s_trap_start
+
+vector137:
+ push 0x00
+ push 0x89
+ jmp s_trap_start
+
+vector138:
+ push 0x00
+ push 0x8A
+ jmp s_trap_start
+
+vector139:
+ push 0x00
+ push 0x8B
+ jmp s_trap_start
+
+vector140:
+ push 0x00
+ push 0x8C
+ jmp s_trap_start
+
+vector141:
+ push 0x00
+ push 0x8D
+ jmp s_trap_start
+
+vector142:
+ push 0x00
+ push 0x8E
+ jmp s_trap_start
+
+vector143:
+ push 0x00
+ push 0x8F
+ jmp s_trap_start
+
+vector144:
+ push 0x00
+ push 0x90
+ jmp s_trap_start
+
+vector145:
+ push 0x00
+ push 0x91
+ jmp s_trap_start
+
+vector146:
+ push 0x00
+ push 0x92
+ jmp s_trap_start
+
+vector147:
+ push 0x00
+ push 0x93
+ jmp s_trap_start
+
+vector148:
+ push 0x00
+ push 0x94
+ jmp s_trap_start
+
+vector149:
+ push 0x00
+ push 0x95
+ jmp s_trap_start
+
+vector150:
+ push 0x00
+ push 0x96
+ jmp s_trap_start
+
+vector151:
+ push 0x00
+ push 0x97
+ jmp s_trap_start
+
+vector152:
+ push 0x00
+ push 0x98
+ jmp s_trap_start
+
+vector153:
+ push 0x00
+ push 0x99
+ jmp s_trap_start
+
+vector154:
+ push 0x00
+ push 0x9A
+ jmp s_trap_start
+
+vector155:
+ push 0x00
+ push 0x9B
+ jmp s_trap_start
+
+vector156:
+ push 0x00
+ push 0x9C
+ jmp s_trap_start
+
+vector157:
+ push 0x00
+ push 0x9D
+ jmp s_trap_start
+
+vector158:
+ push 0x00
+ push 0x9E
+ jmp s_trap_start
+
+vector159:
+ push 0x00
+ push 0x9F
+ jmp s_trap_start
+
+vector160:
+ push 0x00
+ push 0xA0
+ jmp s_trap_start
+
+vector161:
+ push 0x00
+ push 0xA1
+ jmp s_trap_start
+
+vector162:
+ push 0x00
+ push 0xA2
+ jmp s_trap_start
+
+vector163:
+ push 0x00
+ push 0xA3
+ jmp s_trap_start
+
+vector164:
+ push 0x00
+ push 0xA4
+ jmp s_trap_start
+
+vector165:
+ push 0x00
+ push 0xA5
+ jmp s_trap_start
+
+vector166:
+ push 0x00
+ push 0xA6
+ jmp s_trap_start
+
+vector167:
+ push 0x00
+ push 0xA7
+ jmp s_trap_start
+
+vector168:
+ push 0x00
+ push 0xA8
+ jmp s_trap_start
+
+vector169:
+ push 0x00
+ push 0xA9
+ jmp s_trap_start
+
+vector170:
+ push 0x00
+ push 0xAA
+ jmp s_trap_start
+
+vector171:
+ push 0x00
+ push 0xAB
+ jmp s_trap_start
+
+vector172:
+ push 0x00
+ push 0xAC
+ jmp s_trap_start
+
+vector173:
+ push 0x00
+ push 0xAD
+ jmp s_trap_start
+
+vector174:
+ push 0x00
+ push 0xAE
+ jmp s_trap_start
+
+vector175:
+ push 0x00
+ push 0xAF
+ jmp s_trap_start
+
+vector176:
+ push 0x00
+ push 0xB0
+ jmp s_trap_start
+
+vector177:
+ push 0x00
+ push 0xB1
+ jmp s_trap_start
+
+vector178:
+ push 0x00
+ push 0xB2
+ jmp s_trap_start
+
+vector179:
+ push 0x00
+ push 0xB3
+ jmp s_trap_start
+
+vector180:
+ push 0x00
+ push 0xB4
+ jmp s_trap_start
+
+vector181:
+ push 0x00
+ push 0xB5
+ jmp s_trap_start
+
+vector182:
+ push 0x00
+ push 0xB6
+ jmp s_trap_start
+
+vector183:
+ push 0x00
+ push 0xB7
+ jmp s_trap_start
+
+vector184:
+ push 0x00
+ push 0xB8
+ jmp s_trap_start
+
+vector185:
+ push 0x00
+ push 0xB9
+ jmp s_trap_start
+
+vector186:
+ push 0x00
+ push 0xBA
+ jmp s_trap_start
+
+vector187:
+ push 0x00
+ push 0xBB
+ jmp s_trap_start
+
+vector188:
+ push 0x00
+ push 0xBC
+ jmp s_trap_start
+
+vector189:
+ push 0x00
+ push 0xBD
+ jmp s_trap_start
+
+vector190:
+ push 0x00
+ push 0xBE
+ jmp s_trap_start
+
+vector191:
+ push 0x00
+ push 0xBF
+ jmp s_trap_start
+
+vector192:
+ push 0x00
+ push 0xC0
+ jmp s_trap_start
+
+vector193:
+ push 0x00
+ push 0xC1
+ jmp s_trap_start
+
+vector194:
+ push 0x00
+ push 0xC2
+ jmp s_trap_start
+
+vector195:
+ push 0x00
+ push 0xC3
+ jmp s_trap_start
+
+vector196:
+ push 0x00
+ push 0xC4
+ jmp s_trap_start
+
+vector197:
+ push 0x00
+ push 0xC5
+ jmp s_trap_start
+
+vector198:
+ push 0x00
+ push 0xC6
+ jmp s_trap_start
+
+vector199:
+ push 0x00
+ push 0xC7
+ jmp s_trap_start
+
+vector200:
+ push 0x00
+ push 0xC8
+ jmp s_trap_start
+
+vector201:
+ push 0x00
+ push 0xC9
+ jmp s_trap_start
+
+vector202:
+ push 0x00
+ push 0xCA
+ jmp s_trap_start
+
+vector203:
+ push 0x00
+ push 0xCB
+ jmp s_trap_start
+
+vector204:
+ push 0x00
+ push 0xCC
+ jmp s_trap_start
+
+vector205:
+ push 0x00
+ push 0xCD
+ jmp s_trap_start
+
+vector206:
+ push 0x00
+ push 0xCE
+ jmp s_trap_start
+
+vector207:
+ push 0x00
+ push 0xCF
+ jmp s_trap_start
+
+vector208:
+ push 0x00
+ push 0xD0
+ jmp s_trap_start
+
+vector209:
+ push 0x00
+ push 0xD1
+ jmp s_trap_start
+
+vector210:
+ push 0x00
+ push 0xD2
+ jmp s_trap_start
+
+vector211:
+ push 0x00
+ push 0xD3
+ jmp s_trap_start
+
+vector212:
+ push 0x00
+ push 0xD4
+ jmp s_trap_start
+
+vector213:
+ push 0x00
+ push 0xD5
+ jmp s_trap_start
+
+vector214:
+ push 0x00
+ push 0xD6
+ jmp s_trap_start
+
+vector215:
+ push 0x00
+ push 0xD7
+ jmp s_trap_start
+
+vector216:
+ push 0x00
+ push 0xD8
+ jmp s_trap_start
+
+vector217:
+ push 0x00
+ push 0xD9
+ jmp s_trap_start
+
+vector218:
+ push 0x00
+ push 0xDA
+ jmp s_trap_start
+
+vector219:
+ push 0x00
+ push 0xDB
+ jmp s_trap_start
+
+vector220:
+ push 0x00
+ push 0xDC
+ jmp s_trap_start
+
+vector221:
+ push 0x00
+ push 0xDD
+ jmp s_trap_start
+
+vector222:
+ push 0x00
+ push 0xDE
+ jmp s_trap_start
+
+vector223:
+ push 0x00
+ push 0xDF
+ jmp s_trap_start
+
+vector224:
+ push 0x00
+ push 0xE0
+ jmp s_trap_start
+
+vector225:
+ push 0x00
+ push 0xE1
+ jmp s_trap_start
+
+vector226:
+ push 0x00
+ push 0xE2
+ jmp s_trap_start
+
+vector227:
+ push 0x00
+ push 0xE3
+ jmp s_trap_start
+
+vector228:
+ push 0x00
+ push 0xE4
+ jmp s_trap_start
+
+vector229:
+ push 0x00
+ push 0xE5
+ jmp s_trap_start
+
+vector230:
+ push 0x00
+ push 0xE6
+ jmp s_trap_start
+
+vector231:
+ push 0x00
+ push 0xE7
+ jmp s_trap_start
+
+vector232:
+ push 0x00
+ push 0xE8
+ jmp s_trap_start
+
+vector233:
+ push 0x00
+ push 0xE9
+ jmp s_trap_start
+
+vector234:
+ push 0x00
+ push 0xEA
+ jmp s_trap_start
+
+vector235:
+ push 0x00
+ push 0xEB
+ jmp s_trap_start
+
+vector236:
+ push 0x00
+ push 0xEC
+ jmp s_trap_start
+
+vector237:
+ push 0x00
+ push 0xED
+ jmp s_trap_start
+
+vector238:
+ push 0x00
+ push 0xEE
+ jmp s_trap_start
+
+vector239:
+ push 0x00
+ push 0xEF
+ jmp s_trap_start
+
+vector240:
+ push 0x00
+ push 0xF0
+ jmp s_trap_start
+
+vector241:
+ push 0x00
+ push 0xF1
+ jmp s_trap_start
+
+vector242:
+ push 0x00
+ push 0xF2
+ jmp s_trap_start
+
+vector243:
+ push 0x00
+ push 0xF3
+ jmp s_trap_start
+
+vector244:
+ push 0x00
+ push 0xF4
+ jmp s_trap_start
+
+vector245:
+ push 0x00
+ push 0xF5
+ jmp s_trap_start
+
+vector246:
+ push 0x00
+ push 0xF6
+ jmp s_trap_start
+
+vector247:
+ push 0x00
+ push 0xF7
+ jmp s_trap_start
+
+vector248:
+ push 0x00
+ push 0xF8
+ jmp s_trap_start
+
+vector249:
+ push 0x00
+ push 0xF9
+ jmp s_trap_start
+
+vector250:
+ push 0x00
+ push 0xFA
+ jmp s_trap_start
+
+vector251:
+ push 0x00
+ push 0xFB
+ jmp s_trap_start
+
+vector252:
+ push 0x00
+ push 0xFC
+ jmp s_trap_start
+
+vector253:
+ push 0x00
+ push 0xFD
+ jmp s_trap_start
+
+vector254:
+ push 0x00
+ push 0xFE
+ jmp s_trap_start
+
+vector255:
+ push 0x00
+ push 0xFF
+ jmp s_trap_start
+
+