]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseLib/Ia32/Thunk16.s
Thunk16.s has not been ported to GCC. This will at least get past the assembler.
[mirror_edk2.git] / MdePkg / Library / BaseLib / Ia32 / Thunk16.s
index 423699622633d84ed3fba8ed6caf0f7a13cfe3fd..fa7be9192d7cd9206592f8c3ff36d03aa253899e 100644 (file)
 \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