vbox的更動 67006 路徑 trunk/src/VBox/ValidationKit
- 時間撮記:
- 2017-5-22 上午11:36:46 (8 年 以前)
- 位置:
- trunk/src/VBox/ValidationKit/bootsectors
- 檔案:
-
- 修改 2 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c
r67005 r67006 2581 2581 2582 2582 2583 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_VEX_MODRM_Vd_WO_Ed_WZ(PBS3CG1STATE pThis, unsigned iEncoding) 2584 { 2585 unsigned off; 2586 switch (iEncoding) 2587 { 2588 case 0: 2589 pThis->aOperands[pThis->iRmOp ].enmLocation = pThis->aOperands[pThis->iRmOp].enmLocationReg; 2590 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/); 2591 off = Bs3Cg1InsertOpcodes(pThis, off); 2592 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0); 2593 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 0; 2594 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 1; 2595 break; 2596 case 1: 2597 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2598 off = Bs3Cg1InsertOpcodes(pThis, off); 2599 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 6, 2); 2600 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 2; 2601 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 6; 2602 break; 2603 case 2: 2604 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L-invalid*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2605 off = Bs3Cg1InsertOpcodes(pThis, off); 2606 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 6, 2); 2607 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 2; 2608 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 6; 2609 pThis->fInvalidEncoding = true; 2610 break; 2611 case 3: 2612 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xe /*~V-invalid*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2613 off = Bs3Cg1InsertOpcodes(pThis, off); 2614 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 6, 2); 2615 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 2; 2616 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 6; 2617 pThis->fInvalidEncoding = true; 2618 iEncoding += !BS3CG1_IS_64BIT_TARGET(pThis) ? 1 : 0; 2619 break; 2620 #if ARCH_BITS == 64 2621 case 4: 2622 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 0 /*~R*/, 1 /*~X*/, 0 /*~B*/, 0 /*W*/); 2623 off = Bs3Cg1InsertOpcodes(pThis, off); 2624 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 6, 2); 2625 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 2 + 8; 2626 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 6 + 8; 2627 break; 2628 #endif 2629 case 5: 2630 pThis->aOperands[pThis->iRmOp ].enmLocation = pThis->aOperands[pThis->iRmOp].enmLocationMem; 2631 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/); 2632 off = Bs3Cg1InsertOpcodes(pThis, off); 2633 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 4 /*iReg*/, 0 /*cbMisalign*/); 2634 break; 2635 case 6: 2636 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2637 off = Bs3Cg1InsertOpcodes(pThis, off); 2638 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 4 /*iReg*/, 0 /*cbMisalign*/); 2639 break; 2640 case 7: 2641 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2642 off = Bs3Cg1InsertOpcodes(pThis, off); 2643 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 4 /*iReg*/, 1 /*cbMisalign*/); 2644 iEncoding += !BS3CG1_IS_64BIT_TARGET(pThis) ? 2 : 0; 2645 break; 2646 #if ARCH_BITS == 64 2647 case 8: 2648 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 0 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/); 2649 off = Bs3Cg1InsertOpcodes(pThis, off); 2650 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 4+8 /*iReg*/, 0 /*cbMisalign*/); 2651 break; 2652 case 9: 2653 off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 0 /*~R*/); 2654 off = Bs3Cg1InsertOpcodes(pThis, off); 2655 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 5+8 /*iReg*/, 0 /*cbMisalign*/); 2656 iEncoding += 2; 2657 break; 2658 #endif 2659 case 10: /* VEX.W is ignored in 32-bit mode. flag? */ 2660 BS3_ASSERT(!BS3CG1_IS_64BIT_TARGET(pThis)); 2661 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W*/); 2662 off = Bs3Cg1InsertOpcodes(pThis, off); 2663 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 4 /*iReg*/, 0 /*cbMisalign*/); 2664 break; 2665 2666 default: 2667 return 0; 2668 } 2669 pThis->cbCurInstr = off; 2670 return iEncoding + 1; 2671 } 2672 2673 2674 /* Differs from Bs3Cg1EncodeNext_MODRM_Pq_WO_Eq_WNZ in that REX.R isn't ignored. */ 2675 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_VEX_MODRM_Vq_WO_Eq_WNZ(PBS3CG1STATE pThis, unsigned iEncoding) 2676 { 2677 #if ARCH_BITS == 64 2678 if (BS3CG1_IS_64BIT_TARGET(pThis)) 2679 { 2680 unsigned off; 2681 switch (iEncoding) 2682 { 2683 case 0: 2684 pThis->aOperands[pThis->iRmOp ].enmLocation = pThis->aOperands[pThis->iRmOp].enmLocationReg; 2685 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W*/); 2686 off = Bs3Cg1InsertOpcodes(pThis, off); 2687 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 6, 2); 2688 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 2; 2689 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 6; 2690 break; 2691 case 1: 2692 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L-invalid*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W*/); 2693 off = Bs3Cg1InsertOpcodes(pThis, off); 2694 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 6, 2); 2695 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 2; 2696 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 6; 2697 pThis->fInvalidEncoding = true; 2698 break; 2699 case 2: 2700 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xe /*~V-invalid*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W*/); 2701 off = Bs3Cg1InsertOpcodes(pThis, off); 2702 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 6, 2); 2703 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 2; 2704 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 6; 2705 pThis->fInvalidEncoding = true; 2706 break; 2707 case 3: 2708 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 0 /*~R*/, 1 /*~X*/, 0 /*~B*/, 1 /*W*/); 2709 off = Bs3Cg1InsertOpcodes(pThis, off); 2710 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 6, 2); 2711 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 2 + 8; 2712 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 6 + 8; 2713 break; 2714 case 4: 2715 pThis->aOperands[pThis->iRmOp ].enmLocation = pThis->aOperands[pThis->iRmOp].enmLocationMem; 2716 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W*/); 2717 off = Bs3Cg1InsertOpcodes(pThis, off); 2718 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 4 /*iReg*/, 0 /*cbMisalign*/); 2719 break; 2720 case 5: 2721 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W*/); 2722 off = Bs3Cg1InsertOpcodes(pThis, off); 2723 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 4 /*iReg*/, 1 /*cbMisalign*/); 2724 iEncoding += !BS3CG1_IS_64BIT_TARGET(pThis) ? 2 : 0; 2725 break; 2726 case 6: 2727 off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 0 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W*/); 2728 off = Bs3Cg1InsertOpcodes(pThis, off); 2729 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 4+8 /*iReg*/, 0 /*cbMisalign*/); 2730 break; 2731 2732 default: 2733 return 0; 2734 } 2735 pThis->cbCurInstr = off; 2736 return iEncoding + 1; 2737 } 2738 #endif 2739 return 0; 2740 } 2741 2742 2583 2743 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_VEX_MODRM_Vps_WO_Wps__OR__VEX_MODRM_Vpd_WO_Wpd(PBS3CG1STATE pThis, unsigned iEncoding) 2584 2744 { … … 4203 4363 4204 4364 #ifdef BS3CG1_WITH_VEX 4365 4366 case BS3CG1ENC_VEX_MODRM_Vd_WO_Ed_WZ: 4367 pThis->pfnEncoder = Bs3Cg1EncodeNext_VEX_MODRM_Vd_WO_Ed_WZ; 4368 pThis->iRegOp = 0; 4369 pThis->iRmOp = 1; 4370 pThis->aOperands[0].cbOp = 4; 4371 pThis->aOperands[1].cbOp = 4; 4372 pThis->aOperands[0].idxFieldBase = BS3CG1DST_XMM0_DW0_ZX; 4373 pThis->aOperands[1].idxFieldBase = BS3CG1DST_EAX; 4374 pThis->aOperands[0].enmLocation = BS3CG1OPLOC_CTX_ZX_VLMAX; 4375 pThis->aOperands[1].enmLocation = BS3CG1OPLOC_CTX; 4376 pThis->aOperands[1].enmLocationReg = BS3CG1OPLOC_CTX; 4377 pThis->aOperands[1].enmLocationMem = BS3CG1OPLOC_MEM; 4378 break; 4379 4380 case BS3CG1ENC_VEX_MODRM_Vq_WO_Eq_WNZ: 4381 pThis->pfnEncoder = Bs3Cg1EncodeNext_VEX_MODRM_Vq_WO_Eq_WNZ; 4382 pThis->iRegOp = 0; 4383 pThis->iRmOp = 1; 4384 pThis->aOperands[0].cbOp = 8; 4385 pThis->aOperands[1].cbOp = 8; 4386 pThis->aOperands[0].idxFieldBase = BS3CG1DST_XMM0_LO_ZX; 4387 pThis->aOperands[1].idxFieldBase = BS3CG1DST_RAX; 4388 pThis->aOperands[0].enmLocation = BS3CG1OPLOC_CTX_ZX_VLMAX; 4389 pThis->aOperands[1].enmLocation = BS3CG1OPLOC_CTX; 4390 pThis->aOperands[1].enmLocationReg = BS3CG1OPLOC_CTX; 4391 pThis->aOperands[1].enmLocationMem = BS3CG1OPLOC_MEM; 4392 break; 4205 4393 4206 4394 case BS3CG1ENC_VEX_MODRM_Vps_WO_Wps: -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1.h
r67004 r67006 78 78 BS3CG1OP_Usd, 79 79 BS3CG1OP_Usd_WO, 80 BS3CG1OP_Vd_WO, 80 81 BS3CG1OP_VdZx_WO, 81 82 BS3CG1OP_Vss, … … 165 166 BS3CG1ENC_MODRM_Mpd_WO_Vpd, 166 167 168 BS3CG1ENC_VEX_MODRM_Vd_WO_Ed_WZ, 167 169 BS3CG1ENC_VEX_MODRM_Vps_WO_Wps, 168 170 BS3CG1ENC_VEX_MODRM_Vpd_WO_Wpd, 169 171 BS3CG1ENC_VEX_MODRM_Vss_WO_HssHi_Uss, 170 172 BS3CG1ENC_VEX_MODRM_Vsd_WO_HsdHi_Usd, 173 BS3CG1ENC_VEX_MODRM_Vq_WO_Eq_WNZ, 171 174 BS3CG1ENC_VEX_MODRM_Vq_WO_HqHi_UqHi, 172 175 BS3CG1ENC_VEX_MODRM_Vq_WO_HqHi_Mq,
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器