VirtualBox

Changeset 60184 in vbox for trunk


Ignore:
Timestamp:
Mar 24, 2016 5:31:54 PM (9 years ago)
Author:
vboxsync
Message:

bs3kit: updates.

Location:
trunk/src/VBox/ValidationKit/bootsectors
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-basic-2-template.c

    r60132 r60184  
    6969 */
    7070static void bs3CpuBasic2_TssGateEsp_AltStackOuterRing(PCBS3REGCTX pCtx, uint8_t bRing, uint8_t *pbAltStack, size_t cbAltStack,
    71                                                       bool f16BitStack, bool f16BitTss, const char *pszMode, unsigned uLine)
    72 {
     71                                                      bool f16BitStack, bool f16BitTss, bool f16BitHandler,
     72                                                      const char *pszMode, unsigned uLine)
     73{
     74    uint8_t const   cbIretFrame = f16BitHandler ? 5*2 : 5*4;
    7375    BS3REGCTX       Ctx2;
    7476    BS3TRAPFRAME    TrapCtx;
     
    9193    bs3CpuBasic2_CompareTrapCtx1(&TrapCtx, &Ctx2, 2 /*int 80h*/, 0x80 /*bXcpt*/, pszMode, uLine);
    9294    CHECK_MEMBER("bCpl", "%u", TrapCtx.Ctx.bCpl, bRing);
     95    CHECK_MEMBER("cbIretFrame", "%#x", TrapCtx.cbIretFrame, cbIretFrame);
    9396
    9497    if (pbAltStack)
    9598    {
    96         uint64_t uExpectedRsp = f16BitTss ? Bs3Tss16.sp0 : Bs3Tss32.esp0;
     99        uint64_t uExpectedRsp = (f16BitTss ? Bs3Tss16.sp0 : Bs3Tss32.esp0) - cbIretFrame;
    97100        if (f16BitStack)
    98101        {
     
    126129    unsigned        uLine;
    127130    const char     *pszMode = BS3_DATA_NM(TMPL_NM(g_szBs3ModeName));
    128 
    129     pbTmp = NULL; NOREF(pbTmp); uLine = 0; NOREF(uLine); NOREF(pszMode);
     131    bool const      f16BitSys = BS3_MODE_IS_16BIT_SYS(TMPL_MODE);
     132
     133    pbTmp = NULL; NOREF(pbTmp); uLine = 0; NOREF(uLine); NOREF(pszMode); NOREF(f16BitSys);
    130134
    131135    /* make sure they're allocated  */
     
    168172    bs3CpuBasic2_CompareTrapCtx1(&TrapCtx, &Ctx, 2 /*int 80h*/, 0x80 /*bXcpt*/, pszMode, __LINE__);
    169173
    170     bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 1, NULL, 0, BS3_MODE_IS_16BIT_SYS(TMPL_MODE),
    171                                               BS3_MODE_IS_16BIT_SYS(TMPL_MODE), pszMode, __LINE__);
    172     bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 2, NULL, 0, BS3_MODE_IS_16BIT_SYS(TMPL_MODE),
    173                                               BS3_MODE_IS_16BIT_SYS(TMPL_MODE), pszMode, __LINE__);
    174     bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 3, NULL, 0, BS3_MODE_IS_16BIT_SYS(TMPL_MODE),
    175                                               BS3_MODE_IS_16BIT_SYS(TMPL_MODE), pszMode, __LINE__);
     174    bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 1, NULL, 0, f16BitSys, f16BitSys, f16BitSys, pszMode, __LINE__);
     175    bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 2, NULL, 0, f16BitSys, f16BitSys, f16BitSys, pszMode, __LINE__);
     176    bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 3, NULL, 0, f16BitSys, f16BitSys, f16BitSys, pszMode, __LINE__);
    176177
    177178    /*
     
    202203
    203204            /* Different rings (load SS0:SP0 from TSS). */
    204             bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 1, pbAltStack, cbAltStack, BS3_MODE_IS_16BIT_SYS(TMPL_MODE),
    205                                                       BS3_MODE_IS_16BIT_SYS(TMPL_MODE), pszMode, __LINE__);
    206             bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 2, pbAltStack, cbAltStack, BS3_MODE_IS_16BIT_SYS(TMPL_MODE),
    207                                                       BS3_MODE_IS_16BIT_SYS(TMPL_MODE), pszMode, __LINE__);
    208             bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 3, pbAltStack, cbAltStack, BS3_MODE_IS_16BIT_SYS(TMPL_MODE),
    209                                                       BS3_MODE_IS_16BIT_SYS(TMPL_MODE), pszMode, __LINE__);
     205            bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 1, pbAltStack, cbAltStack,
     206                                                      f16BitSys, f16BitSys, f16BitSys, pszMode, __LINE__);
     207            bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 2, pbAltStack, cbAltStack,
     208                                                      f16BitSys, f16BitSys, f16BitSys, pszMode, __LINE__);
     209            bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 3, pbAltStack, cbAltStack,
     210                                                      f16BitSys, f16BitSys, f16BitSys, pszMode, __LINE__);
    210211
    211212            /* Different rings but switch the SS bitness in the TSS. */
    212 # if TMPL_BITS == 16
     213# if BS3_MODE_IS_16BIT_SYS(TMPL_MODE)
    213214            Bs3Tss16.ss0 = BS3_SEL_R0_SS32;
    214             bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 1, pbAltStack, cbAltStack, false, true, pszMode, __LINE__);
     215            bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 1, pbAltStack, cbAltStack,
     216                                                      false, f16BitSys, f16BitSys, pszMode, __LINE__);
    215217            Bs3Tss16.ss0 = BS3_SEL_R0_SS16;
    216218# else
    217219            Bs3Tss32.ss0 = BS3_SEL_R0_SS16;
    218             bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 1, pbAltStack, cbAltStack, true, false, pszMode, __LINE__);
     220            bs3CpuBasic2_TssGateEsp_AltStackOuterRing(&Ctx, 1, pbAltStack, cbAltStack,
     221                                                      true,  f16BitSys, f16BitSys, pszMode, __LINE__);
    219222            Bs3Tss32.ss0 = BS3_SEL_R0_SS32;
    220223# endif
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-c16-Trap16Generic.asm

    r60132 r60184  
    460460        ; Copy iret info.
    461461        ;
     462        lea     cx, [bp + 2]
     463        mov     [ss:bx + BS3TRAPFRAME.uHandlerRsp], cx
    462464        mov     cx, [bp + 2]
    463465        mov     [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.rip], cx
     
    483485        mov     cx, [bp + 8]
    484486        mov     [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.rsp], cx
    485         lea     ax, [bp + 12]
    486         mov     [ss:bx + BS3TRAPFRAME.uHandlerRsp], ax
     487        mov     byte [ss:bx + BS3TRAPFRAME.cbIretFrame], 5*2
    487488        test    dx, dx
    488489        jnz     .iret_frame_done
     
    494495        lea     cx, [bp + 8]
    495496        mov     [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.rsp], cx
    496         mov     [ss:bx + BS3TRAPFRAME.uHandlerRsp], cx
     497        mov     byte [ss:bx + BS3TRAPFRAME.cbIretFrame], 3*2
    497498        test    dx, dx
    498499        jnz     .iret_frame_done
     
    521522        mov     cx, [bp + 18]
    522523        mov     [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.gs], cx
    523         lea     ax, [bp + 20]
    524         mov     [ss:bx + BS3TRAPFRAME.uHandlerRsp], ax
     524        mov     byte [ss:bx + BS3TRAPFRAME.cbIretFrame], 9*2
    525525        jmp     .iret_frame_done
    526526
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-c32-Trap32Generic.asm

    r60132 r60184  
    127127        push    eax                     ; -08h
    128128        push    edi                     ; -0ch
    129         push    ss                      ; -10h
    130         push    ds                      ; -14h
     129        lea     eax, [esp + (4 + 1)*4]  ; 4 pushes above, 1 exception number push.
     130        push    eax                     ; -10h = handler ESP
     131        add     eax, 3*4                ; 3 dword iret frame
     132        push    eax                     ; -14h = caller ESP if same CPL
     133        push    ss                      ; -18h
     134        push    ds                      ; -1ch
    131135
    132136        ; Make sure we've got a flat DS (ASSUMES ring-0). It makes everything so much simpler.
     
    147151        jmp     .stack_flat
    148152.stack_thunk:
    149 hlt
    150153        mov     di, ss
    151154        and     edi, X86_SEL_MASK_OFF_RPL
     
    161164        mov     ss, di
    162165        mov     esp, eax
     166        sub     dword [ebp - 10h], (4+1)*4   ; Recalc handler ESP in case of wraparound.
     167        add     word [ebp - 10h],  (4+1)*4
     168        sub     dword [ebp - 10h], (4+1+3)*4 ; Recalc caller ESP in case of wraparound.
     169        add     word [ebp - 10h],  (4+1+3)*4
    163170.stack_flat:
    164171
     
    184191        mov     eax, [ebp - 0ch]
    185192        mov     [edi + BS3TRAPFRAME.Ctx + BS3REGCTX.rdi], eax
    186         mov     ax, [ebp - 10h]
     193        mov     eax, [ebp - 10h]
     194        mov     [edi + BS3TRAPFRAME.uHandlerRsp], eax
     195        mov     eax, [ebp - 14h]
     196        mov     [edi + BS3TRAPFRAME.Ctx + BS3REGCTX.rsp], eax
     197        mov     ax, [ebp - 18h]
    187198        mov     [edi + BS3TRAPFRAME.Ctx + BS3REGCTX.ss], ax
    188199        mov     [edi + BS3TRAPFRAME.uHandlerSs], ax
    189         mov     ax, [ebp - 14h]
     200        mov     ax, [ebp - 1ch]
    190201        mov     [edi + BS3TRAPFRAME.Ctx + BS3REGCTX.ds], ax
    191202
     
    206217        push    eax                     ; -08h
    207218        push    edi                     ; -0ch
    208         push    ss                      ; -10h
    209         push    ds                      ; -14h
     219        lea     eax, [esp + (4+1+1)*4]  ; 4 pushes above, 1 exception number push, 1 error code.
     220        push    eax                     ; -10h = handler ESP
     221        add     eax, 3*4                ; 3 dword iret frame
     222        push    eax                     ; -14h = caller ESP if same CPL
     223        push    ss                      ; -18h
     224        push    ds                      ; -1ch
    210225
    211226        ; Make sure we've got a flat DS (ASSUMES ring-0). It makes everything so much simpler.
     
    222237        test    eax, X86LAR_F_D
    223238        jz      .stack_thunk
    224         mov     ax, BS3_SEL_R0_SS16
     239        mov     ax, BS3_SEL_R0_SS32
    225240        mov     ss, ax
    226241        jmp     .stack_flat
     
    236251        movzx   edi, sp                 ; SS:SP -> flat ESP in EAX.
    237252        add     eax, edi
    238         mov     di, BS3_SEL_R0_SS16
     253        mov     di, BS3_SEL_R0_SS32
    239254        mov     ss, di
    240255        mov     esp, eax
     256        sub     dword [ebp - 10h], (4+1+1)*4   ; Recalc handler ESP in case of wraparound.
     257        add     word [ebp - 10h],  (4+1+1)*4
     258        sub     dword [ebp - 14h], (4+1+1+3)*4 ; Recalc caller ESP in case of wraparound.
     259        add     word [ebp - 14h],  (4+1+1+3)*4
    241260.stack_flat:
    242261
     
    265284        mov     eax, [ebp - 0ch]
    266285        mov     [edi + BS3TRAPFRAME.Ctx + BS3REGCTX.rdi], eax
    267         mov     ax, [ebp - 10h]
     286        mov     eax, [ebp - 10h]
     287        mov     [edi + BS3TRAPFRAME.uHandlerRsp], eax
     288        mov     eax, [ebp - 14h]
     289        mov     [edi + BS3TRAPFRAME.Ctx + BS3REGCTX.rsp], eax
     290        mov     ax, [ebp - 18h]
    268291        mov     [edi + BS3TRAPFRAME.Ctx + BS3REGCTX.ss], ax
    269292        mov     [edi + BS3TRAPFRAME.uHandlerSs], ax
    270         mov     ax, [ebp - 14h]
     293        mov     ax, [ebp - 1ch]
    271294        mov     [edi + BS3TRAPFRAME.Ctx + BS3REGCTX.ds], ax
    272295
     
    283306;                       - bXcpt
    284307;                       - uErrCd
    285 ;                       - fHandlerRFL
     308;                       - fHandlerRfl
     309;                       - uHandlerRsp
    286310;                       - uHandlerSs
    287 ;                       - Ctx.rax (except upper dword)
    288 ;                       - Ctx.rbp (except upper dword)
    289 ;                       - Ctx.rdi (except upper dword)
     311;                       - Ctx.rax
     312;                       - Ctx.rbp
     313;                       - Ctx.rdi
     314;                       - Ctx.rsp - assuming same CPL
    290315;                       - Ctx.ds
    291316;                       - Ctx.ss
     
    358383        mov     cx, [ebp + 20]
    359384        mov     [edi + BS3TRAPFRAME.Ctx + BS3REGCTX.ss], cx
    360         lea     eax, [ebp + 24]
    361         mov     [edi + BS3TRAPFRAME.uHandlerRsp], eax
    362         jmp     .iret_frame_done
    363 
    364 .iret_frame_same_cpl:
    365         lea     ecx, [ebp + 16]
    366         mov     [edi + BS3TRAPFRAME.Ctx + BS3REGCTX.rsp], ecx
    367         mov     [edi + BS3TRAPFRAME.uHandlerRsp], ecx
     385        mov     byte [edi + BS3TRAPFRAME.cbIretFrame], 5*4
    368386        jmp     .iret_frame_done
    369387
     
    383401        mov     cx, [ebp + 36]
    384402        mov     [edi + BS3TRAPFRAME.Ctx + BS3REGCTX.gs], cx
    385         lea     eax, [ebp + 40]
    386         mov     [edi + BS3TRAPFRAME.uHandlerRsp], eax
     403        mov     byte [edi + BS3TRAPFRAME.cbIretFrame], 9*4
    387404        jmp     .iret_frame_done
     405
     406.iret_frame_same_cpl:                   ; (caller already set SS:RSP and uHandlerRsp for same CPL iret frames)
     407        mov     byte [edi + BS3TRAPFRAME.cbIretFrame], 3*4
    388408
    389409.iret_frame_done:
     
    487507        mov     [edi + BS3TRAPFRAME.uHandlerCs], cs
    488508        mov     [edi + BS3TRAPFRAME.uHandlerSs], ss
    489         lea     ecx, [ebp + 12]
     509        lea     ecx, [ebp + 3*4]        ; two pushes, one error code.
    490510        mov     [edi + BS3TRAPFRAME.uHandlerRsp], ecx
    491511        mov     ecx, [ebp + 8]
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-mode-TestDoModes.c

    r60097 r60184  
    171171BS3_DECL(void) TMPL_NM(Bs3TestDoModes)(PCBS3TESTMODEENTRY paEntries, size_t cEntries)
    172172{
     173    bool const      fVerbose         = true;
    173174    bool const      fDoV86Modes      = true;
    174175    bool const      fDoWeirdV86Modes = true;
     
    194195        Bs3TestSub(paEntries[i].pszSubTest);
    195196
     197#define PRE_DO_CALL(a_szModeName) do { if (fVerbose) Bs3TestPrintf("...%s\n", a_szModeName); } while (0)
    196198#define CHECK_RESULT(a_szModeName) \
    197199            do { \
     
    207209        if (paEntries[i].pfnDoRM)
    208210        {
     211            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_rm));
    209212            bErrNo = TMPL_NM(Bs3TestCallDoerInRM)(CONV_TO_BS3TEXT16(paEntries[i].pfnDoRM));
    210213            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_rm));
     
    223226        if (paEntries[i].pfnDoPE16)
    224227        {
     228            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pe16));
    225229            bErrNo = TMPL_NM(Bs3TestCallDoerInPE16)(CONV_TO_BS3TEXT16(paEntries[i].pfnDoPE16));
    226230            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pe16));
     
    235239        if (paEntries[i].pfnDoPE16_32)
    236240        {
     241            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pe16_32));
    237242            bErrNo = TMPL_NM(Bs3TestCallDoerInPE16_32)(CONV_TO_FLAT(paEntries[i].pfnDoPE16_32));
    238243            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pe16_32));
     
    241246        if (paEntries[i].pfnDoPE16_V86 && fDoWeirdV86Modes)
    242247        {
     248            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pe16_v86));
    243249            bErrNo = TMPL_NM(Bs3TestCallDoerInPE16_V86)(CONV_TO_BS3TEXT16(paEntries[i].pfnDoPE16_V86));
    244250            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pe16_v86));
     
    247253        if (paEntries[i].pfnDoPE32)
    248254        {
     255            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pe32));
    249256            bErrNo = TMPL_NM(Bs3TestCallDoerInPE32)(CONV_TO_FLAT(paEntries[i].pfnDoPE32));
    250257            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pe32));
     
    253260        if (paEntries[i].pfnDoPE32_16)
    254261        {
     262            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pe32_16));
    255263            bErrNo = TMPL_NM(Bs3TestCallDoerInPE32_16)(CONV_TO_BS3TEXT16(paEntries[i].pfnDoPE32_16));
    256264            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pe32_16));
     
    259267        if (paEntries[i].pfnDoPEV86 && fDoV86Modes)
    260268        {
     269            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pev86));
    261270            bErrNo = TMPL_NM(Bs3TestCallDoerInPEV86)(CONV_TO_BS3TEXT16(paEntries[i].pfnDoPEV86));
    262271            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pev86));
     
    268277        if (paEntries[i].pfnDoPP16)
    269278        {
     279            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pp16));
    270280            bErrNo = TMPL_NM(Bs3TestCallDoerInPP16)(CONV_TO_BS3TEXT16(paEntries[i].pfnDoPP16));
    271281            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pp16));
     
    274284        if (paEntries[i].pfnDoPP16_32)
    275285        {
     286            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pp16_32));
    276287            bErrNo = TMPL_NM(Bs3TestCallDoerInPP16_32)(CONV_TO_FLAT(paEntries[i].pfnDoPP16_32));
    277288            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pp16_32));
     
    280291        if (paEntries[i].pfnDoPP16_V86 && fDoWeirdV86Modes)
    281292        {
     293            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pp16_v86));
    282294            bErrNo = TMPL_NM(Bs3TestCallDoerInPP16_V86)(CONV_TO_BS3TEXT16(paEntries[i].pfnDoPP16_V86));
    283295            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pp16_v86));
     
    286298        if (paEntries[i].pfnDoPP32)
    287299        {
     300            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pp32));
    288301            bErrNo = TMPL_NM(Bs3TestCallDoerInPP32)(CONV_TO_FLAT(paEntries[i].pfnDoPP32));
    289302            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pp32));
     
    292305        if (paEntries[i].pfnDoPP32_16)
    293306        {
     307            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pp32_16));
    294308            bErrNo = TMPL_NM(Bs3TestCallDoerInPP32_16)(CONV_TO_BS3TEXT16(paEntries[i].pfnDoPP32_16));
    295309            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pp32_16));
     
    298312        if (paEntries[i].pfnDoPPV86 && fDoV86Modes)
    299313        {
     314            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_ppv86));
    300315            bErrNo = TMPL_NM(Bs3TestCallDoerInPPV86)(CONV_TO_BS3TEXT16(paEntries[i].pfnDoPPV86));
    301316            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_ppv86));
     
    314329        if (paEntries[i].pfnDoPAE16)
    315330        {
     331            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pae16));
    316332            bErrNo = TMPL_NM(Bs3TestCallDoerInPAE16)(CONV_TO_BS3TEXT16(paEntries[i].pfnDoPAE16));
    317333            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pae16));
     
    320336        if (paEntries[i].pfnDoPAE16_32)
    321337        {
     338            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pae16_32));
    322339            bErrNo = TMPL_NM(Bs3TestCallDoerInPAE16_32)(CONV_TO_FLAT(paEntries[i].pfnDoPAE16_32));
    323340            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pae16_32));
     
    326343        if (paEntries[i].pfnDoPAE16_V86 && fDoWeirdV86Modes)
    327344        {
     345            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pae16_v86));
    328346            bErrNo = TMPL_NM(Bs3TestCallDoerInPAE16_V86)(CONV_TO_BS3TEXT16(paEntries[i].pfnDoPAE16_V86));
    329347            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pae16_v86));
     
    332350        if (paEntries[i].pfnDoPAE32)
    333351        {
     352            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pae32));
    334353            bErrNo = TMPL_NM(Bs3TestCallDoerInPAE32)(CONV_TO_FLAT(paEntries[i].pfnDoPAE32));
    335354            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pae32));
     
    338357        if (paEntries[i].pfnDoPAE32_16)
    339358        {
     359            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_pae32_16));
    340360            bErrNo = TMPL_NM(Bs3TestCallDoerInPAE32_16)(CONV_TO_BS3TEXT16(paEntries[i].pfnDoPAE32_16));
    341361            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_pae32_16));
     
    344364        if (paEntries[i].pfnDoPAEV86 && fDoV86Modes)
    345365        {
     366            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_paev86));
    346367            bErrNo = TMPL_NM(Bs3TestCallDoerInPAEV86)(CONV_TO_BS3TEXT16(paEntries[i].pfnDoPAEV86));
    347368            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_paev86));
     
    360381        if (paEntries[i].pfnDoLM16)
    361382        {
     383            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_lm16));
    362384            bErrNo = TMPL_NM(Bs3TestCallDoerInLM16)(CONV_TO_BS3TEXT16(paEntries[i].pfnDoLM16));
    363385            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_lm16));
     
    366388        if (paEntries[i].pfnDoLM32)
    367389        {
     390            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_lm32));
    368391            bErrNo = TMPL_NM(Bs3TestCallDoerInLM32)(CONV_TO_FLAT(paEntries[i].pfnDoLM32));
    369392            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_lm32));
     
    372395        if (paEntries[i].pfnDoLM64)
    373396        {
     397            PRE_DO_CALL(BS3_DATA_NM(g_szBs3ModeName_lm64));
    374398            bErrNo = TMPL_NM(Bs3TestCallDoerInLM64)(CONV_TO_FLAT(paEntries[i].pfnDoLM64));
    375399            CHECK_RESULT(BS3_DATA_NM(g_szBs3ModeName_lm64));
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.h

    r60119 r60184  
    18961896    /** 0x00: Exception/interrupt number. */
    18971897    uint8_t     bXcpt;
    1898     /** 0x01: Explicit alignment. */
    1899     uint8_t     bAlignment;
     1898    /** 0x01: The size of the IRET frame. */
     1899    uint8_t     cbIretFrame;
    19001900    /** 0x02: The handler CS. */
    19011901    uint16_t    uHandlerCc;
     
    19041904    /** 0x06: Explicit alignment. */
    19051905    uint16_t    usAlignment;
    1906     /** 0x08: The handler RSP (top of iret frame). */
     1906    /** 0x08: The handler RSP (pointer to the iret frame, skipping ErrCd). */
    19071907    uint64_t    uHandlerRsp;
    19081908    /** 0x10: The handler RFLAGS value. */
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.mac

    r60097 r60184  
    11691169struc BS3TRAPFRAME
    11701170        .bXcpt          resb 1
    1171         .bAlignment     resb 1
     1171        .cbIretFrame    resb 1
    11721172        .uHandlerCs     resw 1
    11731173        .uHandlerSs     resw 1
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette