5 mov ds, ax ; Take us out of flat unreal mode, and
6 mov es, ax ; put us in true real mode.
10 jmp 0xA800:(entry2-0xA8000) ; Long jump to a correct cs.
12 lgdt [(gdtr-0xA8000)] ; Set up a new GDT.
14 mov cr0, eax ; ... and enter pmode!
15 jmp long 0x10:continue ; Now longjmp into the new code.
18 mov ax, 0x08 ; Set up segment selectors.
36 mov eax, [dataptr+12] ; jump into C
39 mov al, 0x40 ; ack the periodic IRQ
43 mov dx, 0x830 ; now ack the SMI itself
59 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
60 db 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x93, 0xCF, 0x00 ; data segment
61 db 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x9B, 0xCF, 0x00 ; code segment
62 db 0xFF, 0xFF, 0x00, 0x80, 0x0A, 0x9B, 0xCF, 0x00 ; code segment for trampoline
68 ; 4 bytes of stack top
69 ; 4 bytes of BSS start
70 ; 4 bytes of BSS length
71 ; 4 bytes of C entry point