VirtualBox

Ignore:
Timestamp:
Apr 5, 2017 7:06:04 PM (8 years ago)
Author:
vboxsync
Message:

IEM: More vstmxcsr tests.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-cmn-ExtCtxCopy.c

    r66226 r66450  
    3636BS3_CMN_DEF(PBS3EXTCTX, Bs3ExtCtxCopy,(PBS3EXTCTX pDst, PCBS3EXTCTX pSrc))
    3737{
    38     BS3_ASSERT(pDst->cb == pSrc->cb && pDst->enmMethod == pSrc->enmMethod && pDst->fXcr0 == pSrc->fXcr0);
     38    BS3_ASSERT(pDst->cb == pSrc->cb && pDst->enmMethod == pSrc->enmMethod && pDst->fXcr0Nominal == pSrc->fXcr0Nominal);
    3939    Bs3MemCpy(&pDst->Ctx, &pSrc->Ctx, pDst->cb - RT_OFFSETOF(BS3EXTCTX, Ctx));
     40    pDst->fXcr0Saved = pSrc->fXcr0Saved;
    4041    return pDst;
    4142}
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-cmn-ExtCtxInit.c

    r66226 r66450  
    5454        pExtCtx->enmMethod = BS3EXTCTXMETHOD_ANCIENT;
    5555    }
    56     pExtCtx->cb       = cbExtCtx;
    57     pExtCtx->u16Magic = BS3EXTCTX_MAGIC;
    58     pExtCtx->fXcr0    = fFlags;
     56    pExtCtx->cb             = cbExtCtx;
     57    pExtCtx->u16Magic       = BS3EXTCTX_MAGIC;
     58    pExtCtx->fXcr0Nominal   = fFlags;
     59    pExtCtx->fXcr0Saved     = fFlags;
    5960    return pExtCtx;
    6061}
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-cmn-ExtCtxRestore.asm

    r66214 r66450  
    3636        push    xBP
    3737        mov     xBP, xSP
    38         push    xAX
    39 BONLY32 push    xCX
     38        push    sAX
     39        push    sCX
     40        push    sDX
     41        push    xBX
    4042BONLY16 push    es
    41 BONLY16 push    bx
    4243
    4344%if ARCH_BITS == 16
     
    5657        jmp     .return
    5758
    58 .do_16_xsave:
    59         xrstor  [es:bx + BS3EXTCTX.Ctx]
     59.do_16_fxsave:
     60        fxrstor  [es:bx + BS3EXTCTX.Ctx]
    6061        jmp     .return
    6162
    62 .do_16_fxsave:
    63         fxrstor  [es:bx + BS3EXTCTX.Ctx]
     63.do_16_xsave:
     64        xor     ecx, ecx
     65        mov     eax, [es:bx + BS3EXTCTX.fXcr0Nominal]
     66        mov     edx, [es:bx + BS3EXTCTX.fXcr0Nominal + 4]
     67        xsetbv
     68
     69        xrstor  [es:bx + BS3EXTCTX.Ctx]
     70
     71        mov     eax, [es:bx + BS3EXTCTX.fXcr0Saved]
     72        mov     edx, [es:bx + BS3EXTCTX.fXcr0Saved + 4]
     73        xsetbv
    6474        ;jmp     .return
    6575
    6676%else
    67 BONLY32 mov     ecx, [xBP + xCB + cbCurRetAddr]
     77BONLY32 mov     ebx, [xBP + xCB + cbCurRetAddr]
     78BONLY64 mov     rbx, rcx
    6879
    69         mov     al, [xCX + BS3EXTCTX.enmMethod]
     80        mov     al, [xBX + BS3EXTCTX.enmMethod]
    7081        cmp     al, BS3EXTCTXMETHOD_XSAVE
    7182        je      .do_xsave
     
    7788
    7889.do_ancient:
    79         frstor  [xCX + BS3EXTCTX.Ctx]
     90        frstor  [xBX + BS3EXTCTX.Ctx]
     91        jmp     .return
     92
     93.do_fxsave:
     94BONLY32 fxrstor [xBX + BS3EXTCTX.Ctx]
     95BONLY64 fxrstor64 [xBX + BS3EXTCTX.Ctx]
    8096        jmp     .return
    8197
    8298.do_xsave:
    83 BONLY32 xrstor  [xCX + BS3EXTCTX.Ctx]
    84 BONLY64 xrstor64 [xCX + BS3EXTCTX.Ctx]
    85         jmp     .return
     99        xor     ecx, ecx
     100        mov     eax, [xBX + BS3EXTCTX.fXcr0Nominal]
     101        mov     edx, [xBX + BS3EXTCTX.fXcr0Nominal + 4]
     102        xsetbv
    86103
    87 .do_fxsave:
    88 BONLY32 fxrstor [xCX + BS3EXTCTX.Ctx]
    89 BONLY64 fxrstor64 [xCX + BS3EXTCTX.Ctx]
     104BONLY32 xrstor  [xBX + BS3EXTCTX.Ctx]
     105BONLY64 xrstor64 [xBX + BS3EXTCTX.Ctx]
     106
     107        mov     eax, [xBX + BS3EXTCTX.fXcr0Saved]
     108        mov     edx, [xBX + BS3EXTCTX.fXcr0Saved + 4]
     109        xsetbv
    90110        ;jmp     .return
    91111
     
    93113
    94114.return:
    95 BONLY16 pop     bx
    96115BONLY16 pop     es
    97 BONLY32 pop     xCX
    98         pop     xAX
     116        pop     xBX
     117        pop     sDX
     118        pop     sCX
     119        pop     sAX
    99120        mov     xSP, xBP
    100121        pop     xBP
     
    102123BS3_PROC_END_CMN   Bs3ExtCtxRestore
    103124
    104 
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-cmn-ExtCtxSave.asm

    r66214 r66450  
    3636        push    xBP
    3737        mov     xBP, xSP
    38         push    xAX
    39 BONLY32 push    xCX
     38        push    sAX
     39        push    sCX
     40        push    sDX
     41        push    xBX
    4042BONLY16 push    es
    41 BONLY16 push    bx
    4243
    4344%if ARCH_BITS == 16
     
    5657        jmp     .return
    5758
    58 .do_16_xsave:
    59         xsave   [es:bx + BS3EXTCTX.Ctx]
     59.do_16_fxsave:
     60        fxsave  [es:bx + BS3EXTCTX.Ctx]
    6061        jmp     .return
    6162
    62 .do_16_fxsave:
    63         fxsave  [es:bx + BS3EXTCTX.Ctx]
     63.do_16_xsave:
     64        xor     ecx, ecx
     65        xgetbv
     66        mov     [es:bx + BS3EXTCTX.fXcr0Saved], eax
     67        mov     [es:bx + BS3EXTCTX.fXcr0Saved + 4], edx
     68        mov     eax, [es:bx + BS3EXTCTX.fXcr0Nominal]
     69        mov     edx, [es:bx + BS3EXTCTX.fXcr0Nominal + 4]
     70        xsetbv
     71
     72        xsave   [es:bx + BS3EXTCTX.Ctx]
     73
     74        mov     eax, [es:bx + BS3EXTCTX.fXcr0Saved]
     75        mov     edx, [es:bx + BS3EXTCTX.fXcr0Saved + 4]
     76        xsetbv
    6477        ;jmp     .return
    6578
    6679%else
    67 BONLY32 mov     ecx, [xBP + xCB + cbCurRetAddr]
     80BONLY32 mov     ebx, [xBP + xCB + cbCurRetAddr]
     81BONLY64 mov     rbx, rcx
    6882
    69         mov     al, [xCX + BS3EXTCTX.enmMethod]
     83        mov     al, [xBX + BS3EXTCTX.enmMethod]
    7084        cmp     al, BS3EXTCTXMETHOD_XSAVE
    7185        je      .do_xsave
     
    7791
    7892.do_ancient:
    79         fnsave  [xCX + BS3EXTCTX.Ctx]
     93        fnsave  [xBX + BS3EXTCTX.Ctx]
     94        jmp     .return
     95
     96.do_fxsave:
     97BONLY32 fxsave  [xBX + BS3EXTCTX.Ctx]
     98BONLY64 fxsave64 [xBX + BS3EXTCTX.Ctx]
    8099        jmp     .return
    81100
    82101.do_xsave:
    83 BONLY32 xsave   [xCX + BS3EXTCTX.Ctx]
    84 BONLY64 xsave64 [xCX + BS3EXTCTX.Ctx]
    85         jmp     .return
     102        xor     ecx, ecx
     103        xgetbv
     104        mov     [xBX + BS3EXTCTX.fXcr0Saved], eax
     105        mov     [xBX + BS3EXTCTX.fXcr0Saved + 4], edx
     106        mov     eax, [xBX + BS3EXTCTX.fXcr0Nominal]
     107        mov     edx, [xBX + BS3EXTCTX.fXcr0Nominal + 4]
     108        xsetbv
    86109
    87 .do_fxsave:
    88 BONLY32 fxsave  [xCX + BS3EXTCTX.Ctx]
    89 BONLY64 fxsave64 [xCX + BS3EXTCTX.Ctx]
     110BONLY32 xsave   [xBX + BS3EXTCTX.Ctx]
     111BONLY64 xsave64 [xBX + BS3EXTCTX.Ctx]
     112
     113        mov     eax, [xBX + BS3EXTCTX.fXcr0Saved]
     114        mov     edx, [xBX + BS3EXTCTX.fXcr0Saved + 4]
     115        xsetbv
    90116        ;jmp     .return
    91117
     
    93119
    94120.return:
    95 BONLY16 pop     bx
    96121BONLY16 pop     es
    97 BONLY32 pop     xCX
    98         pop     xAX
     122        pop     xBX
     123        pop     sDX
     124        pop     sCX
     125        pop     sAX
    99126        mov     xSP, xBP
    100127        pop     xBP
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.h

    r66446 r66450  
    26862686    uint8_t             enmMethod;
    26872687    uint8_t             abPadding0[3];
    2688     /** XSAVE_C_XXX. */
    2689     uint64_t            fXcr0;
     2688    /** Nominal XSAVE_C_XXX. */
     2689    uint64_t            fXcr0Nominal;
     2690    /** The saved XCR0 mask (restored after xrstor).  */
     2691    uint64_t            fXcr0Saved;
    26902692
    26912693    /** Explicit alignment padding. */
    2692     uint8_t             abPadding[64 - 2 - 2 - 1 - 3 - 8];
     2694    uint8_t             abPadding[64 - 2 - 2 - 1 - 3 - 8 - 8];
    26932695
    26942696    /** The context, variable size (see above).
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.mac

    r66226 r66450  
    14221422;
    14231423struc BS3EXTCTX
    1424         .u16Magic   resw 1              ; uint16_t            u16Magic;
    1425         .cb         resw 1              ; uint16_t            cb;
    1426         .enmMethod  resb 1              ; uint8_t             enmMethod;
     1424        .u16Magic       resw 1          ; uint16_t            u16Magic;
     1425        .cb             resw 1          ; uint16_t            cb;
     1426        .enmMethod      resb 1          ; uint8_t             enmMethod;
    14271427        alignb           8
    1428         .fXcr0      resq 1
     1428        .fXcr0Nominal   resq 1          ; uint64_t            fXcr0Nominal;
     1429        .fXcr0Saved     resq 1          ; uint64_t            fXcr0Saved;
    14291430        alignb           64
    1430         .Ctx        resb 512
     1431        .Ctx            resb 512
    14311432endstruc
    14321433%define BS3EXTCTXMETHOD_ANCIENT     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