VirtualBox

Changeset 66119 in vbox


Ignore:
Timestamp:
Mar 15, 2017 7:23:47 PM (8 years ago)
Author:
vboxsync
Message:

bs3-cpu-generated-1: Implemented testing instructions taking rAX,Iz as operands.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c

    r66118 r66119  
    657657            break;
    658658
     659        case BS3CG1ENC_FIXED_rAX_Iz:
     660            if (iEncoding == 0)
     661            {
     662                off = Bs3Cg1InsertOpcodes(pThis, 0);
     663                pThis->aOperands[1].off = (uint8_t)off;
     664                if (BS3_MODE_IS_16BIT_CODE(pThis->bMode))
     665                {
     666                    *(uint16_t *)&pThis->abCurInstr[off] = UINT16_MAX;
     667                    off += 2;
     668                    pThis->aOperands[0].cbOp = 2;
     669                    pThis->aOperands[1].cbOp = 2;
     670                    pThis->cBitsOp = 16;
     671                }
     672                else
     673                {
     674                    *(uint32_t *)&pThis->abCurInstr[off] = UINT32_MAX;
     675                    off += 4;
     676                    pThis->aOperands[0].cbOp = 4;
     677                    pThis->aOperands[1].cbOp = 4;
     678                    pThis->cBitsOp = 32;
     679                }
     680            }
     681            else if (iEncoding == 1 && (g_uBs3CpuDetected & BS3CPU_TYPE_MASK) >= BS3CPU_80386)
     682            {
     683                pThis->abCurInstr[0] = P_OZ;
     684                off = Bs3Cg1InsertOpcodes(pThis, 1);
     685                pThis->aOperands[1].off = (uint8_t)off;
     686                if (!BS3_MODE_IS_16BIT_CODE(pThis->bMode))
     687                {
     688                    *(uint16_t *)&pThis->abCurInstr[off] = UINT16_MAX;
     689                    off += 2;
     690                    pThis->aOperands[0].cbOp = 2;
     691                    pThis->aOperands[1].cbOp = 2;
     692                    pThis->cBitsOp = 16;
     693                }
     694                else
     695                {
     696                    *(uint32_t *)&pThis->abCurInstr[off] = UINT32_MAX;
     697                    off += 4;
     698                    pThis->aOperands[0].cbOp = 4;
     699                    pThis->aOperands[1].cbOp = 4;
     700                    pThis->cBitsOp = 32;
     701                }
     702            }
     703            else if (iEncoding == 2 && BS3_MODE_IS_64BIT_CODE(pThis->bMode))
     704            {
     705                pThis->abCurInstr[0] = REX_W___;
     706                off = Bs3Cg1InsertOpcodes(pThis, 1);
     707                pThis->aOperands[1].off = (uint8_t)off;
     708                *(uint32_t *)&pThis->abCurInstr[off] = UINT32_MAX;
     709                off += 4;
     710                pThis->aOperands[0].cbOp = 8;
     711                pThis->aOperands[1].cbOp = 4;
     712                pThis->cBitsOp = 64;
     713            }
     714            else
     715                break;
     716            pThis->cbCurInstr = off;
     717            iEncoding++;
     718            break;
     719
    659720        case BS3CG1ENC_MODRM_Ev_Gv:
    660721        case BS3CG1ENC_MODRM_Gv_Ev:
    661         case BS3CG1ENC_FIXED_rAX_Iz:
    662722            break;
    663723
     
    13421402
    13431403    Bs3TestSubDone();
     1404#if 0
     1405    Bs3TestTerm();
     1406    Bs3Shutdown();
     1407#endif
    13441408
    13451409    return 0;
Note: See TracChangeset for help on using the changeset viewer.

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