summaryrefslogtreecommitdiff
path: root/asm
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-09-26 11:12:18 +0200
committerMiguel <m.i@gmx.at>2018-09-26 11:12:18 +0200
commit915791f6acedbb35db73216156c1baa790e384d9 (patch)
tree203c1308309fac2a336686ca48f7fbd05013bdb1 /asm
parentae33cc6557790a502a01b380b0926944ca2f3cfa (diff)
claning up interrupts
Diffstat (limited to 'asm')
-rw-r--r--asm/asm_int.h84
-rw-r--r--asm/asm_int.s172
2 files changed, 162 insertions, 94 deletions
diff --git a/asm/asm_int.h b/asm/asm_int.h
index d28a321..78326c8 100644
--- a/asm/asm_int.h
+++ b/asm/asm_int.h
@@ -2,38 +2,10 @@
* @file
*
* interrrupt handlers:
- * * excX() call handle_exception
- * * excX() call hadnle_interrupt
+ * * exc0() - exc31() call handle_exception()
+ * * int128() - int160() call hadnle_interrupt()
*/
-void int0();
-void int1();
-void int2();
-void int3();
-void int4();
-void int5();
-void int6();
-void int7();
-void int8();
-void int9();
-void int10();
-void int11();
-void int12();
-void int13();
-void int14();
-void int15();
-
-void int128(); // syscalls
-void int129(); // scheduler
-void int140(); // scheduler
-void int144(); // scheduler
-void int145(); // scheduler
-void int146(); // scheduler
-void int147(); // scheduler
-void int200(); // apic timer
-void int170(); // smp scheduler
-void int255(); // unhandled
-
void exc0();
void exc1();
void exc2();
@@ -53,3 +25,55 @@ void exc15();
void exc16();
void exc17();
void exc18();
+void exc19();
+void exc20();
+void exc21();
+void exc22();
+void exc23();
+void exc24();
+void exc25();
+void exc26();
+void exc27();
+void exc28();
+void exc29();
+void exc30();
+void exc31();
+
+//
+
+void int128();
+void int129();
+void int130();
+void int131();
+void int132();
+void int133();
+void int134();
+void int135();
+void int136();
+void int137();
+void int138();
+void int139();
+void int140();
+void int141();
+void int142();
+void int143();
+void int144();
+void int145();
+void int146();
+void int147();
+void int148();
+void int149();
+void int150();
+void int151();
+void int152();
+void int153();
+void int154();
+void int155();
+void int156();
+void int157();
+void int158();
+void int159();
+void int160();
+
+//
+void int255();
diff --git a/asm/asm_int.s b/asm/asm_int.s
index 9ea0d4b..8a95482 100644
--- a/asm/asm_int.s
+++ b/asm/asm_int.s
@@ -1,32 +1,4 @@
-.global int0
-.global int1
-.global int2
-.global int3
-.global int4
-.global int5
-.global int6
-.global int7
-
-.global int8
-.global int9
-.global int10
-.global int11
-.global int12
-.global int13
-.global int14
-.global int15
-
-.global int128
-.global int129
-.global int200
-.global int140
-.global int144
-.global int145
-.global int146
-.global int147
-.global int170
-.global int255
-
+//
.global exc0
.global exc1
.global exc2
@@ -46,12 +18,61 @@
.global exc16
.global exc17
.global exc18
+.global exc19
+.global exc20
+.global exc21
+.global exc22
+.global exc23
+.global exc24
+.global exc25
+.global exc26
+.global exc27
+.global exc28
+.global exc29
+.global exc30
+.global exc31
+
+.global int128
+.global int129
+.global int130
+.global int131
+.global int132
+.global int133
+.global int134
+.global int135
+.global int136
+.global int137
+.global int138
+.global int139
+.global int140
+.global int141
+.global int142
+.global int143
+.global int144
+.global int145
+.global int146
+.global int147
+.global int148
+.global int149
+.global int150
+.global int151
+.global int152
+.global int153
+.global int154
+.global int155
+.global int156
+.global int157
+.global int158
+.global int159
+.global int160
-// nothing to ack
+.global int255
+
+// nothing to ack / macro
.macro ack0
.endm
-// ack master
+// ack master pic / macro
.macro ack1
push %eax // persist
mov $0x20,%al
@@ -59,7 +80,7 @@
pop %eax // load original
.endm
-// ack master and servant
+// ack master and servant pic / macro
.macro ack2
push %eax // persist
mov $0x20,%al
@@ -68,13 +89,16 @@
pop %eax // load original
.endm
+// no error / macro
.macro err0
.endm
+// exception with error / macro
.macro err1
add $4,%esp
.endm
+// interrupt / macro
.macro intx ack num func
/*
@@ -139,8 +163,10 @@
.endm
+// cpu exception / macro
.macro excx num err func
- cli // exception does not prevent from rescheduling?
+
+ cli // exception does not prevent from rescheduling, it seems?
mov %esp,%eax // remember THIS stack position
and $-16,%esp // padding to align stack on 16byte boundary before CALL
sub $8,%esp // ...
@@ -172,16 +198,16 @@
.endm
-exc0: excx $0 err0 exception_handle
-exc1: excx $1 err0 exception_handle
-exc2: excx $2 err0 exception_handle
-exc3: excx $3 err0 exception_handle
-exc4: excx $4 err0 exception_handle
-exc5: excx $5 err0 exception_handle
-exc6: excx $6 err0 exception_handle
-exc7: excx $7 err0 exception_handle
-exc8: excx $8 err1 exception_handle
-exc9: excx $9 err0 exception_handle
+exc0: excx $0 err0 exception_handle
+exc1: excx $1 err0 exception_handle
+exc2: excx $2 err0 exception_handle
+exc3: excx $3 err0 exception_handle
+exc4: excx $4 err0 exception_handle
+exc5: excx $5 err0 exception_handle
+exc6: excx $6 err0 exception_handle
+exc7: excx $7 err0 exception_handle
+exc8: excx $8 err1 exception_handle
+exc9: excx $9 err0 exception_handle
exc10: excx $10 err1 exception_handle
exc11: excx $11 err1 exception_handle
exc12: excx $12 err1 exception_handle
@@ -191,34 +217,52 @@ exc15: excx $15 err0 exception_handle
exc16: excx $16 err0 exception_handle
exc17: excx $17 err1 exception_handle
exc18: excx $18 err0 exception_handle
-
-int0: intx ack0 $0 interrupt_handler
-int1: intx ack0 $1 interrupt_handler
-int2: intx ack0 $2 interrupt_handler
-int3: intx ack0 $3 interrupt_handler
-int4: intx ack0 $4 interrupt_handler
-int5: intx ack0 $5 interrupt_handler
-int6: intx ack0 $6 interrupt_handler
-int7: intx ack0 $7 interrupt_handler
-int8: intx ack0 $8 interrupt_handler
-int9: intx ack0 $9 interrupt_handler
-int10: intx ack0 $10 interrupt_handler
-int11: intx ack0 $11 interrupt_handler
-int12: intx ack0 $12 interrupt_handler
-int13: intx ack0 $13 interrupt_handler
-int14: intx ack0 $14 interrupt_handler
-int15: intx ack0 $15 interrupt_handler
+exc19: excx $19 err0 exception_handle
+exc20: excx $20 err0 exception_handle
+exc21: excx $21 err0 exception_handle
+exc22: excx $22 err0 exception_handle
+exc23: excx $23 err0 exception_handle
+exc24: excx $24 err0 exception_handle
+exc25: excx $25 err0 exception_handle
+exc26: excx $26 err0 exception_handle
+exc27: excx $27 err0 exception_handle
+exc28: excx $28 err0 exception_handle
+exc29: excx $29 err0 exception_handle
+exc30: excx $30 err1 exception_handle
+exc31: excx $31 err0 exception_handle
int128: intx ack0 $128 interrupt_handler
int129: intx ack0 $129 interrupt_handler
-
+int130: intx ack0 $130 interrupt_handler
+int131: intx ack0 $131 interrupt_handler
+int132: intx ack0 $132 interrupt_handler
+int133: intx ack0 $133 interrupt_handler
+int134: intx ack0 $134 interrupt_handler
+int135: intx ack0 $135 interrupt_handler
+int136: intx ack0 $136 interrupt_handler
+int137: intx ack0 $137 interrupt_handler
+int138: intx ack0 $138 interrupt_handler
+int139: intx ack0 $139 interrupt_handler
int140: intx ack0 $140 interrupt_handler
+int141: intx ack0 $141 interrupt_handler
+int142: intx ack0 $142 interrupt_handler
+int143: intx ack0 $143 interrupt_handler
int144: intx ack0 $144 interrupt_handler
int145: intx ack0 $145 interrupt_handler
int146: intx ack0 $146 interrupt_handler
int147: intx ack0 $147 interrupt_handler
+int148: intx ack0 $148 interrupt_handler
+int149: intx ack0 $149 interrupt_handler
+int150: intx ack0 $150 interrupt_handler
+int151: intx ack0 $151 interrupt_handler
+int152: intx ack0 $152 interrupt_handler
+int153: intx ack0 $153 interrupt_handler
+int154: intx ack0 $154 interrupt_handler
+int155: intx ack0 $155 interrupt_handler
+int156: intx ack0 $156 interrupt_handler
+int157: intx ack0 $157 interrupt_handler
+int158: intx ack0 $158 interrupt_handler
+int159: intx ack0 $159 interrupt_handler
+int160: intx ack0 $160 interrupt_handler
int255: intx ack0 $255 interrupt_handler
-int200: intx ack0 $200 interrupt_handler
-int170: intx ack0 $170 interrupt_handler
-