VirtualBox

Ignore:
Timestamp:
Apr 20, 2016 5:21:19 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
106751
Message:

bs3kit: updates

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/Makefile.kmk

    r60578 r60609  
    232232bs3-cpu-basic-2_TEMPLATE = VBoxBS3KitImg
    233233bs3-cpu-basic-2_INCS  = .
    234 bs3-cpu-basic-2_DEFS  = BS3_CMN_INSTANTIATE_FILE1=bs3-cpu-basic-2-template.c
     234bs3-cpu-basic-2_DEFS  =  BS3_CMN_INSTANTIATE_FILE1=bs3-cpu-basic-2-template.c
    235235bs3-cpu-basic-2_DEFS += BS3_MODE_INSTANTIATE_FILE1=bs3-cpu-basic-2-template.c
    236236 ifeq ($(KBUILD_HOST),win)
     
    239239bs3-cpu-basic-2_SOURCES = \
    240240        bs3kit/bs3-first-rm.asm \
    241         bs3-cpu-basic-2-c.c \
    242         bs3-cpu-basic-2.asm \
     241        bs3-cpu-basic-2.c \
     242        bs3-cpu-basic-2-asm.asm \
    243243       bs3kit/bs3-cmn-instantiate-x0.c16 \
    244244       bs3kit/bs3-cmn-instantiate.c32 \
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-basic-2-asm.asm

    r60585 r60609  
    4040
    4141
     42
     43;
     44; CPU mode agnostic test code snippets.
     45;
    4246BS3_BEGIN_TEXT16
    43 BS3_PROC_BEGIN  bs3CpuBasic2_ud2
     47
     48BS3_PROC_BEGIN  bs3CpuBasic2_ud2, BS3_PB_WITH_US_ALIAS
    4449.again:
    4550        ud2
     
    4853
    4954
     55BS3_PROC_BEGIN bs3CpuBasic2_Int80, BS3_PB_WITH_US_ALIAS
     56        int     80h
     57.again: ud2
     58        jmp     .again
     59BS3_PROC_END   bs3CpuBasic2_Int80
    5060
    51 ;BS3_INSTANTIATE_COMMON_TEMPLATE "bs3-cpu-basic-2-template.mac"
     61
     62BS3_PROC_BEGIN bs3CpuBasic2_Int81, BS3_PB_WITH_US_ALIAS
     63        int     81h
     64.again: ud2
     65        jmp     .again
     66BS3_PROC_END   bs3CpuBasic2_Int81
     67
     68
     69BS3_PROC_BEGIN bs3CpuBasic2_Int82, BS3_PB_WITH_US_ALIAS
     70        int     82h
     71.again: ud2
     72        jmp     .again
     73BS3_PROC_END   bs3CpuBasic2_Int82
     74
     75
     76BS3_PROC_BEGIN bs3CpuBasic2_Int83, BS3_PB_WITH_US_ALIAS
     77        int     83h
     78.again: ud2
     79        jmp     .again
     80BS3_PROC_END   bs3CpuBasic2_Int83
     81
     82
     83;
     84; Instantiate code templates.
     85;
     86BS3_INSTANTIATE_COMMON_TEMPLATE          "bs3-cpu-basic-2-template.mac"
    5287BS3_INSTANTIATE_TEMPLATE_WITH_WEIRD_ONES "bs3-cpu-basic-2-template.mac"
    5388
    54 
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-basic-2-template.c

    r60585 r60609  
    2626
    2727
    28 #ifdef BS3_INSTANTIATING_MODE
    29 
    3028/*********************************************************************************************************************************
    3129*   Header Files                                                                                                                 *
     
    3836*   Defined Constants And Macros                                                                                                 *
    3937*********************************************************************************************************************************/
     38#undef  CHECK_MEMBER
     39#define CHECK_MEMBER(a_szName, a_szFmt, a_Actual, a_Expected) \
     40    do \
     41    { \
     42        if ((a_Actual) == (a_Expected)) { /* likely */ } \
     43        else bs3CpuBasic2_FailedF(a_szName "=" a_szFmt " expected " a_szFmt, (a_Actual), (a_Expected)); \
     44    } while (0)
     45
     46#ifdef BS3_INSTANTIATING_MODE
    4047# undef MyBs3Idt
    4148# undef MY_SYS_SEL_R0_CS
     
    6471#  error "TMPL_MODE"
    6572# endif
    66 #undef  CHECK_MEMBER
    67 #define CHECK_MEMBER(a_szName, a_szFmt, a_Actual, a_Expected) \
    68     do \
    69     { \
    70         if ((a_Actual) == (a_Expected)) { /* likely */ } \
    71         else bs3CpuBasic2_FailedF(a_szName "=" a_szFmt " expected " a_szFmt, (a_Actual), (a_Expected)); \
    72     } while (0)
    73 
     73#endif
    7474
    7575/*********************************************************************************************************************************
    7676*   Structures and Typedefs                                                                                                      *
    7777*********************************************************************************************************************************/
    78 #ifndef DONE_MODE_TYPES
    79 #define DONE_MODE_TYPES
     78#ifdef BS3_INSTANTIATING_CMN
    8079typedef struct BS3CB2INVLDESCTYPE
    8180{
     
    8988*   External Symbols                                                                                                             *
    9089*********************************************************************************************************************************/
    91 extern BS3_DECL(void) TMPL_NM(bs3CpuBasic2_Int80)(void);
    92 extern BS3_DECL(void) TMPL_NM(bs3CpuBasic2_Int81)(void);
    93 extern BS3_DECL(void) TMPL_NM(bs3CpuBasic2_Int82)(void);
    94 extern BS3_DECL(void) TMPL_NM(bs3CpuBasic2_Int83)(void);
    95 extern BS3_DECL(void) TMPL_NM(bs3CpuBasic2_ud2)(void);
    96 extern BS3_DECL(void) TMPL_NM(bs3CpuBasic2_sidt_bx_ud2)(void);
    97 extern BS3_DECL(void) TMPL_NM(bs3CpuBasic2_lidt_bx_ud2)(void);
    98 #ifndef DOXYGEN_RUNNING
    99 # define g_bs3CpuBasic2_ud2_FlatAddr BS3_DATA_NM(g_bs3CpuBasic2_ud2_FlatAddr)
     90#ifdef BS3_INSTANTIATING_CMN
     91extern BS3_DECL(void)   bs3CpuBasic2_Int80(void);
     92extern BS3_DECL(void)   bs3CpuBasic2_Int81(void);
     93extern BS3_DECL(void)   bs3CpuBasic2_Int82(void);
     94extern BS3_DECL(void)   bs3CpuBasic2_Int83(void);
     95extern BS3_DECL(void)   bs3CpuBasic2_ud2(void);
     96#define                 bs3CpuBasic2_sidt_bx_ud2 BS3_CMN_NM(bs3CpuBasic2_sidt_bx_ud2)
     97extern BS3_DECL(void)   bs3CpuBasic2_sidt_bx_ud2(void);
     98#define                 bs3CpuBasic2_lidt_bx_ud2 BS3_CMN_NM(bs3CpuBasic2_lidt_bx_ud2)
     99extern BS3_DECL(void)   bs3CpuBasic2_lidt_bx_ud2(void);
     100#define                 g_bs3CpuBasic2_ud2_FlatAddr BS3_DATA_NM(g_bs3CpuBasic2_ud2_FlatAddr)
     101extern uint32_t         g_bs3CpuBasic2_ud2_FlatAddr;
    100102#endif
    101 extern uint32_t g_bs3CpuBasic2_ud2_FlatAddr;
    102103
    103104
     
    105106*   Global Variables                                                                                                             *
    106107*********************************************************************************************************************************/
    107 #if TMPL_MODE == BS3_MODE_RM || TMPL_MODE == BS3_MODE_PE16_32 || TMPL_MODE == BS3_MODE_LM64
    108 #define g_pszTestMode   BS3_CMN_NM(g_pszTestMode)
     108#ifdef BS3_INSTANTIATING_CMN
     109# define                    g_pszTestMode   BS3_CMN_NM(g_pszTestMode)
    109110static const char BS3_FAR  *g_pszTestMode = (const char *)1;
    110 #define g_bTestMode     BS3_CMN_NM(g_bTestMode)
     111# define                    g_bTestMode     BS3_CMN_NM(g_bTestMode)
    111112static uint8_t              g_bTestMode = 1;
    112 #define g_f16BitSys     BS3_CMN_NM(g_f16BitSys)
     113# define                    g_f16BitSys     BS3_CMN_NM(g_f16BitSys)
    113114static bool                 g_f16BitSys = 1;
    114115
     
    171172};
    172173
    173 #endif
    174 
    175 #if TMPL_MODE == BS3_MODE_RM || TMPL_MODE == BS3_MODE_PE16_32 || TMPL_MODE == BS3_MODE_LM64
     174#endif /* BS3_INSTANTIATING_CMN - global */
     175
     176#ifdef BS3_INSTANTIATING_CMN
    176177
    177178/**
     
    179180 * and g_pszTestMode.
    180181 */
    181 #define bs3CpuBasic2_FailedF BS3_CMN_NM(bs3CpuBasic2_FailedF)
    182 void bs3CpuBasic2_FailedF(const char *pszFormat, ...)
     182# define bs3CpuBasic2_FailedF BS3_CMN_NM(bs3CpuBasic2_FailedF)
     183BS3_DECL_NEAR(void) bs3CpuBasic2_FailedF(const char *pszFormat, ...)
    183184{
    184185    va_list va;
     
    196197 * Compares trap stuff.
    197198 */
    198 #define bs3CpuBasic2_CompareIntCtx1 BS3_CMN_NM(bs3CpuBasic2_CompareIntCtx1)
    199 void bs3CpuBasic2_CompareIntCtx1(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint8_t bXcpt)
     199# define bs3CpuBasic2_CompareIntCtx1 BS3_CMN_NM(bs3CpuBasic2_CompareIntCtx1)
     200BS3_DECL_NEAR(void) bs3CpuBasic2_CompareIntCtx1(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint8_t bXcpt)
    200201{
    201202    uint16_t const cErrorsBefore = Bs3TestSubErrorCount();
     
    218219 * Compares trap stuff.
    219220 */
    220 #define bs3CpuBasic2_CompareTrapCtx2 BS3_CMN_NM(bs3CpuBasic2_CompareTrapCtx2)
    221 void bs3CpuBasic2_CompareTrapCtx2(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t cbIpAdjust, uint8_t bXcpt,
    222                                   uint16_t uHandlerCs)
     221# define bs3CpuBasic2_CompareTrapCtx2 BS3_CMN_NM(bs3CpuBasic2_CompareTrapCtx2)
     222BS3_DECL_NEAR(void) bs3CpuBasic2_CompareTrapCtx2(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t cbIpAdjust,
     223                                                 uint8_t bXcpt, uint16_t uHandlerCs)
    223224{
    224225    uint16_t const cErrorsBefore = Bs3TestSubErrorCount();
     
    241242 * Compares a CPU trap.
    242243 */
    243 #define bs3CpuBasic2_CompareCpuTrapCtx BS3_CMN_NM(bs3CpuBasic2_CompareCpuTrapCtx)
    244 void bs3CpuBasic2_CompareCpuTrapCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd, uint8_t bXcpt,
    245                                     bool f486ResumeFlagHint)
     244# define bs3CpuBasic2_CompareCpuTrapCtx BS3_CMN_NM(bs3CpuBasic2_CompareCpuTrapCtx)
     245BS3_DECL_NEAR(void) bs3CpuBasic2_CompareCpuTrapCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd,
     246                                                   uint8_t bXcpt, bool f486ResumeFlagHint)
    246247{
    247248    uint16_t const cErrorsBefore = Bs3TestSubErrorCount();
     
    277278 * Compares \#GP trap.
    278279 */
    279 #define bs3CpuBasic2_CompareGpCtx BS3_CMN_NM(bs3CpuBasic2_CompareGpCtx)
    280 void bs3CpuBasic2_CompareGpCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd)
     280# define bs3CpuBasic2_CompareGpCtx BS3_CMN_NM(bs3CpuBasic2_CompareGpCtx)
     281BS3_DECL_NEAR(void) bs3CpuBasic2_CompareGpCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd)
    281282{
    282283    bs3CpuBasic2_CompareCpuTrapCtx(pTrapCtx, pStartCtx, uErrCd, X86_XCPT_GP, true /*f486ResumeFlagHint*/);
     
    286287 * Compares \#NP trap.
    287288 */
    288 #define bs3CpuBasic2_CompareNpCtx BS3_CMN_NM(bs3CpuBasic2_CompareNpCtx)
    289 void bs3CpuBasic2_CompareNpCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd)
     289# define bs3CpuBasic2_CompareNpCtx BS3_CMN_NM(bs3CpuBasic2_CompareNpCtx)
     290BS3_DECL_NEAR(void) bs3CpuBasic2_CompareNpCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd)
    290291{
    291292    bs3CpuBasic2_CompareCpuTrapCtx(pTrapCtx, pStartCtx, uErrCd, X86_XCPT_NP, true /*f486ResumeFlagHint*/);
     
    295296 * Compares \#SS trap.
    296297 */
    297 #define bs3CpuBasic2_CompareSsCtx BS3_CMN_NM(bs3CpuBasic2_CompareSsCtx)
    298 void bs3CpuBasic2_CompareSsCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd, bool f486ResumeFlagHint)
     298# define bs3CpuBasic2_CompareSsCtx BS3_CMN_NM(bs3CpuBasic2_CompareSsCtx)
     299BS3_DECL_NEAR(void) bs3CpuBasic2_CompareSsCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd, bool f486ResumeFlagHint)
    299300{
    300301    bs3CpuBasic2_CompareCpuTrapCtx(pTrapCtx, pStartCtx, uErrCd, X86_XCPT_SS, f486ResumeFlagHint);
     
    304305 * Compares \#TS trap.
    305306 */
    306 #define bs3CpuBasic2_CompareTsCtx BS3_CMN_NM(bs3CpuBasic2_CompareTsCtx)
    307 void bs3CpuBasic2_CompareTsCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd)
     307# define bs3CpuBasic2_CompareTsCtx BS3_CMN_NM(bs3CpuBasic2_CompareTsCtx)
     308BS3_DECL_NEAR(void) bs3CpuBasic2_CompareTsCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd)
    308309{
    309310    bs3CpuBasic2_CompareCpuTrapCtx(pTrapCtx, pStartCtx, uErrCd, X86_XCPT_TS, false /*f486ResumeFlagHint*/);
     
    313314 * Compares \#PF trap.
    314315 */
    315 #define bs3CpuBasic2_ComparePfCtx BS3_CMN_NM(bs3CpuBasic2_ComparePfCtx)
    316 void bs3CpuBasic2_ComparePfCtx(PCBS3TRAPFRAME pTrapCtx, PBS3REGCTX pStartCtx, uint16_t uErrCd, uint64_t uCr2Expected)
     316# define bs3CpuBasic2_ComparePfCtx BS3_CMN_NM(bs3CpuBasic2_ComparePfCtx)
     317BS3_DECL_NEAR(void) bs3CpuBasic2_ComparePfCtx(PCBS3TRAPFRAME pTrapCtx, PBS3REGCTX pStartCtx, uint16_t uErrCd, uint64_t uCr2Expected)
    317318{
    318319    uint64_t const uCr2Saved     = pStartCtx->cr2.u;
     
    325326 * Compares \#UD trap.
    326327 */
    327 #define bs3CpuBasic2_CompareUdCtx BS3_CMN_NM(bs3CpuBasic2_CompareUdCtx)
    328 void bs3CpuBasic2_CompareUdCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx)
     328# define bs3CpuBasic2_CompareUdCtx BS3_CMN_NM(bs3CpuBasic2_CompareUdCtx)
     329BS3_DECL_NEAR(void) bs3CpuBasic2_CompareUdCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx)
    329330{
    330331    bs3CpuBasic2_CompareCpuTrapCtx(pTrapCtx, pStartCtx, 0 /*no error code*/, X86_XCPT_UD, true /*f486ResumeFlagHint*/);
     
    332333
    333334
    334 #define bs3CpuBasic2_RaiseXcpt1Common BS3_CMN_NM(bs3CpuBasic2_RaiseXcpt1Common)
    335 static void bs3CpuBasic2_RaiseXcpt1Common(bool const g_f16BitSys,
    336                                           uint16_t const uSysR0Cs, uint16_t const uSysR0CsConf, uint16_t const uSysR0Ss,
    337                                           PX86DESC const paIdt, unsigned const cIdteShift)
     335# define bs3CpuBasic2_RaiseXcpt1Common BS3_CMN_NM(bs3CpuBasic2_RaiseXcpt1Common)
     336BS3_DECL_NEAR(void) bs3CpuBasic2_RaiseXcpt1Common(uint16_t const uSysR0Cs, uint16_t const uSysR0CsConf, uint16_t const uSysR0Ss,
     337                                                  PX86DESC const paIdt, unsigned const cIdteShift)
    338338{
    339339    BS3TRAPFRAME    TrapCtx;
     
    406406    Bs3RegCtxSave(&Ctx80);
    407407    Ctx80.rsp.u -= 0x300;
    408     Ctx80.rip.u  = (uintptr_t)BS3_FP_OFF(&TMPL_NM(bs3CpuBasic2_Int80));
     408    Ctx80.rip.u  = (uintptr_t)BS3_FP_OFF(&bs3CpuBasic2_Int80);
    409409# if TMPL_BITS == 16
    410410    Ctx80.cs = BS3_MODE_IS_RM_OR_V86(g_bTestMode) ? BS3_SEL_TEXT16 : BS3_SEL_R0_CS16;
     
    413413# endif
    414414    Bs3MemCpy(&Ctx81, &Ctx80, sizeof(Ctx80));
    415     Ctx81.rip.u  = (uintptr_t)BS3_FP_OFF(&TMPL_NM(bs3CpuBasic2_Int81));
     415    Ctx81.rip.u  = (uintptr_t)BS3_FP_OFF(&bs3CpuBasic2_Int81);
    416416    Bs3MemCpy(&Ctx82, &Ctx80, sizeof(Ctx80));
    417     Ctx82.rip.u  = (uintptr_t)BS3_FP_OFF(&TMPL_NM(bs3CpuBasic2_Int82));
     417    Ctx82.rip.u  = (uintptr_t)BS3_FP_OFF(&bs3CpuBasic2_Int82);
    418418    Bs3MemCpy(&Ctx83, &Ctx80, sizeof(Ctx80));
    419     Ctx83.rip.u  = (uintptr_t)BS3_FP_OFF(&TMPL_NM(bs3CpuBasic2_Int83));
     419    Ctx83.rip.u  = (uintptr_t)BS3_FP_OFF(&bs3CpuBasic2_Int83);
    420420
    421421    /*
     
    12831283                }
    12841284
    1285                 paIdt[(0x80 + iCtx) << cIdteShift].Gate.u16Sel     = MY_SYS_SEL_R0_CS;
     1285                paIdt[(0x80 + iCtx) << cIdteShift].Gate.u16Sel     = uSysR0Cs;
    12861286                paIdt[(0x80 + iCtx) << cIdteShift].Gate.u4Type     = bSavedType;
    12871287                paIdt[(0x80 + iCtx) << cIdteShift].Gate.u1DescType = 0;
     
    13051305
    13061306
    1307 #define bs3CpuBasic2_sidt_Common BS3_CMN_NM(bs3CpuBasic2_sidt_Common)
    1308 void bs3CpuBasic2_sidt_Common(void)
     1307# define bs3CpuBasic2_sidt_Common BS3_CMN_NM(bs3CpuBasic2_sidt_Common)
     1308BS3_DECL_NEAR(void) bs3CpuBasic2_sidt_Common(void)
    13091309{
    13101310    BS3TRAPFRAME        TrapCtx;
     
    13241324    Bs3RegCtxSave(&Ctx);
    13251325    Ctx.rsp.u -= 0x80;
    1326     Ctx.rip.u  = (uintptr_t)BS3_FP_OFF(&TMPL_NM(bs3CpuBasic2_sidt_bx_ud2));
     1326    Ctx.rip.u  = (uintptr_t)BS3_FP_OFF(&bs3CpuBasic2_sidt_bx_ud2);
    13271327# if TMPL_BITS == 32
    13281328    g_uBs3TrapEipHint = Ctx.rip.u32;
     
    13431343}
    13441344
    1345 #endif /* once for each bitcount */
    1346 
    1347 
    1348 #if TMPL_MODE == BS3_MODE_PE16 || TMPL_MODE == BS3_MODE_PE16_32
     1345# if ARCH_BITS != 64
    13491346
    13501347/**
    13511348 * Worker for bs3CpuBasic2_TssGateEsp that tests the INT 80 from outer rings.
    13521349 */
    1353 #define bs3CpuBasic2_TssGateEsp_AltStackOuterRing BS3_CMN_NM(bs3CpuBasic2_TssGateEsp_AltStackOuterRing)
    1354 void bs3CpuBasic2_TssGateEsp_AltStackOuterRing(PCBS3REGCTX pCtx, uint8_t bRing, uint8_t *pbAltStack, size_t cbAltStack,
    1355                                                bool f16BitStack, bool f16BitTss, bool f16BitHandler, unsigned uLine)
     1350#  define bs3CpuBasic2_TssGateEsp_AltStackOuterRing BS3_CMN_NM(bs3CpuBasic2_TssGateEsp_AltStackOuterRing)
     1351BS3_DECL_NEAR(void) bs3CpuBasic2_TssGateEsp_AltStackOuterRing(PCBS3REGCTX pCtx, uint8_t bRing, uint8_t *pbAltStack,
     1352                                                              size_t cbAltStack, bool f16BitStack, bool f16BitTss,
     1353                                                              bool f16BitHandler, unsigned uLine)
    13561354{
    13571355    uint8_t const   cbIretFrame = f16BitHandler ? 5*2 : 5*4;
     
    14011399}
    14021400
    1403 #define bs3CpuBasic2_TssGateEspCommon BS3_CMN_NM(bs3CpuBasic2_TssGateEspCommon)
    1404 void bs3CpuBasic2_TssGateEspCommon(bool const g_f16BitSys, PX86DESC const paIdt, unsigned const cIdteShift)
     1401#  define bs3CpuBasic2_TssGateEspCommon BS3_CMN_NM(bs3CpuBasic2_TssGateEspCommon)
     1402BS3_DECL_NEAR(void) bs3CpuBasic2_TssGateEspCommon(bool const g_f16BitSys, PX86DESC const paIdt, unsigned const cIdteShift)
    14051403{
    14061404    BS3TRAPFRAME    TrapCtx;
    14071405    BS3REGCTX       Ctx;
    14081406    BS3REGCTX       Ctx2;
    1409 # if TMPL_BITS == 16
     1407#  if TMPL_BITS == 16
    14101408    uint8_t        *pbTmp;
    1411 # endif
     1409#  endif
    14121410
    14131411    /* make sure they're allocated  */
     
    14181416    Bs3RegCtxSave(&Ctx);
    14191417    Ctx.rsp.u -= 0x80;
    1420     Ctx.rip.u  = (uintptr_t)BS3_FP_OFF(&TMPL_NM(bs3CpuBasic2_Int80));
    1421 # if TMPL_BITS == 32
     1418    Ctx.rip.u  = (uintptr_t)BS3_FP_OFF(&bs3CpuBasic2_Int80);
     1419#  if TMPL_BITS == 32
    14221420    g_uBs3TrapEipHint = Ctx.rip.u32;
    1423 # endif
     1421#  endif
    14241422
    14251423    /*
     
    14581456                Bs3RegCtxRestore(&Ctx2, 0); /* (does not return) */
    14591457            bs3CpuBasic2_CompareIntCtx1(&TrapCtx, &Ctx2, 0x80 /*bXcpt*/);
    1460 # if TMPL_BITS == 16
     1458#  if TMPL_BITS == 16
    14611459            if ((pbTmp = (uint8_t *)ASMMemFirstNonZero(pbAltStack, cbAltStack)) != NULL)
    14621460                bs3CpuBasic2_FailedF("someone touched the alt stack (%p) with SS:ESP=%04x:%#RX32: %p=%02x\n",
    14631461                                     pbAltStack, Ctx2.ss, Ctx2.rsp.u32, pbTmp, *pbTmp);
    1464 # else
     1462#  else
    14651463            if (ASMMemIsZero(pbAltStack, cbAltStack))
    14661464                bs3CpuBasic2_FailedF("alt stack wasn't used despite SS:ESP=%04x:%#RX32\n", Ctx2.ss, Ctx2.rsp.u32);
    1467 # endif
     1465#  endif
    14681466
    14691467            /* Different rings (load SS0:SP0 from TSS). */
     
    15001498}
    15011499
    1502 #endif /* PE16 || PE32 */
    1503 
     1500# endif /* ARCH_BITS != 64 */
     1501#endif /* BS3_INSTANTIATING_CMN */
     1502
     1503
     1504/*
     1505 * Mode specific code.
     1506 * Mode specific code.
     1507 * Mode specific code.
     1508 */
     1509#ifdef BS3_INSTANTIATING_MODE
    15041510
    15051511BS3_DECL_FAR(uint8_t) TMPL_NM(bs3CpuBasic2_TssGateEsp)(uint8_t bMode)
     
    15111517    g_f16BitSys   = BS3_MODE_IS_16BIT_SYS(TMPL_MODE);
    15121518
    1513 #if TMPL_MODE == BS3_MODE_PE16 \
     1519# if TMPL_MODE == BS3_MODE_PE16 \
    15141520 || TMPL_MODE == BS3_MODE_PE16_32 \
    15151521 || TMPL_MODE == BS3_MODE_PP16 \
     
    15211527                                  (PX86DESC)MyBs3Idt,
    15221528                                  BS3_MODE_IS_64BIT_SYS(TMPL_MODE) ? 1 : 0);
    1523 #else
     1529# else
    15241530    bRet = BS3TESTDOMODE_SKIPPED;
    1525 #endif
     1531# endif
    15261532
    15271533    /*
     
    15391545    g_f16BitSys   = BS3_MODE_IS_16BIT_SYS(TMPL_MODE);
    15401546
    1541 #if !BS3_MODE_IS_RM_OR_V86(TMPL_MODE)
     1547# if !BS3_MODE_IS_RM_OR_V86(TMPL_MODE)
    15421548
    15431549    /*
    15441550     * Pass to common worker which is only compiled once per mode.
    15451551     */
    1546     bs3CpuBasic2_RaiseXcpt1Common(BS3_MODE_IS_16BIT_SYS(TMPL_MODE),
    1547                                   MY_SYS_SEL_R0_CS,
     1552    bs3CpuBasic2_RaiseXcpt1Common(MY_SYS_SEL_R0_CS,
    15481553                                  MY_SYS_SEL_R0_CS_CNF,
    15491554                                  MY_SYS_SEL_R0_SS,
     
    15561561    Bs3TrapInit();
    15571562    return 0;
    1558 #elif TMPL_MODE == BS3_MODE_RM
     1563# elif TMPL_MODE == BS3_MODE_RM
    15591564
    15601565    /*
     
    15641569    return BS3TESTDOMODE_SKIPPED;
    15651570
    1566 #else
     1571# else
    15671572    return BS3TESTDOMODE_SKIPPED;
    1568 #endif
     1573# endif
    15691574}
    15701575
     
    15771582
    15781583    Bs3PrintStrN(RT_STR_TUPLE("Hello world!\n"));
    1579 #if !BS3_MODE_IS_V86(TMPL_MODE)
     1584# if !BS3_MODE_IS_V86(TMPL_MODE)
    15801585    Bs3TestPrintf(RT_STR_TUPLE("Hi there!\n"));
    1581 #endif
     1586# endif
    15821587    return BS3TESTDOMODE_SKIPPED;
    15831588}
     
    16041609}
    16051610
    1606 
    16071611#endif /* BS3_INSTANTIATING_MODE */
    16081612
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-basic-2-template.mac

    r60554 r60609  
    3939TMPL_BEGIN_TEXT
    4040
    41 %if 0 ; Will be doing the testing in C, I think.
     41;
     42; Code that is instantiated for every possible CPU mode
     43;
     44%ifdef BS3_INSTANTIATING_MODE
     45
     46 %if 0 ; Will be doing the testing in C, I think.
    4247BS3_PROC_BEGIN_MODE bs3CpuBasic2_iret, BS3_PBC_FAR
    4348        BS3_CALL_CONV_PROLOG 1
     
    4651        sub     xSP, 20h
    4752
    48 %if TMPL_BITS == 64
    49 %if TMPL_BITS == 16
     53 %if TMPL_BITS == 64
     54  %if TMPL_BITS == 16
    5055        xor     ax, ax
    5156        mov     al, [xBP + xCB*2]
     
    5560        call    Bs3Printf
    5661        add     sp, 6
    57 %else
     62  %else
    5863        movzx   xDX, byte [xBP + xCB*2]
    5964        push    xDX
     
    6166        BS3_CALL Bs3Printf, 2
    6267        add     xSP, xCB * 2
    63 %endif
    64 %endif
     68  %endif
     69 %endif
    6570
    6671        ; Return
     
    7681
    7782BS3_PROC_END_MODE   bs3CpuBasic2_iret
    78 %endif
     83 %endif
     84
     85%endif ; BS3_INSTANTIATING_MODE
    7986
    8087
    81 BS3_PROC_BEGIN_MODE bs3CpuBasic2_Int80, BS3_PBC_NEAR
    82         int     80h
    83 .again: ud2
    84         jmp     .again
    85 BS3_PROC_END_MODE   bs3CpuBasic2_Int80
     88;
     89; Test code snippets containing code which differs between 16-bit, 32-bit
     90; and 64-bit CPUs modes.
     91;
     92%ifdef BS3_INSTANTIATING_CMN
    8693
    87 
    88 BS3_PROC_BEGIN_MODE bs3CpuBasic2_Int81, BS3_PBC_NEAR
    89         int     81h
    90 .again: ud2
    91         jmp     .again
    92 BS3_PROC_END_MODE   bs3CpuBasic2_Int81
    93 
    94 
    95 BS3_PROC_BEGIN_MODE bs3CpuBasic2_Int82, BS3_PBC_NEAR
    96         int     82h
    97 .again: ud2
    98         jmp     .again
    99 BS3_PROC_END_MODE   bs3CpuBasic2_Int82
    100 
    101 
    102 BS3_PROC_BEGIN_MODE bs3CpuBasic2_Int83, BS3_PBC_NEAR
    103         int     83h
    104 .again: ud2
    105         jmp     .again
    106 BS3_PROC_END_MODE   bs3CpuBasic2_Int83
    107 
    108 
    109 BS3_PROC_BEGIN_MODE bs3CpuBasic2_sidt_bx_ud2, BS3_PBC_NEAR
     94BS3_PROC_BEGIN_CMN bs3CpuBasic2_sidt_bx_ud2, BS3_PBC_NEAR
    11095        sidt    [xBX]
    11196.again: ud2
    11297        jmp     .again
    113 BS3_PROC_END_MODE   bs3CpuBasic2_sidt_bx_ud2
     98BS3_PROC_END_CMN   bs3CpuBasic2_sidt_bx_ud2
    11499
    115100
    116 BS3_PROC_BEGIN_MODE bs3CpuBasic2_lidt_bx_ud2, BS3_PBC_NEAR
     101BS3_PROC_BEGIN_CMN bs3CpuBasic2_lidt_bx_ud2, BS3_PBC_NEAR
    117102        lidt    [xBX]
    118103.again: ud2
    119104        jmp     .again
    120 BS3_PROC_END_MODE   bs3CpuBasic2_lidt_bx_ud2
     105BS3_PROC_END_CMN   bs3CpuBasic2_lidt_bx_ud2
    121106
    122 
     107%endif ; BS3_INSTANTIATING_CMN
    123108
    124109%include "bs3kit-template-footer.mac"   ; reset environment
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-cmn-instantiate-common.h

    r60019 r60609  
     1/* $Id$ */
     2/** @file
     3 * BS3Kit - Common template instantiator body.
     4 */
     5
     6/*
     7 * Copyright (C) 2007-2016 Oracle Corporation
     8 *
     9 * This file is part of VirtualBox Open Source Edition (OSE), as
     10 * available from http://www.virtualbox.org. This file is free software;
     11 * you can redistribute it and/or modify it under the terms of the GNU
     12 * General Public License (GPL) as published by the Free Software
     13 * Foundation, in version 2 as it comes in the "COPYING" file of the
     14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
     15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
     16 *
     17 * The contents of this file may alternatively be used under the terms
     18 * of the Common Development and Distribution License Version 1.0
     19 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
     20 * VirtualBox OSE distribution, in which case the provisions of the
     21 * CDDL are applicable instead of those of the GPL.
     22 *
     23 * You may elect to license modified versions of this file under the
     24 * terms and conditions of either the GPL or the CDDL or both.
     25 */
    126
    227
    328/*
    429 * Instantiating common code (c16, c32, c64).
     30 * This must be done first.
     31 */
     32
     33/** @def BS3_INSTANTIATING_CMN
     34 * @ingroup grp_bs3kit_tmpl
     35 * Indicates that we're instantiating common code (c16, c32, c64).
    536 */
    637#define BS3_INSTANTIATING_CMN
     
    3768
    3869/*
    39  * Instantiating code for each individual mode (rm, pe16, pe16_32, ..).
     70 * Instantiating code for each individual mode (rm, pe16, pe16_32, ...).
     71 */
     72
     73/** @def BS3_INSTANTIATING_MODE
     74 * @ingroup grp_bs3kit_tmpl
     75 * Indicates that we're instantiating mode specific code (rm, pe16, ...).
    4076 */
    4177#define BS3_INSTANTIATING_MODE
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.h

    r60600 r60609  
    55
    66/*
    7  * Copyright (C) 2007-2015 Oracle Corporation
     7 * Copyright (C) 2007-2016 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    3737#endif
    3838
     39
     40
     41/** @def BS3_USE_ALT_16BIT_TEXT_SEG
     42 * @ingroup grp_bs3kit
     43 * Combines the BS3_USE_RM_TEXT_SEG,  BS3_USE_X0_TEXT_SEG, and
     44 * BS3_USE_X1_TEXT_SEG indicators into a single one.
     45 */
     46#if defined(BS3_USE_RM_TEXT_SEG) || defined(BS3_USE_X0_TEXT_SEG) || defined(BS3_USE_X1_TEXT_SEG)
     47# define BS3_USE_ALT_16BIT_TEXT_SEG
     48#else
     49# undef  BS3_USE_ALT_16BIT_TEXT_SEG
     50#endif
     51
     52/** @def BS3_USE_X0_TEXT_SEG
     53 * @ingroup grp_bs3kit
     54 * Emit 16-bit code to the BS3X0TEXT16 segment - ignored for 32-bit and 64-bit.
     55 *
     56 * Calling directly into the BS3X0TEXT16 segment is only possible in real-mode
     57 * and v8086 mode.  In protected mode the real far pointer have to be converted
     58 * to a protected mode pointer that uses BS3_SEL_X0TEXT16_CS, Bs3TestDoModes and
     59 * associates does this automatically.
     60 */
     61#ifdef DOXYGEN_RUNNING
     62# define BS3_USE_X0_TEXT_SEG
     63#endif
     64
     65/** @def BS3_USE_X1_TEXT_SEG
     66 * @ingroup grp_bs3kit
     67 * Emit 16-bit code to the BS3X1TEXT16 segment - ignored for 32-bit and 64-bit.
     68 *
     69 * Calling directly into the BS3X1TEXT16 segment is only possible in real-mode
     70 * and v8086 mode.  In protected mode the real far pointer have to be converted
     71 * to a protected mode pointer that uses BS3_SEL_X1TEXT16_CS, Bs3TestDoModes and
     72 * associates does this automatically.
     73 */
     74#ifdef DOXYGEN_RUNNING
     75# define BS3_USE_X1_TEXT_SEG
     76#endif
     77
     78/** @def BS3_USE_RM_TEXT_SEG
     79 * @ingroup grp_bs3kit
     80 * Emit 16-bit code to the BS3RMTEXT16 segment - ignored for 32-bit and 64-bit.
     81 *
     82 * This segment is normally used for real-mode only code, though
     83 * BS3_SEL_RMTEXT16_CS can be used to call it from protected mode.  Unlike the
     84 * BS3X0TEXT16 and BS3X1TEXT16 segments which are empty by default, this segment
     85 * is used by common BS3Kit code.
     86 */
     87#ifdef DOXYGEN_RUNNING
     88# define BS3_USE_X0_TEXT_SEG
     89#endif
     90
     91/** @def BS3_MODEL_FAR_CODE
     92 * @ingroup grp_bs3kit
     93 * Default compiler model indicates far code.
     94 */
     95#ifdef DOXYGEN_RUNNING
     96# define BS3_MODEL_FAR_CODE
     97#elif !defined(BS3_MODEL_FAR_CODE) && (defined(__LARGE__) || defined(__MEDIUM__) || defined(__HUGE__)) && ARCH_BITS == 16
     98# define BS3_MODEL_FAR_CODE
     99#endif
     100
     101
    39102/*
    40103 * We normally don't want the noreturn / aborts attributes as they mess up stack traces.
     
    47110# undef  DECL_NO_RETURN
    48111# define DECL_NO_RETURN(type) type
    49 #endif
    50 
    51 /** @def BS3_USE_ALT_16BIT_TEXT_SEG
    52  * @ingroup grp_bs3kit
    53  * Combines the BS3_USE_RM_TEXT_SEG,  BS3_USE_X0_TEXT_SEG, and
    54  * BS3_USE_X1_TEXT_SEG indicators into a single one.
    55  */
    56 #if defined(BS3_USE_RM_TEXT_SEG) || defined(BS3_USE_X0_TEXT_SEG) || defined(BS3_USE_X1_TEXT_SEG)
    57 # define BS3_USE_ALT_16BIT_TEXT_SEG
    58 #else
    59 # undef  BS3_USE_ALT_16BIT_TEXT_SEG
    60 #endif
    61 
    62 /** @def BS3_MODEL_FAR_CODE
    63  * @ingroup grp_bs3kit
    64  * Default compiler model indicates far code.
    65  */
    66 #ifdef DOXYGEN_RUNNING
    67 # define BS3_MODEL_FAR_CODE
    68 #elif !defined(BS3_MODEL_FAR_CODE) && (defined(__LARGE__) || defined(__MEDIUM__) || defined(__HUGE__)) && ARCH_BITS == 16
    69 # define BS3_MODEL_FAR_CODE
    70112#endif
    71113
     
    98140 */
    99141#include "bs3kit-mangling-data.h"
     142
    100143
    101144
     
    579622 * @param a_Type        The return type. */
    580623#ifdef IN_BS3KIT
    581 # define BS3_DECL_CALLBACK(a_Type)   a_Type BS3_NEAR_CODE BS3_CALL
     624# define BS3_DECL_CALLBACK(a_Type)   a_Type BS3_FAR_CODE BS3_CALL
    582625#else
    583 # define BS3_DECL_CALLBACK(a_Type)   a_Type BS3_NEAR_CODE BS3_CALL
     626# define BS3_DECL_CALLBACK(a_Type)   a_Type BS3_FAR_CODE BS3_CALL
    584627#endif
    585628
     
    12981341 */
    12991342#if ARCH_BITS == 16
    1300 # define BS3_CMN_PROTO_INT(a_RetType, a_Name, a_Params) \
     1343# ifndef BS3_USE_ALT_16BIT_TEXT_SEG
     1344#  define BS3_CMN_PROTO_INT(a_RetType, a_Name, a_Params) \
    13011345    BS3_DECL_NEAR(a_RetType) BS3_CMN_NM(a_Name) a_Params;  \
    13021346    BS3_DECL_FAR(a_RetType)  BS3_CMN_FAR_NM(a_Name) a_Params
     1347# else
     1348#  define BS3_CMN_PROTO_INT(a_RetType, a_Name, a_Params) \
     1349    BS3_DECL_FAR(a_RetType)  BS3_CMN_FAR_NM(a_Name) a_Params
     1350# endif
    13031351#else
    13041352# define BS3_CMN_PROTO_INT(a_RetType, a_Name, a_Params) \
     
    24492497 * @param   bMode       The current CPU mode.
    24502498 */
    2451 typedef BS3_DECL_CALLBACK(uint8_t) FNBS3TESTDOMODE(uint8_t bMode);
    2452 /** Near pointer to a test (for 16-bit code). */
    2453 typedef FNBS3TESTDOMODE               *PFNBS3TESTDOMODE;
    2454 /** Far pointer to a test (for 32-bit and 64-bit code, will be flatten). */
    2455 typedef FNBS3TESTDOMODE BS3_FAR_CODE  *FPFNBS3TESTDOMODE;
     2499typedef BS3_DECL_CALLBACK(uint8_t)  FNBS3TESTDOMODE(uint8_t bMode);
     2500/** Pointer (far) to a test (for 32-bit and 64-bit code, will be flatten). */
     2501typedef FNBS3TESTDOMODE            *PFNBS3TESTDOMODE;
    24562502
    24572503/** Special FNBS3TESTDOMODE return code for indicating a skipped mode test.  */
     
    24722518    const char * BS3_FAR    pszSubTest;
    24732519
    2474     FPFNBS3TESTDOMODE       pfnDoRM;
    2475 
    2476     FPFNBS3TESTDOMODE       pfnDoPE16;
    2477     FPFNBS3TESTDOMODE       pfnDoPE16_32;
    2478     FPFNBS3TESTDOMODE       pfnDoPE16_V86;
    2479     FPFNBS3TESTDOMODE       pfnDoPE32;
    2480     FPFNBS3TESTDOMODE       pfnDoPE32_16;
    2481     FPFNBS3TESTDOMODE       pfnDoPEV86;
    2482 
    2483     FPFNBS3TESTDOMODE       pfnDoPP16;
    2484     FPFNBS3TESTDOMODE       pfnDoPP16_32;
    2485     FPFNBS3TESTDOMODE       pfnDoPP16_V86;
    2486     FPFNBS3TESTDOMODE       pfnDoPP32;
    2487     FPFNBS3TESTDOMODE       pfnDoPP32_16;
    2488     FPFNBS3TESTDOMODE       pfnDoPPV86;
    2489 
    2490     FPFNBS3TESTDOMODE       pfnDoPAE16;
    2491     FPFNBS3TESTDOMODE       pfnDoPAE16_32;
    2492     FPFNBS3TESTDOMODE       pfnDoPAE16_V86;
    2493     FPFNBS3TESTDOMODE       pfnDoPAE32;
    2494     FPFNBS3TESTDOMODE       pfnDoPAE32_16;
    2495     FPFNBS3TESTDOMODE       pfnDoPAEV86;
    2496 
    2497     FPFNBS3TESTDOMODE       pfnDoLM16;
    2498     FPFNBS3TESTDOMODE       pfnDoLM32;
    2499     FPFNBS3TESTDOMODE       pfnDoLM64;
     2520    PFNBS3TESTDOMODE        pfnDoRM;
     2521
     2522    PFNBS3TESTDOMODE        pfnDoPE16;
     2523    PFNBS3TESTDOMODE        pfnDoPE16_32;
     2524    PFNBS3TESTDOMODE        pfnDoPE16_V86;
     2525    PFNBS3TESTDOMODE        pfnDoPE32;
     2526    PFNBS3TESTDOMODE        pfnDoPE32_16;
     2527    PFNBS3TESTDOMODE        pfnDoPEV86;
     2528
     2529    PFNBS3TESTDOMODE        pfnDoPP16;
     2530    PFNBS3TESTDOMODE        pfnDoPP16_32;
     2531    PFNBS3TESTDOMODE        pfnDoPP16_V86;
     2532    PFNBS3TESTDOMODE        pfnDoPP32;
     2533    PFNBS3TESTDOMODE        pfnDoPP32_16;
     2534    PFNBS3TESTDOMODE        pfnDoPPV86;
     2535
     2536    PFNBS3TESTDOMODE        pfnDoPAE16;
     2537    PFNBS3TESTDOMODE        pfnDoPAE16_32;
     2538    PFNBS3TESTDOMODE        pfnDoPAE16_V86;
     2539    PFNBS3TESTDOMODE        pfnDoPAE32;
     2540    PFNBS3TESTDOMODE        pfnDoPAE32_16;
     2541    PFNBS3TESTDOMODE        pfnDoPAEV86;
     2542
     2543    PFNBS3TESTDOMODE        pfnDoLM16;
     2544    PFNBS3TESTDOMODE        pfnDoLM32;
     2545    PFNBS3TESTDOMODE        pfnDoLM64;
    25002546
    25012547} BS3TESTMODEENTRY;
     
    25712617 * A set of standard protypes to go with #BS3TESTMODEENTRY_MODE. */
    25722618#define BS3TESTMODE_PROTOTYPES_MODE(a_BaseNm) \
    2573     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _rm); \
    2574     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pe16); \
    2575     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pe16_32); \
    2576     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pe16_v86); \
    2577     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pe32); \
    2578     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pe32_16); \
    2579     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pev86); \
    2580     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pp16); \
    2581     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pp16_32); \
    2582     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pp16_v86); \
    2583     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pp32); \
    2584     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pp32_16); \
    2585     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _ppv86); \
    2586     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pae16); \
    2587     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pae16_32); \
    2588     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pae16_v86); \
    2589     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pae32); \
    2590     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pae32_16); \
    2591     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _paev86); \
    2592     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _lm16); \
    2593     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _lm32); \
    2594     FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _lm64)
     2619    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _rm); \
     2620    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pe16); \
     2621    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pe16_32); \
     2622    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pe16_v86); \
     2623    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pe32); \
     2624    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pe32_16); \
     2625    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pev86); \
     2626    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pp16); \
     2627    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pp16_32); \
     2628    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pp16_v86); \
     2629    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pp32); \
     2630    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pp32_16); \
     2631    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _ppv86); \
     2632    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pae16); \
     2633    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pae16_32); \
     2634    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pae16_v86); \
     2635    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pae32); \
     2636    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _pae32_16); \
     2637    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _paev86); \
     2638    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _lm16); \
     2639    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _lm32); \
     2640    FNBS3TESTDOMODE   RT_CONCAT(a_BaseNm, _lm64)
    25952641
    25962642/** @} */
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.mac

    r60557 r60609  
    653653;
    654654; @param    %1      The mangled name.
    655 ;
    656 %macro BS3_PROC_BEGIN 1
    657 %if __BITS__ == 64
    658  BS3_GLOBAL_NAME_EX _ %+ %1, function, (_ %+ %1 %+ _EndProc - %1)
     655; @param    %2      Create an underscore prefixed alias if present and
     656;                   BS3_PB_WITH_US_ALIAS (automatic in 64-bit code).
     657;
     658%macro BS3_PROC_BEGIN 1-2 0
     659%if __BITS__ == 64 || ((%2) & BS3_PB_WITH_US_ALIAS)
     660BS3_GLOBAL_NAME_EX _ %+ %1, function, (%1 %+ _EndProc - %1)
    659661%endif
    660662BS3_GLOBAL_NAME_EX %1, function, (%1 %+ _EndProc - %1)
    661663%endmacro
     664
     665;; For use with BS3_PROC_BEGIN for making it produce an underscore prefixed alias.
     666%define BS3_PB_WITH_US_ALIAS 1
    662667
    663668;;
     
    11911196; @param 1      Double quoted include file name.
    11921197%macro BS3_INSTANTIATE_TEMPLATE_WITH_WEIRD_ONES 1
     1198 %define BS3_INSTANTIATING_MODE
     1199 %define BS3_INSTANTIATING_ALL_MODES
     1200
    11931201 %define TMPL_MODE BS3_MODE_RM
    11941202 %include %1
     
    12421250 %define TMPL_MODE BS3_MODE_LM64
    12431251 %include %1
     1252
     1253 %undef BS3_INSTANTIATING_MODE
     1254 %undef BS3_INSTANTIATING_ALL_MODES
    12441255%endmacro
    12451256
     
    12491260; @param 1      Double quoted include file name.
    12501261%macro BS3_INSTANTIATE_TEMPLATE_ESSENTIALS 1
     1262 %define BS3_INSTANTIATING_MODE
     1263 %define BS3_INSTANTIATING_ESSENTIAL_MODES
     1264
    12511265 %define TMPL_MODE BS3_MODE_RM
    12521266 %include %1
     
    12821296 %define TMPL_MODE BS3_MODE_LM64
    12831297 %include %1
     1298
     1299 %undef  BS3_INSTANTIATING_MODE
     1300 %undef  BS3_INSTANTIATING_ESSENTIAL_MODES
    12841301%endmacro
    12851302
     
    12881305; @param 1      Double quoted include file name.
    12891306%macro BS3_INSTANTIATE_COMMON_TEMPLATE 1
     1307 %define BS3_INSTANTIATING_CMN
     1308
    12901309 %define TMPL_MODE BS3_MODE_RM
    12911310 %include %1
     
    12941313 %define TMPL_MODE BS3_MODE_LM64
    12951314 %include %1
     1315
     1316 %undef  BS3_INSTANTIATING_CMN
    12961317%endmacro
    12971318
Note: See TracChangeset for help on using the changeset viewer.

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