Changeset 60002 in vbox
- Timestamp:
- Mar 11, 2016 11:17:47 PM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 105975
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-basic-2-c.c
r59941 r60002 32 32 33 33 34 FNBS3TESTDOMODE bs3CpuBasic2_iret_c16; 35 FNBS3TESTDOMODE BS3_FAR_CODE bs3CpuBasic2_iret_c32; 36 FNBS3TESTDOMODE BS3_FAR_CODE bs3CpuBasic2_iret_c64; 37 #pragma alias("_bs3CpuBasic2_iret_c64", "bs3CpuBasic2_iret_c64") 34 //BS3TESTMODE_PROTOTYPES_CMN(bs3CpuBasic2_iret); 35 //#pragma alias("_bs3CpuBasic2_iret_c64", "bs3CpuBasic2_iret_c64") 38 36 37 BS3TESTMODE_PROTOTYPES_MODE(bs3CpuBasic2_iret); 38 #pragma alias("_bs3CpuBasic2_iret_lm64", "bs3CpuBasic2_iret_lm64") 39 39 40 40 static const BS3TESTMODEENTRY g_aModeTest[] = 41 41 { 42 BS3TESTMODEENTRY_CMN("iret", bs3CpuBasic2_iret), 42 //BS3TESTMODEENTRY_CMN("iret", bs3CpuBasic2_iret), 43 BS3TESTMODEENTRY_MODE("iret", bs3CpuBasic2_iret), 43 44 }; 44 45 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-basic-2-template.mac
r60001 r60002 13 13 14 14 15 BS3_PROC_BEGIN_ CMNbs3CpuBasic2_iret15 BS3_PROC_BEGIN_MODE bs3CpuBasic2_iret 16 16 BS3_CALL_CONV_PROLOG 1 17 17 push xBP … … 46 46 .szMsg: db 'hello world %#x!', 13, 10, 0 47 47 48 BS3_PROC_END_ CMNbs3CpuBasic2_iret48 BS3_PROC_END_MODE bs3CpuBasic2_iret 49 49 50 50 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-basic-2.asm
r59866 r60002 32 32 33 33 34 BS3_INSTANTIATE_COMMON_TEMPLATE "bs3-cpu-basic-2-template.mac" 34 ;BS3_INSTANTIATE_COMMON_TEMPLATE "bs3-cpu-basic-2-template.mac" 35 BS3_INSTANTIATE_TEMPLATE_WITH_WEIRD_ONES "bs3-cpu-basic-2-template.mac" 35 36 -
trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-c16-Trap16Generic.asm
r60000 r60002 56 56 57 57 58 TMPL_BEGIN_TEXT 58 59 59 60 ;; … … 64 65 %macro Bs3Trap16GenericEntry 1 65 66 db 06ah, i ; push imm8 - note that this is a signextended value. 66 hlt67 67 jmp %1 68 68 ALIGNCODE(8) … … 133 133 push 0 134 134 dec bx 135 j z.more_zeroed_space135 jnz .more_zeroed_space 136 136 movzx ebx, sp 137 137 … … 175 175 push 0 176 176 dec bx 177 j z.more_zeroed_space177 jnz .more_zeroed_space 178 178 mov bx, sp 179 179 … … 219 219 push 0 220 220 dec bx 221 j z.more_zeroed_space221 jnz .more_zeroed_space 222 222 movzx ebx, sp 223 223 … … 264 264 push 0 265 265 dec bx 266 j z.more_zeroed_space266 jnz .more_zeroed_space 267 267 mov bx, sp 268 268 … … 293 293 ; Common context saving code and dispatching. 294 294 ; 295 ; @param bx Pointer to the trap frame . The following members have been296 ; filled in by the previous code:295 ; @param bx Pointer to the trap frame, zero filled. The following members 296 ; have been filled in by the previous code: 297 297 ; - bXcpt 298 298 ; - uErrCd … … 306 306 ; @param bp Pointer to the word before the iret frame, i.e. where bp 307 307 ; would be saved if this was a normal near call. 308 ; @param dx zero (0) if 286, set (1) if 386308 ; @param dx One (1) if 286, zero (0) if 386+. 309 309 ; 310 310 BS3_PROC_BEGIN bs3Trap16GenericCommon … … 320 320 ; 321 321 test dx, dx 322 j z.save_word_grps322 jnz .save_word_grps 323 323 CPU 386 324 324 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.rcx], ecx … … 326 326 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.rsi], esi 327 327 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.rsp], esp ; high word 328 mov ecx, [ss:bx + BS3TRAPFRAME.fHandlerRfl] 329 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.rflags], ecx 328 330 jmp .save_segment_registers 329 331 .save_word_grps: … … 359 361 mov al, [BS3_DATA16_WRT(g_bBs3CurrentMode)] 360 362 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.bMode], al 361 and al, ~BS3_MODE_CODE_MASK 362 or al, BS3_MODE_CODE_32 363 mov [BS3_DATA16_WRT(g_bBs3CurrentMode)], al 363 mov cl, al 364 and cl, ~BS3_MODE_CODE_MASK 365 or cl, BS3_MODE_CODE_16 366 mov [BS3_DATA16_WRT(g_bBs3CurrentMode)], cl 364 367 365 368 ; … … 373 376 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.cs], cx 374 377 375 mov al, [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.bMode]376 378 and al, BS3_MODE_CODE_MASK 377 379 cmp al, BS3_MODE_CODE_V86 … … 389 391 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.ss], cx 390 392 test dx, dx 391 j z.ret_frame_different_cpl_286393 jnz .ret_frame_different_cpl_286 392 394 .ret_frame_different_cpl_386: 393 395 CPU 386 … … 395 397 mov cx, [bp + 8] 396 398 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.rsp], ecx 397 lea eax, [ ebp + 12]399 lea eax, [bp + 12] 398 400 mov [ss:bx + BS3TRAPFRAME.uHandlerRsp], eax 399 401 jmp .iret_frame_seed_high_eip_word … … 410 412 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.ss], cx 411 413 test dx, dx 412 j z.iret_frame_same_cpl_286414 jnz .iret_frame_same_cpl_286 413 415 .iret_frame_same_cpl_386: 414 416 CPU 386 … … 427 429 .iret_frame_v8086: 428 430 CPU 386 431 or dword [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.rflags], X86_EFL_VM 429 432 mov byte [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.bCpl], 3 430 433 or byte [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.bMode], BS3_MODE_CODE_V86 ; paranoia ^ 2 431 movzx ecx, word [ ebp + 16]434 movzx ecx, word [bp + 8] 432 435 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.rsp], ecx 433 mov cx, [ ebp + 20]436 mov cx, [bp + 10] 434 437 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.ss], cx 435 mov cx, [ ebp + 24]438 mov cx, [bp + 12] 436 439 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.es], cx 437 mov cx, [ ebp + 28]440 mov cx, [bp + 14] 438 441 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.ds], cx 439 mov cx, [ ebp + 32]442 mov cx, [bp + 16] 440 443 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.fs], cx 441 mov cx, [ ebp + 36]444 mov cx, [bp + 18] 442 445 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.gs], cx 443 lea eax, [ ebp + 40]446 lea eax, [bp + 20] 444 447 mov [ss:bx + BS3TRAPFRAME.uHandlerRsp], eax 445 448 jmp .iret_frame_done … … 464 467 sldt [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.ldtr] 465 468 test dx, dx 466 j z.save_286_control_registers469 jnz .save_286_control_registers 467 470 .save_386_control_registers: 468 471 CPU 386 … … 556 559 ; TSS specified sane values which got loaded during the task switch. 557 560 ; 558 ; @param dx Zero ( 1) (for 386+).561 ; @param dx Zero (0) for indicating 386+ to the common code. 559 562 ; 560 563 BS3_PROC_BEGIN _Bs3Trap16DoubleFaultHandler80386 … … 660 663 mov cx, [es:di + X86TSS16.ip] 661 664 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.rip], cx 662 mov [ ebp + 2], cx; For better call stacks.665 mov [bp + 2], cx ; For better call stacks. 663 666 mov cx, [eax + X86TSS16.cs] 664 667 mov [ss:bx + BS3TRAPFRAME.Ctx + BS3REGCTX.cs], cx … … 698 701 ; TSS specified sane values which got loaded during the task switch. 699 702 ; 700 ; @param dx Zero (0) (for 286).703 ; @param dx One (1) for indicating 386+ to the common code. 701 704 ; 702 705 BS3_PROC_BEGIN _Bs3Trap16DoubleFaultHandler80286 -
trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-cmn-RegCtxRestore.asm
r60000 r60002 57 57 %if TMPL_BITS == 16 58 58 mov ax, BS3DATA16 59 mov ax, es59 mov es, ax 60 60 lds bx, [bp + 4] 61 61 mov cx, [bp + 8] … … 103 103 104 104 .restore_16_bit_ancient: 105 int3 105 106 ; Some general registers. 106 107 mov si, [bx + BS3REGCTX.rsi] … … 146 147 mov ax, [bx + BS3REGCTX.ds] 147 148 stosw 148 mov ax, [bx + BS3REGCTX.rbp] 149 mov ax, [bx + BS3REGCTX.rbp] ; Restore esp as late as possible for better stacks. 149 150 stosw 150 151 mov ax, [bx + BS3REGCTX.rip] … … 169 170 170 171 .restore_full: 171 172 172 ; 173 173 ; 80386 or later. … … 224 224 225 225 ; TR - complicated because we need to clear the busy bit. ASSUMES GDT. 226 BS3_ONLY_64BIT_STMT hlt227 226 str ax 228 227 cmp ax, [xBX + BS3REGCTX.tr] … … 382 381 mov ebx, [xBX + BS3REGCTX.rbx] 383 382 384 popds383 o32 pop ds 385 384 pop ebp 386 385 iretd -
trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-mode-SwitchToPE16_V86.asm
r59984 r60002 67 67 ; Switch to v8086 mode (return address is already 16-bit). 68 68 ; 69 hlt70 69 extern _Bs3SwitchTo16BitV86_c16 71 70 jmp _Bs3SwitchTo16BitV86_c16 -
trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-mode-TestDoModes.c
r60000 r60002 172 172 { 173 173 bool const fDoV86Modes = true; 174 bool const fDoWeirdV86Modes = false;174 bool const fDoWeirdV86Modes = true; 175 175 uint16_t const uCpuDetected = BS3_DATA_NM(g_uBs3CpuDetected); 176 176 uint8_t const bCpuType = uCpuDetected & BS3CPU_TYPE_MASK; … … 192 192 Bs3TestSub(paEntries[i].pszSubTest); 193 193 194 #if 1195 194 if (paEntries[i].pfnDoRM) 196 195 { … … 362 361 Bs3TestFailedF("Error #%u (%#x) in %s!\n", bErrNo, bErrNo, BS3_DATA_NM(g_szBs3ModeName_lm32)); 363 362 } 364 #endif 363 365 364 if (paEntries[i].pfnDoLM64) 366 365 { -
trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.h
r60000 r60002 428 428 */ 429 429 #if ARCH_BITS == 16 430 # define BS3_MAKE_PROT_R0PTR_FROM_REAL(a_uSeg, a_off) BS3_ FP_MAKE(((a_uSeg) << 3) + BS3_SEL_TILED, a_off)430 # define BS3_MAKE_PROT_R0PTR_FROM_REAL(a_uSeg, a_off) BS3_MAKE_PROT_R0PTR_FROM_FLAT(((uint32_t)(a_uSeg) << 4) + (uint16_t)(a_off)) 431 431 #else 432 432 # define BS3_MAKE_PROT_R0PTR_FROM_REAL(a_uSeg, a_off) ( (void *)(uintptr_t)(((uint32_t)(a_uSeg) << 4) + (uint16_t)(a_off)) ) … … 1549 1549 } 1550 1550 1551 /** A set of standard protypes to go with #BS3TESTMODEENTRY_CMN. 1552 * @remark May need to \#pragma alias the c64 variant. */ 1553 #define BS3TESTMODE_PROTOTYPES_CMN(a_BaseNm) \ 1554 FNBS3TESTDOMODE RT_CONCAT(a_BaseNm, _c16); \ 1555 FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _c32); \ 1556 FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _c64) 1557 1551 1558 /** Produces a BS3TESTMODEENTRY initializer for a full set of mode test 1552 1559 * functions. */ … … 1565 1572 /*PP32*/ RT_CONCAT(a_BaseNm, _pp32), \ 1566 1573 /*PP32_16*/ RT_CONCAT(a_BaseNm, _pp32_16), \ 1567 /*PPV86*/ RT_CONCAT(a_BaseNm, _pp ev86), \1574 /*PPV86*/ RT_CONCAT(a_BaseNm, _ppv86), \ 1568 1575 /*PAE16*/ RT_CONCAT(a_BaseNm, _pae16), \ 1569 1576 /*PAE16_32*/ RT_CONCAT(a_BaseNm, _pae16_32), \ … … 1576 1583 /*LM64*/ RT_CONCAT(a_BaseNm, _lm64), \ 1577 1584 } 1585 1586 /** A set of standard protypes to go with #BS3TESTMODEENTRY_MODE. 1587 * @remark May need to \#pragma alias the lm64 variant. */ 1588 #define BS3TESTMODE_PROTOTYPES_MODE(a_BaseNm) \ 1589 FNBS3TESTDOMODE RT_CONCAT(a_BaseNm, _rm); \ 1590 FNBS3TESTDOMODE RT_CONCAT(a_BaseNm, _pe16); \ 1591 FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pe16_32); \ 1592 FNBS3TESTDOMODE RT_CONCAT(a_BaseNm, _pe16_v86); \ 1593 FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pe32); \ 1594 FNBS3TESTDOMODE RT_CONCAT(a_BaseNm, _pe32_16); \ 1595 FNBS3TESTDOMODE RT_CONCAT(a_BaseNm, _pev86); \ 1596 FNBS3TESTDOMODE RT_CONCAT(a_BaseNm, _pp16); \ 1597 FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pp16_32); \ 1598 FNBS3TESTDOMODE RT_CONCAT(a_BaseNm, _pp16_v86); \ 1599 FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pp32); \ 1600 FNBS3TESTDOMODE RT_CONCAT(a_BaseNm, _pp32_16); \ 1601 FNBS3TESTDOMODE RT_CONCAT(a_BaseNm, _ppv86); \ 1602 FNBS3TESTDOMODE RT_CONCAT(a_BaseNm, _pae16); \ 1603 FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pae16_32); \ 1604 FNBS3TESTDOMODE RT_CONCAT(a_BaseNm, _pae16_v86); \ 1605 FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _pae32); \ 1606 FNBS3TESTDOMODE RT_CONCAT(a_BaseNm, _pae32_16); \ 1607 FNBS3TESTDOMODE RT_CONCAT(a_BaseNm, _paev86); \ 1608 FNBS3TESTDOMODE RT_CONCAT(a_BaseNm, _lm16); \ 1609 FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _lm32); \ 1610 FNBS3TESTDOMODE BS3_FAR_CODE RT_CONCAT(a_BaseNm, _lm64) 1578 1611 1579 1612
Note:
See TracChangeset
for help on using the changeset viewer.