]> Joshua Wise's Git repositories - netwatch.git/blobdiff - aseg/aseg.asm
Allow NIC poll routine to do packet chain handling on our behalf.
[netwatch.git] / aseg / aseg.asm
index 93b61d75c0f0a8047ed8a1a2e999c84e5d7547ab..7380dc0bac64c0ab689481a4f01f31e7326641ca 100644 (file)
@@ -1,9 +1,9 @@
        org 0xA8000
 [bits 16]
 entry:
        org 0xA8000
 [bits 16]
 entry:
-       mov ax, 0xA800
-       mov ds, ax              ; Take us out of flat unreal mode, and
-       mov es, ax              ; put us in true real mode.
+       mov ax, 0xA800                  ; Take us out of flat unreal mode,
+       mov ds, ax                      ; and put us in true real mode.
+       mov es, ax
        mov fs, ax
        mov gs, ax
        mov ss, ax
        mov fs, ax
        mov gs, ax
        mov ss, ax
@@ -21,52 +21,24 @@ continue:
        mov fs, ax
        mov gs, ax
        mov ss, ax
        mov fs, ax
        mov gs, ax
        mov ss, ax
-       mov esp, [dataptr]
-
-       mov al, [needclear]
-       cmp al, 0
-       jz noclear
-       mov al, 0                       ; clear BSS
-       mov edi, [dataptr+4]
-       mov ecx, [dataptr+8]
-       rep stosb
-       mov [needclear], al
+       mov esp, [dataptr]              ; Load stack pointer.
        
        
-noclear:
-       mov eax, [dataptr+12]           ; jump into C
-       call eax
-
-       mov al, 0x40                    ; ack the periodic IRQ
-       mov dx, 0x834
-       out dx, al
-       
-       mov dx, 0x830                   ; now ack the SMI itself
-       in al, dx
-       or al, 0x02
-       and al, 0xBF
-       out dx, al
-       or al, 0x40
-       out dx, al
+       mov eax, [dataptr+4]            ; Load target jump address
+       call eax                        ; then jump into C.
 
        rsm                             ; and leave SMM
 
        align 0x4
 gdtr:
 
        rsm                             ; and leave SMM
 
        align 0x4
 gdtr:
-       db 0x27, 0x00
+       db 0x17, 0x00
        dd gdt
        align 0x4
 gdt:
        dd gdt
        align 0x4
 gdt:
-       db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+       db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00       ; initial null entry
        db 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x93, 0xCF, 0x00       ; data segment
        db 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x9B, 0xCF, 0x00       ; code segment
        db 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x93, 0xCF, 0x00       ; data segment
        db 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x9B, 0xCF, 0x00       ; code segment
-       db 0xFF, 0xFF, 0x00, 0x80, 0x0A, 0x9B, 0xCF, 0x00       ; code segment for trampoline
-
-needclear:
-       db 0x01
 
 dataptr:
        ; 4 bytes of stack top
 
 dataptr:
        ; 4 bytes of stack top
-       ; 4 bytes of BSS start
-       ; 4 bytes of BSS length
        ; 4 bytes of C entry point
        ; These show up 
        ; 4 bytes of C entry point
        ; These show up 
This page took 0.029076 seconds and 4 git commands to generate.