1 ; AcessOS Microkernel Version
11 GDT_SIZE equ (1+2*2+MAX_CPUS)*8 ; 4 Permission levels
19 dd 0x00000000, 0x00000000 ; 00 NULL Entry
20 dd 0x0000FFFF, 0x00CF9A00 ; 08 PL0 Code
21 dd 0x0000FFFF, 0x00CF9200 ; 10 PL0 Data
22 dd 0x0000FFFF, 0x00CFFA00 ; 18 PL3 Code
23 dd 0x0000FFFF, 0x00CFF200 ; 20 PL3 Data
24 times MAX_CPUS dd 0, 0
31 times 256 dd 0x00080000,0x00000F00
33 dw 256 * 16 - 1 ; Limit
37 [global _Desctab_Install]
41 mov ax, 0x10 ; PL0 Data
53 mov WORD [_gIDT + %1*8], ax
55 mov WORD [_gIDT + %1*8+6], ax
56 mov ax, WORD [_gIDT + %1*8 + 4]
58 mov WORD [_gIDT + %1*8 + 4], ax
61 mov ax, WORD [_gIDT + %1*8 + 4]
63 mov WORD [_gIDT + %1*8 + 4], ax
87 out dx, al ; Init Command
90 out dx, al ; Offset (Start of IDT Range)
92 out dx, al ; IRQ connected to Slave (00000100b) = IRQ2
100 out dx, al ; Init Command
103 out dx, al ; Offset (Start of IDT Range)
105 out dx, al ; IRQ Line connected to master
107 out dx, al ; Set Mode
109 out dx, al ; Set Mode
150 ISR_NOERR 0; 0: Divide By Zero Exception
151 ISR_NOERR 1; 1: Debug Exception
152 ISR_NOERR 2; 2: Non Maskable Interrupt Exception
153 ISR_NOERR 3; 3: Int 3 Exception
154 ISR_NOERR 4; 4: INTO Exception
155 ISR_NOERR 5; 5: Out of Bounds Exception
156 ISR_NOERR 6; 6: Invalid Opcode Exception
157 ISR_NOERR 7; 7: Coprocessor Not Available Exception
158 ISR_ERRNO 8; 8: Double Fault Exception (With Error Code!)
159 ISR_NOERR 9; 9: Coprocessor Segment Overrun Exception
160 ISR_ERRNO 10; 10: Bad TSS Exception (With Error Code!)
161 ISR_ERRNO 11; 11: Segment Not Present Exception (With Error Code!)
162 ISR_ERRNO 12; 12: Stack Fault Exception (With Error Code!)
163 ISR_ERRNO 13; 13: General Protection Fault Exception (With Error Code!)
164 ISR_ERRNO 14; 14: Page Fault Exception (With Error Code!)
165 ISR_NOERR 15; 15: Reserved Exception
166 ISR_NOERR 16; 16: Floating Point Exception
167 ISR_NOERR 17; 17: Alignment Check Exception
168 ISR_NOERR 18; 18: Machine Check Exception
169 ISR_NOERR 19; 19: Reserved
170 ISR_NOERR 20; 20: Reserved
171 ISR_NOERR 21; 21: Reserved
172 ISR_NOERR 22; 22: Reserved
173 ISR_NOERR 23; 23: Reserved
174 ISR_NOERR 24; 24: Reserved
175 ISR_NOERR 25; 25: Reserved
176 ISR_NOERR 26; 26: Reserved
177 ISR_NOERR 27; 27: Reserved
178 ISR_NOERR 28; 28: Reserved
179 ISR_NOERR 29; 29: Reserved
180 ISR_NOERR 30; 30: Reserved
181 ISR_NOERR 31; 31: Reserved
183 DEF_SYSCALL 0xAC ; Acess System Call
198 ; ---------------------
199 ; Common error handling
200 ; ---------------------
201 [extern _ErrorHandler]
218 add esp, 8 ; Error Code and ID
221 ; --------------------------
222 ; Common System Call Handler
223 ; --------------------------
224 [extern _SyscallHandler]
241 add esp, 8 ; Error Code and ID
247 [extern _IRQ_Handler]
264 add esp, 8 ; Error Code and ID
270 [extern _Proc_Scheduler]
278 mov eax, [esp+12*4] ; CPU Number
279 push eax ; Pus as argument
283 add esp, 4 ; Remove Argument
295 ; No Error code / int num