Kernel/x86 - Indent fixes only
[tpg/acess2.git] / Kernel / arch / x86 / desctab.asm
index f6cc14e..fa7b84b 100644 (file)
@@ -108,27 +108,27 @@ Desctab_Install:
        mov dx, 0x20
        mov al, 0x11
        out dx, al      ;       Init Command
-    mov dx, 0x21
+       mov dx, 0x21
        mov al, 0xF0
        out dx, al      ;       Offset (Start of IDT Range)
-    mov al, 0x04
+       mov al, 0x04
        out dx, al      ;       IRQ connected to Slave (00000100b) = IRQ2
-    mov al, 0x01
+       mov al, 0x01
        out dx, al      ;       Set Mode
-    mov al, 0x00
+       mov al, 0x00
        out dx, al      ;       Set Mode
        
        mov dx, 0xA0
        mov al, 0x11
        out dx, al      ;       Init Command
-    mov dx, 0xA1
+       mov dx, 0xA1
        mov al, 0xF8
        out dx, al      ;       Offset (Start of IDT Range)
-    mov al, 0x02
+       mov al, 0x02
        out dx, al      ;       IRQ Line connected to master
-    mov al, 0x01
+       mov al, 0x01
        out dx, al      ;       Set Mode
-    mov dl, 0x00
+       mov dl, 0x00
        out dx, al      ;       Set Mode
        pop edx
        
@@ -210,7 +210,7 @@ DEF_SYSCALL 0xAC    ; Acess System Call
 [extern SchedulerBase]
 ; AP's Timer Interrupt
 Isr0xEE:
-       push 0
+       push 0  ; Line up with interrupt number
        xchg bx, bx     ; MAGIC BREAK
        jmp SchedulerBase
 ; Spurious Interrupt
@@ -227,7 +227,8 @@ Isr0xEF:
 [extern SchedulerBase]
 [extern SetAPICTimerCount]
 Isr240:
-       push 0
+       push 0  ; Line up with Argument in errors
+       push 0  ; CPU Number
        ;xchg bx, bx    ; MAGIC BREAK
 Isr240.jmp:
        %if USE_MP
@@ -248,12 +249,18 @@ Isr240.jmp:
 [extern ErrorHandler]
 ErrorCommon:
        ;xchg bx, bx    ; MAGIC BREAK
+       
        pusha
        push ds
        push es
        push fs
        push gs
-       
+
+       ; Clear TF      
+;      pushf
+;      and WORD [esp], 0xFEFF
+;      popf
+
        mov ax, 0x10
        mov ds, ax
        mov es, ax
@@ -287,6 +294,18 @@ SyscallCommon:
        call SyscallHandler
        add esp, 4
        
+       ; Pass changes to TF on to the user
+       ; EFLAGS is stored at ESP[4+8+2+2]
+       ; 4 Segment Registers
+       ; 8 GPRs
+       ; 2 Error Code / Interrupt ID
+       ; 2 CS/EIP
+       pushf
+       pop eax
+       and eax, 0x100  ; 0x100 = Trace Flag
+       and WORD [esp+(4+8+2+2)*4], ~0x100      ; Clear
+       or DWORD [esp+(4+8+2+2)*4], eax ; Set for user
+       
        pop gs
        pop fs
        pop es
@@ -300,6 +319,8 @@ SyscallCommon:
 ; ------------
 [extern IRQ_Handler]
 [global IRQCommon]
+[global IRQCommon_handled]
+IRQCommon_handled equ IRQCommon.handled
 IRQCommon:
        pusha
        push ds
@@ -315,6 +336,7 @@ IRQCommon:
        
        push esp
        call IRQ_Handler
+.handled:
        add esp, 4
        
        pop gs

UCC git Repository :: git.ucc.asn.au