X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86%2Fdesctab.asm;h=969752c72c4573076b98f4676fc9f54f88bce515;hb=243bdab4e7acc8516d9b1c138f45dc1195f97767;hp=2d0a2329d0b0a1118fb222d42cc1fee2e730c4cc;hpb=b37a72724f8584364a3b0f3c57882e803155e499;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86/desctab.asm b/Kernel/arch/x86/desctab.asm index 2d0a2329..969752c7 100644 --- a/Kernel/arch/x86/desctab.asm +++ b/Kernel/arch/x86/desctab.asm @@ -8,12 +8,12 @@ MAX_CPUS equ 1 %else MAX_CPUS equ 8 %endif -GDT_SIZE equ (1+2*2+MAX_CPUS)*8 ; 4 Permission levels +GDT_SIZE equ (1+2*2+1+MAX_CPUS)*8 [section .data] ; GDT -[global _gGDT] -_gGDT: +[global gGDT] +gGDT: ; PL0 - Kernel ; PL3 - User dd 0x00000000, 0x00000000 ; 00 NULL Entry @@ -21,23 +21,24 @@ _gGDT: dd 0x0000FFFF, 0x00CF9200 ; 10 PL0 Data dd 0x0000FFFF, 0x00CFFA00 ; 18 PL3 Code dd 0x0000FFFF, 0x00CFF200 ; 20 PL3 Data + dd 0, 0 ; Double Fault TSS times MAX_CPUS dd 0, 0 -_gGDTptr: +gGDTptr: dw GDT_SIZE-1 - dd _gGDT + dd gGDT ; IDT ALIGN 8 -_gIDT: +gIDT: times 256 dd 0x00080000,0x00000F00 -_gIDTPtr: +gIDTPtr: dw 256 * 16 - 1 ; Limit - dd _gIDT ; Base + dd gIDT ; Base [section .text] -[global _Desctab_Install] -_Desctab_Install: +[global Desctab_Install] +Desctab_Install: ; Set GDT - lgdt [_gGDTptr] + lgdt [gGDTptr] mov ax, 0x10 ; PL0 Data mov ss, ax mov ds, ax @@ -49,18 +50,18 @@ _Desctab_Install: ; Set IDT %macro SETISR 1 - mov eax, _Isr%1 - mov WORD [_gIDT + %1*8], ax + mov eax, Isr%1 + mov WORD [gIDT + %1*8], ax shr eax, 16 - mov WORD [_gIDT + %1*8+6], ax - mov ax, WORD [_gIDT + %1*8 + 4] + mov WORD [gIDT + %1*8+6], ax + mov ax, WORD [gIDT + %1*8 + 4] or ax, 0x8000 - mov WORD [_gIDT + %1*8 + 4], ax + mov WORD [gIDT + %1*8 + 4], ax %endmacro %macro SETUSER 1 - mov ax, WORD [_gIDT + %1*8 + 4] + mov ax, WORD [gIDT + %1*8 + 4] or ax, 0x6000 - mov WORD [_gIDT + %1*8 + 4], ax + mov WORD [gIDT + %1*8 + 4], ax %endmacro %assign i 0 %rep 32 @@ -78,7 +79,7 @@ _Desctab_Install: %endrep ; Load IDT - lidt [_gIDTPtr] + lidt [gIDTPtr] ; Remap PIC push edx ; Save EDX @@ -116,15 +117,15 @@ _Desctab_Install: ; = Define ISRs = ; =============== %macro ISR_ERRNO 1 -[global _Isr%1] -_Isr%1: +[global Isr%1] +Isr%1: ;xchg bx, bx push %1 jmp ErrorCommon %endmacro %macro ISR_NOERR 1 -[global _Isr%1] -_Isr%1: +[global Isr%1] +Isr%1: xchg bx, bx push 0 push %1 @@ -132,16 +133,16 @@ _Isr%1: %endmacro %macro DEF_SYSCALL 1 -[global _Isr%1] -_Isr%1: +[global Isr%1] +Isr%1: push 0 push %1 jmp SyscallCommon %endmacro %macro DEF_IRQ 1 -[global _Isr%1] -_Isr%1: +[global Isr%1] +Isr%1: ;cli ; HACK! push 0 push %1 @@ -185,8 +186,8 @@ DEF_SYSCALL 0xAC ; Acess System Call ; IRQs ; - Timer -[global _Isr240] -_Isr240: +[global Isr240] +Isr240: push 0 jmp SchedulerBase ; - Assignable @@ -199,7 +200,7 @@ _Isr240: ; --------------------- ; Common error handling ; --------------------- -[extern _ErrorHandler] +[extern ErrorHandler] ErrorCommon: pusha push ds @@ -208,7 +209,7 @@ ErrorCommon: push gs push esp - call _ErrorHandler + call ErrorHandler add esp, 4 pop gs @@ -222,7 +223,7 @@ ErrorCommon: ; -------------------------- ; Common System Call Handler ; -------------------------- -[extern _SyscallHandler] +[extern SyscallHandler] SyscallCommon: pusha push ds @@ -231,7 +232,7 @@ SyscallCommon: push gs push esp - call _SyscallHandler + call SyscallHandler add esp, 4 pop gs @@ -245,7 +246,7 @@ SyscallCommon: ; ------------ ; IRQ Handling ; ------------ -[extern _IRQ_Handler] +[extern IRQ_Handler] IRQCommon: pusha push ds @@ -254,7 +255,7 @@ IRQCommon: push gs push esp - call _IRQ_Handler + call IRQ_Handler add esp, 4 pop gs @@ -268,7 +269,7 @@ IRQCommon: ; -------------- ; Task Scheduler ; -------------- -[extern _Proc_Scheduler] +[extern Proc_Scheduler] SchedulerBase: pusha push ds @@ -279,7 +280,7 @@ SchedulerBase: mov eax, [esp+12*4] ; CPU Number push eax ; Pus as argument - call _Proc_Scheduler + call Proc_Scheduler add esp, 4 ; Remove Argument