\r
\r
\r
-MISMATCH: "EXTERNDEF C mCode16Size:DWORD"\r
-\r
-MISMATCH: "CONST SEGMENT FLAT "DATA" READONLY"\r
-\r
-MISMATCH: "mCode16Size DD _TEXT16SIZE"\r
-\r
-MISMATCH: "CONSTS"\r
-\r
-MISMATCH: "_DATA SEGMENT FLAT "DATA""\r
-\r
-MISMATCH: "NullSegSel DQ 0"\r
-MISMATCH: "_16BitCsSel LABEL QWORD"\r
- .word -1\r
- .word 0\r
- .byte 0\r
- .byte 0x9b\r
- .byte 0x8f # 16-bit segment\r
- .byte 0\r
-\r
-MISMATCH: "_16Gdtr LABEL FWORD"\r
-MISMATCH: " DW $ - offset NullSegSel - 1"\r
-MISMATCH: " DD offset NullSegSel"\r
-\r
-MISMATCH: "_DATAS"\r
-\r
-MISMATCH: "_TEXT SEGMENT FLAT "CODE" PARA"\r
-\r
-MISMATCH: "IA32_REGS STRUC 4t"\r
-MISMATCH: "_EDI DD ?"\r
-MISMATCH: "_ESI DD ?"\r
-MISMATCH: "_EBP DD ?"\r
-MISMATCH: "_ESP DD ?"\r
-MISMATCH: "_EBX DD ?"\r
-MISMATCH: "_EDX DD ?"\r
-MISMATCH: "_ECX DD ?"\r
-MISMATCH: "_EAX DD ?"\r
-MISMATCH: "_DS DW ?"\r
-MISMATCH: "_ES DW ?"\r
-MISMATCH: "_FS DW ?"\r
-MISMATCH: "_GS DW ?"\r
-MISMATCH: "_EFLAGS DD ?"\r
-MISMATCH: "_EIP DD ?"\r
-MISMATCH: "_CS DW ?"\r
-MISMATCH: "_SS DW ?"\r
-MISMATCH: "IA32_REGSS"\r
-\r
-MISMATCH: "_STK16 STRUC 1t"\r
-MISMATCH: "RetEip DD ?"\r
-MISMATCH: "RetCs DW ?"\r
-MISMATCH: "ThunkFlags DW ?"\r
-MISMATCH: "SavedEsp DD ?"\r
-MISMATCH: "SavedSs DW ?"\r
-MISMATCH: "SavedGdtr FWORD ?"\r
-MISMATCH: "SavedCr0 DD ?"\r
-MISMATCH: "SavedCr4 DD ?"\r
-MISMATCH: "_STK16S"\r
-\r
-.global _InternalAsmThunk16\r
-MISMATCH: "_InternalAsmThunk16: USES ebp ebx esi edi ds es fs gs"\r
-MISMATCH: " ASSUME esi:PTR IA32_REGS"\r
- movl 36(%esp),%esi\r
-MISMATCH: " movzx edx, [esi]._SS"\r
- movl $[esi]._ESP, %edi\r
-MISMATCH: " add edi, - sizeof (_STK16) - sizeof (IA32_REGS)"\r
- pushl %edi # save stack offset\r
- imull $16,%edx,%eax # eax <- edx*16\r
- addl %eax,%edi # edi <- linear address of 16-bit stack\r
-MISMATCH: " push sizeof (IA32_REGS) / 4"\r
- popl %ecx\r
- rep\r
- movsl # copy context to 16-bit stack\r
- popl %ebx # ebx <- 16-bit stack offset\r
-MISMATCH: " mov eax, offset @F "\r
- stosl\r
- movl %cs,%eax # return segment\r
- stosw\r
- movl 40(%esp),%eax # THUNK flags\r
- stosw\r
- movl %esp,%eax\r
- stosl # save esp\r
- movl %ss,%eax # save ss\r
- stosw\r
-MISMATCH: " sgdt fword ptr [edi] "\r
-MISMATCH: " sidt fword ptr [esp + 36] "\r
- movl %cr0, %esi\r
- movl %esi,6(%edi) # save CR0\r
-MISMATCH: " and esi, NOT 80000001h "\r
- movl %cr4, %eax\r
- movl %eax,10(%edi) # save CR4\r
-MISMATCH: " and al, NOT 30h "\r
- movl %edx,%edi # edi <- 16-bit stack segment\r
- movl 44(%esp),%edx\r
- shll $16,%edx\r
- pushl %edx\r
-MISMATCH: " lgdt _16Gdtr "\r
- .byte 0xea\r
-MISMATCH: " DD offset @16Bit"\r
- .word 8 # jmp far 8:@16Bit\r
-@16Bit: \r
- movl %esi, %cr0 # disable protected mode\r
- movl %eax, %cr4 # disable PAE & PSE\r
- lret\r
-@@: \r
- movl %ss,%eax\r
- shll $4,%eax\r
- addl %esp,%eax # eax <- address of 16-bit stack\r
-MISMATCH: " lss esp, fword ptr (_STK16 ptr [esp + sizeof (IA32_REGS)]).SavedEsp"\r
-MISMATCH: " lidt fword ptr [esp + 36] "\r
- ret\r
-\r
-\r
-MISMATCH: "_TEXTS"\r
-\r
-MISMATCH: "_TEXT16 SEGMENT USE16 "CODE" PARA"\r
-\r
-.global _Code16Addr\r
-MISMATCH: "_Code16Addr: C"\r
-\r
-\r
-.global RealMode\r
-RealMode: \r
-MISMATCH: " ASSUME bp:PTR _STK16"\r
- movw %di,%ss # set up stack\r
- movl %ebx,%esp\r
-MISMATCH: " lidt fword ptr cs:[_16Idtr - _Code16Addr]"\r
- popal\r
- popl %ds\r
- popl %es\r
- popl %fs\r
- popl %gs\r
- addw $4,%sp # skip EFlags\r
-MISMATCH: " test (_STK16 ptr [esp + 8]).ThunkFlags, 1"\r
- jz @F\r
- pushf\r
-@@: \r
- pushw %cs\r
-MISMATCH: " push @FarCallRet - _Code16Addr"\r
- jz @F\r
-MISMATCH: " jmp fword ptr [esp + 6]"\r
-@@: \r
-MISMATCH: " jmp fword ptr [esp + 4]"\r
-@FarCallRet: \r
- pushfl\r
- pushw %gs\r
- pushw %fs\r
- pushw %es\r
- pushw %ds\r
- pushal\r
- cli\r
-MISMATCH: " lea bp, [esp + sizeof (IA32_REGS)]"\r
- .byte 0x66\r
-MISMATCH: " lgdt [bp].SavedGdtr"\r
- movl $[bp].SavedCr4, %eax\r
- movl %eax, %cr4\r
- movl $[bp].SavedCr0, %eax\r
- movl %eax, %cr0 # restore CR0\r
-MISMATCH: " jmp fword ptr [bp].RetEip"\r
-\r
-\r
-MISMATCH: "_16Idtr FWORD (1 SHL 10) - 1"\r
-\r
-_TEXT16: \r
-\r
-MISMATCH: "_TEXT16SIZE = _TEXT16- _Code16Addr"\r
-\r
-MISMATCH: "_TEXT16S"\r
-\r
\r
+ ##########\r
+ # FIXME! #\r
+ ##########\r