Changeset 60609 in vbox for trunk/src/VBox/ValidationKit/bootsectors
- Timestamp:
- Apr 20, 2016 5:21:19 PM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 106751
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 6 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/Makefile.kmk
r60578 r60609 232 232 bs3-cpu-basic-2_TEMPLATE = VBoxBS3KitImg 233 233 bs3-cpu-basic-2_INCS = . 234 bs3-cpu-basic-2_DEFS = BS3_CMN_INSTANTIATE_FILE1=bs3-cpu-basic-2-template.c234 bs3-cpu-basic-2_DEFS = BS3_CMN_INSTANTIATE_FILE1=bs3-cpu-basic-2-template.c 235 235 bs3-cpu-basic-2_DEFS += BS3_MODE_INSTANTIATE_FILE1=bs3-cpu-basic-2-template.c 236 236 ifeq ($(KBUILD_HOST),win) … … 239 239 bs3-cpu-basic-2_SOURCES = \ 240 240 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 \ 243 243 bs3kit/bs3-cmn-instantiate-x0.c16 \ 244 244 bs3kit/bs3-cmn-instantiate.c32 \ -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-basic-2-asm.asm
r60585 r60609 40 40 41 41 42 43 ; 44 ; CPU mode agnostic test code snippets. 45 ; 42 46 BS3_BEGIN_TEXT16 43 BS3_PROC_BEGIN bs3CpuBasic2_ud2 47 48 BS3_PROC_BEGIN bs3CpuBasic2_ud2, BS3_PB_WITH_US_ALIAS 44 49 .again: 45 50 ud2 … … 48 53 49 54 55 BS3_PROC_BEGIN bs3CpuBasic2_Int80, BS3_PB_WITH_US_ALIAS 56 int 80h 57 .again: ud2 58 jmp .again 59 BS3_PROC_END bs3CpuBasic2_Int80 50 60 51 ;BS3_INSTANTIATE_COMMON_TEMPLATE "bs3-cpu-basic-2-template.mac" 61 62 BS3_PROC_BEGIN bs3CpuBasic2_Int81, BS3_PB_WITH_US_ALIAS 63 int 81h 64 .again: ud2 65 jmp .again 66 BS3_PROC_END bs3CpuBasic2_Int81 67 68 69 BS3_PROC_BEGIN bs3CpuBasic2_Int82, BS3_PB_WITH_US_ALIAS 70 int 82h 71 .again: ud2 72 jmp .again 73 BS3_PROC_END bs3CpuBasic2_Int82 74 75 76 BS3_PROC_BEGIN bs3CpuBasic2_Int83, BS3_PB_WITH_US_ALIAS 77 int 83h 78 .again: ud2 79 jmp .again 80 BS3_PROC_END bs3CpuBasic2_Int83 81 82 83 ; 84 ; Instantiate code templates. 85 ; 86 BS3_INSTANTIATE_COMMON_TEMPLATE "bs3-cpu-basic-2-template.mac" 52 87 BS3_INSTANTIATE_TEMPLATE_WITH_WEIRD_ONES "bs3-cpu-basic-2-template.mac" 53 88 54 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-basic-2-template.c
r60585 r60609 26 26 27 27 28 #ifdef BS3_INSTANTIATING_MODE29 30 28 /********************************************************************************************************************************* 31 29 * Header Files * … … 38 36 * Defined Constants And Macros * 39 37 *********************************************************************************************************************************/ 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 40 47 # undef MyBs3Idt 41 48 # undef MY_SYS_SEL_R0_CS … … 64 71 # error "TMPL_MODE" 65 72 # 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 74 74 75 75 /********************************************************************************************************************************* 76 76 * Structures and Typedefs * 77 77 *********************************************************************************************************************************/ 78 #ifndef DONE_MODE_TYPES 79 #define DONE_MODE_TYPES 78 #ifdef BS3_INSTANTIATING_CMN 80 79 typedef struct BS3CB2INVLDESCTYPE 81 80 { … … 89 88 * External Symbols * 90 89 *********************************************************************************************************************************/ 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 91 extern BS3_DECL(void) bs3CpuBasic2_Int80(void); 92 extern BS3_DECL(void) bs3CpuBasic2_Int81(void); 93 extern BS3_DECL(void) bs3CpuBasic2_Int82(void); 94 extern BS3_DECL(void) bs3CpuBasic2_Int83(void); 95 extern BS3_DECL(void) bs3CpuBasic2_ud2(void); 96 #define bs3CpuBasic2_sidt_bx_ud2 BS3_CMN_NM(bs3CpuBasic2_sidt_bx_ud2) 97 extern BS3_DECL(void) bs3CpuBasic2_sidt_bx_ud2(void); 98 #define bs3CpuBasic2_lidt_bx_ud2 BS3_CMN_NM(bs3CpuBasic2_lidt_bx_ud2) 99 extern BS3_DECL(void) bs3CpuBasic2_lidt_bx_ud2(void); 100 #define g_bs3CpuBasic2_ud2_FlatAddr BS3_DATA_NM(g_bs3CpuBasic2_ud2_FlatAddr) 101 extern uint32_t g_bs3CpuBasic2_ud2_FlatAddr; 100 102 #endif 101 extern uint32_t g_bs3CpuBasic2_ud2_FlatAddr;102 103 103 104 … … 105 106 * Global Variables * 106 107 *********************************************************************************************************************************/ 107 #if TMPL_MODE == BS3_MODE_RM || TMPL_MODE == BS3_MODE_PE16_32 || TMPL_MODE == BS3_MODE_LM64108 # defineg_pszTestMode BS3_CMN_NM(g_pszTestMode)108 #ifdef BS3_INSTANTIATING_CMN 109 # define g_pszTestMode BS3_CMN_NM(g_pszTestMode) 109 110 static const char BS3_FAR *g_pszTestMode = (const char *)1; 110 # defineg_bTestMode BS3_CMN_NM(g_bTestMode)111 # define g_bTestMode BS3_CMN_NM(g_bTestMode) 111 112 static uint8_t g_bTestMode = 1; 112 # defineg_f16BitSys BS3_CMN_NM(g_f16BitSys)113 # define g_f16BitSys BS3_CMN_NM(g_f16BitSys) 113 114 static bool g_f16BitSys = 1; 114 115 … … 171 172 }; 172 173 173 #endif 174 175 #if TMPL_MODE == BS3_MODE_RM || TMPL_MODE == BS3_MODE_PE16_32 || TMPL_MODE == BS3_MODE_LM64174 #endif /* BS3_INSTANTIATING_CMN - global */ 175 176 #ifdef BS3_INSTANTIATING_CMN 176 177 177 178 /** … … 179 180 * and g_pszTestMode. 180 181 */ 181 # define bs3CpuBasic2_FailedF BS3_CMN_NM(bs3CpuBasic2_FailedF)182 voidbs3CpuBasic2_FailedF(const char *pszFormat, ...)182 # define bs3CpuBasic2_FailedF BS3_CMN_NM(bs3CpuBasic2_FailedF) 183 BS3_DECL_NEAR(void) bs3CpuBasic2_FailedF(const char *pszFormat, ...) 183 184 { 184 185 va_list va; … … 196 197 * Compares trap stuff. 197 198 */ 198 # define bs3CpuBasic2_CompareIntCtx1 BS3_CMN_NM(bs3CpuBasic2_CompareIntCtx1)199 voidbs3CpuBasic2_CompareIntCtx1(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint8_t bXcpt)199 # define bs3CpuBasic2_CompareIntCtx1 BS3_CMN_NM(bs3CpuBasic2_CompareIntCtx1) 200 BS3_DECL_NEAR(void) bs3CpuBasic2_CompareIntCtx1(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint8_t bXcpt) 200 201 { 201 202 uint16_t const cErrorsBefore = Bs3TestSubErrorCount(); … … 218 219 * Compares trap stuff. 219 220 */ 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) 222 BS3_DECL_NEAR(void) bs3CpuBasic2_CompareTrapCtx2(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t cbIpAdjust, 223 uint8_t bXcpt, uint16_t uHandlerCs) 223 224 { 224 225 uint16_t const cErrorsBefore = Bs3TestSubErrorCount(); … … 241 242 * Compares a CPU trap. 242 243 */ 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) 245 BS3_DECL_NEAR(void) bs3CpuBasic2_CompareCpuTrapCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd, 246 uint8_t bXcpt, bool f486ResumeFlagHint) 246 247 { 247 248 uint16_t const cErrorsBefore = Bs3TestSubErrorCount(); … … 277 278 * Compares \#GP trap. 278 279 */ 279 # define bs3CpuBasic2_CompareGpCtx BS3_CMN_NM(bs3CpuBasic2_CompareGpCtx)280 voidbs3CpuBasic2_CompareGpCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd)280 # define bs3CpuBasic2_CompareGpCtx BS3_CMN_NM(bs3CpuBasic2_CompareGpCtx) 281 BS3_DECL_NEAR(void) bs3CpuBasic2_CompareGpCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd) 281 282 { 282 283 bs3CpuBasic2_CompareCpuTrapCtx(pTrapCtx, pStartCtx, uErrCd, X86_XCPT_GP, true /*f486ResumeFlagHint*/); … … 286 287 * Compares \#NP trap. 287 288 */ 288 # define bs3CpuBasic2_CompareNpCtx BS3_CMN_NM(bs3CpuBasic2_CompareNpCtx)289 voidbs3CpuBasic2_CompareNpCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd)289 # define bs3CpuBasic2_CompareNpCtx BS3_CMN_NM(bs3CpuBasic2_CompareNpCtx) 290 BS3_DECL_NEAR(void) bs3CpuBasic2_CompareNpCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd) 290 291 { 291 292 bs3CpuBasic2_CompareCpuTrapCtx(pTrapCtx, pStartCtx, uErrCd, X86_XCPT_NP, true /*f486ResumeFlagHint*/); … … 295 296 * Compares \#SS trap. 296 297 */ 297 # define bs3CpuBasic2_CompareSsCtx BS3_CMN_NM(bs3CpuBasic2_CompareSsCtx)298 voidbs3CpuBasic2_CompareSsCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd, bool f486ResumeFlagHint)298 # define bs3CpuBasic2_CompareSsCtx BS3_CMN_NM(bs3CpuBasic2_CompareSsCtx) 299 BS3_DECL_NEAR(void) bs3CpuBasic2_CompareSsCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd, bool f486ResumeFlagHint) 299 300 { 300 301 bs3CpuBasic2_CompareCpuTrapCtx(pTrapCtx, pStartCtx, uErrCd, X86_XCPT_SS, f486ResumeFlagHint); … … 304 305 * Compares \#TS trap. 305 306 */ 306 # define bs3CpuBasic2_CompareTsCtx BS3_CMN_NM(bs3CpuBasic2_CompareTsCtx)307 voidbs3CpuBasic2_CompareTsCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd)307 # define bs3CpuBasic2_CompareTsCtx BS3_CMN_NM(bs3CpuBasic2_CompareTsCtx) 308 BS3_DECL_NEAR(void) bs3CpuBasic2_CompareTsCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx, uint16_t uErrCd) 308 309 { 309 310 bs3CpuBasic2_CompareCpuTrapCtx(pTrapCtx, pStartCtx, uErrCd, X86_XCPT_TS, false /*f486ResumeFlagHint*/); … … 313 314 * Compares \#PF trap. 314 315 */ 315 # define bs3CpuBasic2_ComparePfCtx BS3_CMN_NM(bs3CpuBasic2_ComparePfCtx)316 voidbs3CpuBasic2_ComparePfCtx(PCBS3TRAPFRAME pTrapCtx, PBS3REGCTX pStartCtx, uint16_t uErrCd, uint64_t uCr2Expected)316 # define bs3CpuBasic2_ComparePfCtx BS3_CMN_NM(bs3CpuBasic2_ComparePfCtx) 317 BS3_DECL_NEAR(void) bs3CpuBasic2_ComparePfCtx(PCBS3TRAPFRAME pTrapCtx, PBS3REGCTX pStartCtx, uint16_t uErrCd, uint64_t uCr2Expected) 317 318 { 318 319 uint64_t const uCr2Saved = pStartCtx->cr2.u; … … 325 326 * Compares \#UD trap. 326 327 */ 327 # define bs3CpuBasic2_CompareUdCtx BS3_CMN_NM(bs3CpuBasic2_CompareUdCtx)328 voidbs3CpuBasic2_CompareUdCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx)328 # define bs3CpuBasic2_CompareUdCtx BS3_CMN_NM(bs3CpuBasic2_CompareUdCtx) 329 BS3_DECL_NEAR(void) bs3CpuBasic2_CompareUdCtx(PCBS3TRAPFRAME pTrapCtx, PCBS3REGCTX pStartCtx) 329 330 { 330 331 bs3CpuBasic2_CompareCpuTrapCtx(pTrapCtx, pStartCtx, 0 /*no error code*/, X86_XCPT_UD, true /*f486ResumeFlagHint*/); … … 332 333 333 334 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) 336 BS3_DECL_NEAR(void) bs3CpuBasic2_RaiseXcpt1Common(uint16_t const uSysR0Cs, uint16_t const uSysR0CsConf, uint16_t const uSysR0Ss, 337 PX86DESC const paIdt, unsigned const cIdteShift) 338 338 { 339 339 BS3TRAPFRAME TrapCtx; … … 406 406 Bs3RegCtxSave(&Ctx80); 407 407 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); 409 409 # if TMPL_BITS == 16 410 410 Ctx80.cs = BS3_MODE_IS_RM_OR_V86(g_bTestMode) ? BS3_SEL_TEXT16 : BS3_SEL_R0_CS16; … … 413 413 # endif 414 414 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); 416 416 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); 418 418 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); 420 420 421 421 /* … … 1283 1283 } 1284 1284 1285 paIdt[(0x80 + iCtx) << cIdteShift].Gate.u16Sel = MY_SYS_SEL_R0_CS;1285 paIdt[(0x80 + iCtx) << cIdteShift].Gate.u16Sel = uSysR0Cs; 1286 1286 paIdt[(0x80 + iCtx) << cIdteShift].Gate.u4Type = bSavedType; 1287 1287 paIdt[(0x80 + iCtx) << cIdteShift].Gate.u1DescType = 0; … … 1305 1305 1306 1306 1307 # define bs3CpuBasic2_sidt_Common BS3_CMN_NM(bs3CpuBasic2_sidt_Common)1308 voidbs3CpuBasic2_sidt_Common(void)1307 # define bs3CpuBasic2_sidt_Common BS3_CMN_NM(bs3CpuBasic2_sidt_Common) 1308 BS3_DECL_NEAR(void) bs3CpuBasic2_sidt_Common(void) 1309 1309 { 1310 1310 BS3TRAPFRAME TrapCtx; … … 1324 1324 Bs3RegCtxSave(&Ctx); 1325 1325 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); 1327 1327 # if TMPL_BITS == 32 1328 1328 g_uBs3TrapEipHint = Ctx.rip.u32; … … 1343 1343 } 1344 1344 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 1349 1346 1350 1347 /** 1351 1348 * Worker for bs3CpuBasic2_TssGateEsp that tests the INT 80 from outer rings. 1352 1349 */ 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) 1351 BS3_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) 1356 1354 { 1357 1355 uint8_t const cbIretFrame = f16BitHandler ? 5*2 : 5*4; … … 1401 1399 } 1402 1400 1403 # define bs3CpuBasic2_TssGateEspCommon BS3_CMN_NM(bs3CpuBasic2_TssGateEspCommon)1404 voidbs3CpuBasic2_TssGateEspCommon(bool const g_f16BitSys, PX86DESC const paIdt, unsigned const cIdteShift)1401 # define bs3CpuBasic2_TssGateEspCommon BS3_CMN_NM(bs3CpuBasic2_TssGateEspCommon) 1402 BS3_DECL_NEAR(void) bs3CpuBasic2_TssGateEspCommon(bool const g_f16BitSys, PX86DESC const paIdt, unsigned const cIdteShift) 1405 1403 { 1406 1404 BS3TRAPFRAME TrapCtx; 1407 1405 BS3REGCTX Ctx; 1408 1406 BS3REGCTX Ctx2; 1409 # if TMPL_BITS == 161407 # if TMPL_BITS == 16 1410 1408 uint8_t *pbTmp; 1411 # endif1409 # endif 1412 1410 1413 1411 /* make sure they're allocated */ … … 1418 1416 Bs3RegCtxSave(&Ctx); 1419 1417 Ctx.rsp.u -= 0x80; 1420 Ctx.rip.u = (uintptr_t)BS3_FP_OFF(& TMPL_NM(bs3CpuBasic2_Int80));1421 # if TMPL_BITS == 321418 Ctx.rip.u = (uintptr_t)BS3_FP_OFF(&bs3CpuBasic2_Int80); 1419 # if TMPL_BITS == 32 1422 1420 g_uBs3TrapEipHint = Ctx.rip.u32; 1423 # endif1421 # endif 1424 1422 1425 1423 /* … … 1458 1456 Bs3RegCtxRestore(&Ctx2, 0); /* (does not return) */ 1459 1457 bs3CpuBasic2_CompareIntCtx1(&TrapCtx, &Ctx2, 0x80 /*bXcpt*/); 1460 # if TMPL_BITS == 161458 # if TMPL_BITS == 16 1461 1459 if ((pbTmp = (uint8_t *)ASMMemFirstNonZero(pbAltStack, cbAltStack)) != NULL) 1462 1460 bs3CpuBasic2_FailedF("someone touched the alt stack (%p) with SS:ESP=%04x:%#RX32: %p=%02x\n", 1463 1461 pbAltStack, Ctx2.ss, Ctx2.rsp.u32, pbTmp, *pbTmp); 1464 # else1462 # else 1465 1463 if (ASMMemIsZero(pbAltStack, cbAltStack)) 1466 1464 bs3CpuBasic2_FailedF("alt stack wasn't used despite SS:ESP=%04x:%#RX32\n", Ctx2.ss, Ctx2.rsp.u32); 1467 # endif1465 # endif 1468 1466 1469 1467 /* Different rings (load SS0:SP0 from TSS). */ … … 1500 1498 } 1501 1499 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 1504 1510 1505 1511 BS3_DECL_FAR(uint8_t) TMPL_NM(bs3CpuBasic2_TssGateEsp)(uint8_t bMode) … … 1511 1517 g_f16BitSys = BS3_MODE_IS_16BIT_SYS(TMPL_MODE); 1512 1518 1513 # if TMPL_MODE == BS3_MODE_PE16 \1519 # if TMPL_MODE == BS3_MODE_PE16 \ 1514 1520 || TMPL_MODE == BS3_MODE_PE16_32 \ 1515 1521 || TMPL_MODE == BS3_MODE_PP16 \ … … 1521 1527 (PX86DESC)MyBs3Idt, 1522 1528 BS3_MODE_IS_64BIT_SYS(TMPL_MODE) ? 1 : 0); 1523 # else1529 # else 1524 1530 bRet = BS3TESTDOMODE_SKIPPED; 1525 # endif1531 # endif 1526 1532 1527 1533 /* … … 1539 1545 g_f16BitSys = BS3_MODE_IS_16BIT_SYS(TMPL_MODE); 1540 1546 1541 # if !BS3_MODE_IS_RM_OR_V86(TMPL_MODE)1547 # if !BS3_MODE_IS_RM_OR_V86(TMPL_MODE) 1542 1548 1543 1549 /* 1544 1550 * Pass to common worker which is only compiled once per mode. 1545 1551 */ 1546 bs3CpuBasic2_RaiseXcpt1Common(BS3_MODE_IS_16BIT_SYS(TMPL_MODE), 1547 MY_SYS_SEL_R0_CS, 1552 bs3CpuBasic2_RaiseXcpt1Common(MY_SYS_SEL_R0_CS, 1548 1553 MY_SYS_SEL_R0_CS_CNF, 1549 1554 MY_SYS_SEL_R0_SS, … … 1556 1561 Bs3TrapInit(); 1557 1562 return 0; 1558 # elif TMPL_MODE == BS3_MODE_RM1563 # elif TMPL_MODE == BS3_MODE_RM 1559 1564 1560 1565 /* … … 1564 1569 return BS3TESTDOMODE_SKIPPED; 1565 1570 1566 # else1571 # else 1567 1572 return BS3TESTDOMODE_SKIPPED; 1568 # endif1573 # endif 1569 1574 } 1570 1575 … … 1577 1582 1578 1583 Bs3PrintStrN(RT_STR_TUPLE("Hello world!\n")); 1579 # if !BS3_MODE_IS_V86(TMPL_MODE)1584 # if !BS3_MODE_IS_V86(TMPL_MODE) 1580 1585 Bs3TestPrintf(RT_STR_TUPLE("Hi there!\n")); 1581 # endif1586 # endif 1582 1587 return BS3TESTDOMODE_SKIPPED; 1583 1588 } … … 1604 1609 } 1605 1610 1606 1607 1611 #endif /* BS3_INSTANTIATING_MODE */ 1608 1612 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-basic-2-template.mac
r60554 r60609 39 39 TMPL_BEGIN_TEXT 40 40 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. 42 47 BS3_PROC_BEGIN_MODE bs3CpuBasic2_iret, BS3_PBC_FAR 43 48 BS3_CALL_CONV_PROLOG 1 … … 46 51 sub xSP, 20h 47 52 48 %if TMPL_BITS == 6449 %if TMPL_BITS == 1653 %if TMPL_BITS == 64 54 %if TMPL_BITS == 16 50 55 xor ax, ax 51 56 mov al, [xBP + xCB*2] … … 55 60 call Bs3Printf 56 61 add sp, 6 57 %else62 %else 58 63 movzx xDX, byte [xBP + xCB*2] 59 64 push xDX … … 61 66 BS3_CALL Bs3Printf, 2 62 67 add xSP, xCB * 2 63 %endif64 %endif68 %endif 69 %endif 65 70 66 71 ; Return … … 76 81 77 82 BS3_PROC_END_MODE bs3CpuBasic2_iret 78 %endif 83 %endif 84 85 %endif ; BS3_INSTANTIATING_MODE 79 86 80 87 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 86 93 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 94 BS3_PROC_BEGIN_CMN bs3CpuBasic2_sidt_bx_ud2, BS3_PBC_NEAR 110 95 sidt [xBX] 111 96 .again: ud2 112 97 jmp .again 113 BS3_PROC_END_ MODEbs3CpuBasic2_sidt_bx_ud298 BS3_PROC_END_CMN bs3CpuBasic2_sidt_bx_ud2 114 99 115 100 116 BS3_PROC_BEGIN_ MODEbs3CpuBasic2_lidt_bx_ud2, BS3_PBC_NEAR101 BS3_PROC_BEGIN_CMN bs3CpuBasic2_lidt_bx_ud2, BS3_PBC_NEAR 117 102 lidt [xBX] 118 103 .again: ud2 119 104 jmp .again 120 BS3_PROC_END_ MODEbs3CpuBasic2_lidt_bx_ud2105 BS3_PROC_END_CMN bs3CpuBasic2_lidt_bx_ud2 121 106 122 107 %endif ; BS3_INSTANTIATING_CMN 123 108 124 109 %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 */ 1 26 2 27 3 28 /* 4 29 * 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). 5 36 */ 6 37 #define BS3_INSTANTIATING_CMN … … 37 68 38 69 /* 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, ...). 40 76 */ 41 77 #define BS3_INSTANTIATING_MODE -
trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.h
r60600 r60609 5 5 6 6 /* 7 * Copyright (C) 2007-201 5Oracle Corporation7 * Copyright (C) 2007-2016 Oracle Corporation 8 8 * 9 9 * This file is part of VirtualBox Open Source Edition (OSE), as … … 37 37 #endif 38 38 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 39 102 /* 40 103 * We normally don't want the noreturn / aborts attributes as they mess up stack traces. … … 47 110 # undef DECL_NO_RETURN 48 111 # define DECL_NO_RETURN(type) type 49 #endif50 51 /** @def BS3_USE_ALT_16BIT_TEXT_SEG52 * @ingroup grp_bs3kit53 * Combines the BS3_USE_RM_TEXT_SEG, BS3_USE_X0_TEXT_SEG, and54 * 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_SEG58 #else59 # undef BS3_USE_ALT_16BIT_TEXT_SEG60 #endif61 62 /** @def BS3_MODEL_FAR_CODE63 * @ingroup grp_bs3kit64 * Default compiler model indicates far code.65 */66 #ifdef DOXYGEN_RUNNING67 # define BS3_MODEL_FAR_CODE68 #elif !defined(BS3_MODEL_FAR_CODE) && (defined(__LARGE__) || defined(__MEDIUM__) || defined(__HUGE__)) && ARCH_BITS == 1669 # define BS3_MODEL_FAR_CODE70 112 #endif 71 113 … … 98 140 */ 99 141 #include "bs3kit-mangling-data.h" 142 100 143 101 144 … … 579 622 * @param a_Type The return type. */ 580 623 #ifdef IN_BS3KIT 581 # define BS3_DECL_CALLBACK(a_Type) a_Type BS3_ NEAR_CODE BS3_CALL624 # define BS3_DECL_CALLBACK(a_Type) a_Type BS3_FAR_CODE BS3_CALL 582 625 #else 583 # define BS3_DECL_CALLBACK(a_Type) a_Type BS3_ NEAR_CODE BS3_CALL626 # define BS3_DECL_CALLBACK(a_Type) a_Type BS3_FAR_CODE BS3_CALL 584 627 #endif 585 628 … … 1298 1341 */ 1299 1342 #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) \ 1301 1345 BS3_DECL_NEAR(a_RetType) BS3_CMN_NM(a_Name) a_Params; \ 1302 1346 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 1303 1351 #else 1304 1352 # define BS3_CMN_PROTO_INT(a_RetType, a_Name, a_Params) \ … … 2449 2497 * @param bMode The current CPU mode. 2450 2498 */ 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; 2499 typedef 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). */ 2501 typedef FNBS3TESTDOMODE *PFNBS3TESTDOMODE; 2456 2502 2457 2503 /** Special FNBS3TESTDOMODE return code for indicating a skipped mode test. */ … … 2472 2518 const char * BS3_FAR pszSubTest; 2473 2519 2474 FPFNBS3TESTDOMODEpfnDoRM;2475 2476 FPFNBS3TESTDOMODEpfnDoPE16;2477 FPFNBS3TESTDOMODEpfnDoPE16_32;2478 FPFNBS3TESTDOMODEpfnDoPE16_V86;2479 FPFNBS3TESTDOMODEpfnDoPE32;2480 FPFNBS3TESTDOMODEpfnDoPE32_16;2481 FPFNBS3TESTDOMODEpfnDoPEV86;2482 2483 FPFNBS3TESTDOMODEpfnDoPP16;2484 FPFNBS3TESTDOMODEpfnDoPP16_32;2485 FPFNBS3TESTDOMODEpfnDoPP16_V86;2486 FPFNBS3TESTDOMODEpfnDoPP32;2487 FPFNBS3TESTDOMODEpfnDoPP32_16;2488 FPFNBS3TESTDOMODEpfnDoPPV86;2489 2490 FPFNBS3TESTDOMODEpfnDoPAE16;2491 FPFNBS3TESTDOMODEpfnDoPAE16_32;2492 FPFNBS3TESTDOMODEpfnDoPAE16_V86;2493 FPFNBS3TESTDOMODEpfnDoPAE32;2494 FPFNBS3TESTDOMODEpfnDoPAE32_16;2495 FPFNBS3TESTDOMODEpfnDoPAEV86;2496 2497 FPFNBS3TESTDOMODEpfnDoLM16;2498 FPFNBS3TESTDOMODEpfnDoLM32;2499 FPFNBS3TESTDOMODEpfnDoLM64;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; 2500 2546 2501 2547 } BS3TESTMODEENTRY; … … 2571 2617 * A set of standard protypes to go with #BS3TESTMODEENTRY_MODE. */ 2572 2618 #define BS3TESTMODE_PROTOTYPES_MODE(a_BaseNm) \ 2573 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _rm); \2574 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pe16); \2575 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pe16_32); \2576 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pe16_v86); \2577 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pe32); \2578 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pe32_16); \2579 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pev86); \2580 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pp16); \2581 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pp16_32); \2582 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pp16_v86); \2583 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pp32); \2584 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pp32_16); \2585 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _ppv86); \2586 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pae16); \2587 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pae16_32); \2588 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pae16_v86); \2589 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pae32); \2590 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _pae32_16); \2591 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _paev86); \2592 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _lm16); \2593 FNBS3TESTDOMODE BS3_FAR_CODERT_CONCAT(a_BaseNm, _lm32); \2594 FNBS3TESTDOMODE BS3_FAR_CODERT_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) 2595 2641 2596 2642 /** @} */ -
trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.mac
r60557 r60609 653 653 ; 654 654 ; @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) 660 BS3_GLOBAL_NAME_EX _ %+ %1, function, (%1 %+ _EndProc - %1) 659 661 %endif 660 662 BS3_GLOBAL_NAME_EX %1, function, (%1 %+ _EndProc - %1) 661 663 %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 662 667 663 668 ;; … … 1191 1196 ; @param 1 Double quoted include file name. 1192 1197 %macro BS3_INSTANTIATE_TEMPLATE_WITH_WEIRD_ONES 1 1198 %define BS3_INSTANTIATING_MODE 1199 %define BS3_INSTANTIATING_ALL_MODES 1200 1193 1201 %define TMPL_MODE BS3_MODE_RM 1194 1202 %include %1 … … 1242 1250 %define TMPL_MODE BS3_MODE_LM64 1243 1251 %include %1 1252 1253 %undef BS3_INSTANTIATING_MODE 1254 %undef BS3_INSTANTIATING_ALL_MODES 1244 1255 %endmacro 1245 1256 … … 1249 1260 ; @param 1 Double quoted include file name. 1250 1261 %macro BS3_INSTANTIATE_TEMPLATE_ESSENTIALS 1 1262 %define BS3_INSTANTIATING_MODE 1263 %define BS3_INSTANTIATING_ESSENTIAL_MODES 1264 1251 1265 %define TMPL_MODE BS3_MODE_RM 1252 1266 %include %1 … … 1282 1296 %define TMPL_MODE BS3_MODE_LM64 1283 1297 %include %1 1298 1299 %undef BS3_INSTANTIATING_MODE 1300 %undef BS3_INSTANTIATING_ESSENTIAL_MODES 1284 1301 %endmacro 1285 1302 … … 1288 1305 ; @param 1 Double quoted include file name. 1289 1306 %macro BS3_INSTANTIATE_COMMON_TEMPLATE 1 1307 %define BS3_INSTANTIATING_CMN 1308 1290 1309 %define TMPL_MODE BS3_MODE_RM 1291 1310 %include %1 … … 1294 1313 %define TMPL_MODE BS3_MODE_LM64 1295 1314 %include %1 1315 1316 %undef BS3_INSTANTIATING_CMN 1296 1317 %endmacro 1297 1318
Note:
See TracChangeset
for help on using the changeset viewer.