Changeset 106004 in vbox for trunk/include
- Timestamp:
- Sep 10, 2024 11:51:08 AM (8 months ago)
- svn:sync-xref-src-repo-rev:
- 164750
- Location:
- trunk/include/VBox
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/dis-armv8.h
r105850 r106004 4 4 5 5 /* 6 * Copyright (C) 2023 Oracle and/or its affiliates.6 * Copyright (C) 2023-2024 Oracle and/or its affiliates. 7 7 * 8 8 * This file is part of VirtualBox base platform packages, as … … 49 49 /** @addtogroup grp_dis VBox Disassembler 50 50 * @{ */ 51 52 typedef enum DISOPPARAMARMV8REGTYPE 53 { 54 kDisOpParamArmV8RegType_Gpr_32Bit = 0, 55 kDisOpParamArmV8RegType_Gpr_64Bit, 56 kDisOpParamArmV8RegType_FpReg_Single, 57 kDisOpParamArmV8RegType_FpReg_Double, 58 kDisOpParamArmV8RegType_FpReg_Half, 59 kDisOpParamArmV8RegType_Simd_Scalar_64Bit, 60 kDisOpParamArmV8RegType_Simd_Scalar_128Bit, 61 kDisOpParamArmV8RegType_Simd_Vector 62 } DISOPPARAMARMV8REGTYPE; 63 51 64 /** 52 * GPRdefinition65 * Register definition 53 66 */ 54 67 typedef struct 55 68 { 56 /** Flag whether this is a 32-bit or 64-bit register. */57 bool f32Bit : 1;58 /** The register index. */59 RT_GCC_EXTENSION uint8_t idGpr : 7;69 /** The register type (DISOPPARAMARMV8REGTYPE). */ 70 uint8_t enmRegType; 71 /** The register ID. */ 72 uint8_t idReg; 60 73 } DISOPPARAMARMV8REG; 61 AssertCompileSize(DISOPPARAMARMV8REG, sizeof(uint 8_t));74 AssertCompileSize(DISOPPARAMARMV8REG, sizeof(uint16_t)); 62 75 /** Pointer to a disassembler GPR. */ 63 76 typedef DISOPPARAMARMV8REG *PDISOPPARAMARMV8REG; … … 75 88 /** Any extension applied (DISARMV8OPPARMEXTEND). */ 76 89 uint8_t enmExtend; 77 /** The registeroperand. */90 /** The operand. */ 78 91 union 79 92 { 80 93 /** General register index (DISGREG_XXX), applicable if DISUSE_REG_GEN32 81 94 * or DISUSE_REG_GEN64 is set in fUse. */ 82 DISOPPARAMARMV8REG Gpr;95 DISOPPARAMARMV8REG Reg; 83 96 /** IPRT System register encoding. */ 84 97 uint16_t idSysReg; 85 /** 86 * Conditional parameter (not a register I know but this saves us struct size and 87 * and these never occur at the same time, might get renamed if everything is done). 88 * 89 * DISARMV8INSTRCOND 90 */ 98 /** Conditional parameter - DISARMV8INSTRCOND */ 91 99 uint8_t enmCond; 92 } Reg; 100 /** PState field (for MSR) - DISARMV8INSTRPSTATE. */ 101 uint8_t enmPState; 102 } Op; 93 103 /** Register holding the offset. Applicable if DISUSE_INDEX is set in fUse. */ 94 104 DISOPPARAMARMV8REG GprIndex; … … 117 127 /** Condition flag for the instruction - kArmv8InstrCond_Al if not conditional instruction. */ 118 128 DISARMV8INSTRCOND enmCond; 129 /** Floating point type for floating point instructions. */ 130 DISARMV8INSTRFPTYPE enmFpType; 119 131 /** Operand size (for loads/stores primarily). */ 120 132 uint8_t cbOperand; -
trunk/include/VBox/disopcode-armv8.h
r105849 r106004 163 163 OP_ARMV8_A64_ESB, 164 164 OP_ARMV8_A64_EXTR, 165 OP_ARMV8_A64_FABS, 166 OP_ARMV8_A64_FADD, 167 OP_ARMV8_A64_FCCMP, 168 OP_ARMV8_A64_FCCMPE, 169 OP_ARMV8_A64_FCMP, 170 OP_ARMV8_A64_FCMPE, 171 OP_ARMV8_A64_FCSEL, 172 OP_ARMV8_A64_FCVT, 173 OP_ARMV8_A64_FCVTZS, 174 OP_ARMV8_A64_FCVTZU, 175 OP_ARMV8_A64_FDIV, 176 OP_ARMV8_A64_FMADD, 177 OP_ARMV8_A64_FMAX, 178 OP_ARMV8_A64_FMAXNM, 179 OP_ARMV8_A64_FMIN, 180 OP_ARMV8_A64_FMINNM, 181 OP_ARMV8_A64_FMOV, 182 OP_ARMV8_A64_FMSUB, 183 OP_ARMV8_A64_FMUL, 184 OP_ARMV8_A64_FNEG, 185 OP_ARMV8_A64_FNMADD, 186 OP_ARMV8_A64_FNMSUB, 187 OP_ARMV8_A64_FNMUL, 188 OP_ARMV8_A64_FRINT32X, 189 OP_ARMV8_A64_FRINT32Z, 190 OP_ARMV8_A64_FRINT64X, 191 OP_ARMV8_A64_FRINT64Z, 192 OP_ARMV8_A64_FRINTA, 193 OP_ARMV8_A64_FRINTI, 194 OP_ARMV8_A64_FRINTM, 195 OP_ARMV8_A64_FRINTN, 196 OP_ARMV8_A64_FRINTP, 197 OP_ARMV8_A64_FRINTX, 198 OP_ARMV8_A64_FRINTZ, 199 OP_ARMV8_A64_FSQRT, 200 OP_ARMV8_A64_FSUB, 165 201 OP_ARMV8_A64_GMI, 166 202 OP_ARMV8_A64_HINT, … … 371 407 OP_ARMV8_A64_SBFM, 372 408 OP_ARMV8_A64_SBFX, 409 OP_ARMV8_A64_SCVTF, 373 410 OP_ARMV8_A64_SDIV, 374 411 OP_ARMV8_A64_SETF8, … … 400 437 OP_ARMV8_A64_SEV, 401 438 OP_ARMV8_A64_SEVL, 439 OP_ARMV8_A64_SHL, 402 440 OP_ARMV8_A64_SMADDL, 403 441 OP_ARMV8_A64_SMC, … … 408 446 OP_ARMV8_A64_SMULH, 409 447 OP_ARMV8_A64_SMULL, 448 OP_ARMV8_A64_SQRSHRN, 449 OP_ARMV8_A64_SQSHL, 450 OP_ARMV8_A64_SQSHRN, 451 OP_ARMV8_A64_SRSHR, 452 OP_ARMV8_A64_SRSRA, 410 453 OP_ARMV8_A64_SSBB, 454 OP_ARMV8_A64_SSHR, 455 OP_ARMV8_A64_SSRA, 411 456 OP_ARMV8_A64_ST2G, 412 457 OP_ARMV8_A64_ST64B, … … 498 543 OP_ARMV8_A64_UBFM, 499 544 OP_ARMV8_A64_UBFX, 545 OP_ARMV8_A64_UCVTF, 500 546 OP_ARMV8_A64_UDF, 501 547 OP_ARMV8_A64_UDIV, … … 553 599 554 600 601 /** Armv8 PState fields. */ 602 typedef enum DISARMV8INSTRPSTATE 603 { 604 kDisArmv8InstrPState_SPSel = 0, 605 kDisArmv8InstrPState_DAIFSet, 606 kDisArmv8InstrPState_DAIFClr, 607 kDisArmv8InstrPState_UAO, 608 kDisArmv8InstrPState_PAN, 609 kDisArmv8InstrPState_ALLINT, 610 kDisArmv8InstrPState_PM, 611 kDisArmv8InstrPState_SSBS, 612 kDisArmv8InstrPState_DIT, 613 kDisArmv8InstrPState_SVCRSM, 614 kDisArmv8InstrPState_SVCRZA, 615 kDisArmv8InstrPState_SVCRSMZA, 616 kDisArmv8InstrPState_TCO 617 } DISARMV8INSTRPSTATE; 618 619 620 /** 621 * Floating point types. 622 */ 623 typedef enum DISARMV8INSTRFPTYPE 624 { 625 kDisArmv8InstrFpType_Invalid = 0, 626 kDisArmv8InstrFpType_Single, 627 kDisArmv8InstrFpType_Double, 628 kDisArmv8InstrFpType_Half 629 } DISARMV8INSTRFPTYPE; 630 631 555 632 /** @defgroup grp_dis_opparam_armv8 Opcode parameters (DISOPCODE::fParam1, 556 633 * DISOPCODE::fParam2, DISOPCODE::fParam3) … … 566 643 /** Parameter is not used. */ 567 644 kDisArmv8OpParmNone = 0, 568 /** Im ediate value. */645 /** Immediate value. */ 569 646 kDisArmv8OpParmImm, 570 647 /** Relative address immediate. */ 571 648 kDisArmv8OpParmImmRel, 572 /** General purpose register. */573 kDisArmv8OpParm Gpr,649 /** Register. */ 650 kDisArmv8OpParmReg, 574 651 /** System register. */ 575 652 kDisArmv8OpParmSysReg, … … 577 654 kDisArmv8OpParmAddrInGpr, 578 655 /** Conditional as parameter (CCMN/CCMP). */ 579 kDisArmv8OpParmCond 656 kDisArmv8OpParmCond, 657 /** PSTATE field (specific to MSR). */ 658 kDisArmv8OpParmPState 580 659 } DISARMV8OPPARM; 581 660
Note:
See TracChangeset
for help on using the changeset viewer.