X-Git-Url: http://git.joshuawise.com/netwatch.git/blobdiff_plain/1458b27545d4e447e751a3baa653bb9641027a24..83a025567a37236fd819b30d12e32828d8fd2dc4:/aseg/aseg.asm?ds=inline diff --git a/aseg/aseg.asm b/aseg/aseg.asm index c086b83..7380dc0 100644 --- a/aseg/aseg.asm +++ b/aseg/aseg.asm @@ -22,25 +22,15 @@ continue: mov gs, ax mov ss, ax mov esp, [dataptr] ; Load stack pointer. - - mov al, [needclear] ; Has the aseg been run before? - cmp al, 0 ; If so, - jz noclear ; don't clear BSS. - mov al, 0 ; Otherwise, clear BSS. - mov edi, [dataptr+4] - mov ecx, [dataptr+8] - rep stosb - mov [needclear], al -noclear: - mov eax, [dataptr+12] ; Load target jump address + mov eax, [dataptr+4] ; Load target jump address call eax ; then jump into C. rsm ; and leave SMM align 0x4 gdtr: - db 0x1F, 0x00 + db 0x17, 0x00 dd gdt align 0x4 gdt: @@ -48,12 +38,7 @@ gdt: db 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x93, 0xCF, 0x00 ; data segment db 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x9B, 0xCF, 0x00 ; code segment -needclear: - db 0x01 - 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