VirtualBox

Changeset 106783 in vbox for trunk/src/VBox/Disassembler


Ignore:
Timestamp:
Oct 30, 2024 9:10:18 AM (4 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
165675
Message:

Disassembler: Decode Load/Store ordered instructions, bugref:10394

Location:
trunk/src/VBox/Disassembler
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Disassembler/DisasmTables-armv8-a64-ld-st.cpp.h

    r106782 r106783  
    11261126
    11271127
     1128/* C4.1.94.13 - Loads and Stores - Load/Store ordered */
     1129DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LdStOrdered)
     1130    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr32,        0,  5, 0 /*idxParam*/),
     1131    DIS_ARMV8_INSN_DECODE(kDisParmParseAddrGprSp,      5,  5, 1 /*idxParam*/),
     1132DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER_ALTERNATIVE(LdStOrdered64)
     1133    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr64,        0,  5, 0 /*idxParam*/),
     1134    DIS_ARMV8_INSN_DECODE(kDisParmParseAddrGprSp,      5,  5, 1 /*idxParam*/),
     1135DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(LdStOrdered)
     1136    DIS_ARMV8_OP(           0x089f7c00, "stllrb",          OP_ARMV8_A64_STLLRB,    DISOPTYPE_HARMLESS),                /* FEAT_LOR */
     1137    DIS_ARMV8_OP(           0x089ffc00, "stlrb",           OP_ARMV8_A64_STLRB,     DISOPTYPE_HARMLESS),
     1138    DIS_ARMV8_OP(           0x08df7c00, "ldlarb",          OP_ARMV8_A64_LDLARB,    DISOPTYPE_HARMLESS),                /* FEAT_LOR */
     1139    DIS_ARMV8_OP(           0x08dffc00, "ldarb",           OP_ARMV8_A64_LDARB,     DISOPTYPE_HARMLESS),
     1140    DIS_ARMV8_OP(           0x489f7c00, "stllrh",          OP_ARMV8_A64_STLLRH,    DISOPTYPE_HARMLESS),                /* FEAT_LOR */
     1141    DIS_ARMV8_OP(           0x489ffc00, "stlrh",           OP_ARMV8_A64_STLRH,     DISOPTYPE_HARMLESS),
     1142    DIS_ARMV8_OP(           0x48df7c00, "ldlarh",          OP_ARMV8_A64_LDLARH,    DISOPTYPE_HARMLESS),                /* FEAT_LOR */
     1143    DIS_ARMV8_OP(           0x48dffc00, "ldarh",           OP_ARMV8_A64_LDARH,     DISOPTYPE_HARMLESS),
     1144    DIS_ARMV8_OP(           0x889f7c00, "stllr",           OP_ARMV8_A64_STLLR,     DISOPTYPE_HARMLESS),                /* FEAT_LOR */
     1145    DIS_ARMV8_OP(           0x889ffc00, "stlr",            OP_ARMV8_A64_STLR,      DISOPTYPE_HARMLESS),
     1146    DIS_ARMV8_OP(           0x88df7c00, "ldlar",           OP_ARMV8_A64_LDLAR,     DISOPTYPE_HARMLESS),                /* FEAT_LOR */
     1147    DIS_ARMV8_OP(           0x88dffc00, "ldar",            OP_ARMV8_A64_LDAR,      DISOPTYPE_HARMLESS),
     1148    DIS_ARMV8_OP_ALT_DECODE(0xc89f7c00, "stllr",           OP_ARMV8_A64_STLLR,     DISOPTYPE_HARMLESS, LdStOrdered64), /* FEAT_LOR */
     1149    DIS_ARMV8_OP_ALT_DECODE(0xc89ffc00, "stlr",            OP_ARMV8_A64_STLR,      DISOPTYPE_HARMLESS, LdStOrdered64),
     1150    DIS_ARMV8_OP_ALT_DECODE(0xc8df7c00, "ldlar",           OP_ARMV8_A64_LDLAR,     DISOPTYPE_HARMLESS, LdStOrdered64), /* FEAT_LOR */
     1151    DIS_ARMV8_OP_ALT_DECODE(0xc8dffc00, "ldar",            OP_ARMV8_A64_LDAR,      DISOPTYPE_HARMLESS, LdStOrdered64),
     1152DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END(LdStOrdered, 0xfffffc00 /*fFixedInsn*/,
     1153                                       kDisArmV8OpcDecodeCollate,
     1154                            /* o0 */     RT_BIT_32(15)
     1155                            /* L  */   | RT_BIT_32(22)
     1156                            /* size */ | RT_BIT_32(30) | RT_BIT_32(31), 15);
     1157
     1158
    11281159/* C4.1.94.14 - Loads and Stores - Compare and swap */
    11291160DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LdStCas)
     
    11651196 */
    11661197DIS_ARMV8_DECODE_MAP_DEFINE_BEGIN(LdStOrdered_Cas)
    1167     DIS_ARMV8_DECODE_MAP_INVALID_ENTRY, /** @todo DIS_ARMV8_DECODE_MAP_ENTRY(LdStOrdered), */
     1198    DIS_ARMV8_DECODE_MAP_ENTRY(LdStOrdered),
    11681199    DIS_ARMV8_DECODE_MAP_ENTRY(LdStCas),
    11691200DIS_ARMV8_DECODE_MAP_DEFINE_END_SINGLE_BIT(LdStOrdered_Cas, 21);
  • trunk/src/VBox/Disassembler/testcase/tstDisasmArmv8-1-asm.S

    r106782 r106783  
    38433843
    38443844        ;
     3845        ; Load/store ordered
     3846        ;
     3847
     3848        stllrb w0,  [x1]
     3849        stllrb wzr, [sp]
     3850
     3851        stlrb w0,  [x1]
     3852        stlrb wzr, [sp]
     3853
     3854        ldlarb w0,  [x1]
     3855        ldlarb wzr, [sp]
     3856
     3857        ldarb w0,  [x1]
     3858        ldarb wzr, [sp]
     3859
     3860        stllrh w0,  [x1]
     3861        stllrh wzr, [sp]
     3862
     3863        stlrh w0,  [x1]
     3864        stlrh wzr, [sp]
     3865
     3866        ldlarh w0,  [x1]
     3867        ldlarh wzr, [sp]
     3868
     3869        ldarh w0,  [x1]
     3870        ldarh wzr, [sp]
     3871
     3872        stllr w0,  [x1]
     3873        stllr wzr, [sp]
     3874
     3875        stlr w0,  [x1]
     3876        stlr wzr, [sp]
     3877
     3878        ldlar w0,  [x1]
     3879        ldlar wzr, [sp]
     3880
     3881        ldar w0,  [x1]
     3882        ldar wzr, [sp]
     3883
     3884        stllr x0,  [x1]
     3885        stllr xzr, [sp]
     3886
     3887        stlr x0,  [x1]
     3888        stlr xzr, [sp]
     3889
     3890        ldlar x0,  [x1]
     3891        ldlar xzr, [sp]
     3892
     3893        ldar x0,  [x1]
     3894        ldar xzr, [sp]
     3895
     3896        ;
    38453897        ; Keep last so the testcase can catch errors in
    38463898        ; the disassembly of the last instruction.
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