| Index: src/arm64/disasm-arm64.cc
|
| diff --git a/src/arm64/disasm-arm64.cc b/src/arm64/disasm-arm64.cc
|
| index 8e022b1690f6e1efe86b344ee4e654e37aeeea8e..ee0132cdc9a4214638783164d8e456ec30eb50fb 100644
|
| --- a/src/arm64/disasm-arm64.cc
|
| +++ b/src/arm64/disasm-arm64.cc
|
| @@ -914,12 +914,55 @@ void DisassemblingDecoder::VisitLoadStorePairOffset(Instruction* instr) {
|
| Format(instr, mnemonic, form);
|
| }
|
|
|
| +void DisassemblingDecoder::VisitLoadStoreExclusive(Instruction* instr) {
|
| + const char* mnemonic = "unimplemented";
|
| + const char* form = "'Wt, ['Xns]";
|
| + const char* form_x = "'Xt, ['Xns]";
|
| + const char* form_stx = "'Ws, 'Wt, ['Xns]";
|
| + const char* form_stx_x = "'Ws, 'Xt, ['Xns]";
|
| +
|
| + switch (instr->Mask(LoadStoreExclusiveMask)) {
|
| + case STXRB:
|
| + mnemonic = "stxrb";
|
| + form = form_stx;
|
| + break;
|
| + case LDXRB:
|
| + mnemonic = "ldxrb";
|
| + break;
|
| + case STXRH:
|
| + mnemonic = "stxrh";
|
| + form = form_stx;
|
| + break;
|
| + case LDXRH:
|
| + mnemonic = "ldxrh";
|
| + break;
|
| + case STXR_w:
|
| + mnemonic = "stxr";
|
| + form = form_stx;
|
| + break;
|
| + case LDXR_w:
|
| + mnemonic = "ldxr";
|
| + break;
|
| + case STXR_x:
|
| + mnemonic = "stxr";
|
| + form = form_stx_x;
|
| + break;
|
| + case LDXR_x:
|
| + mnemonic = "ldxr";
|
| + form = form_x;
|
| + break;
|
| + default:
|
| + form = "(LoadStoreExclusive)";
|
| + }
|
| + Format(instr, mnemonic, form);
|
| +}
|
| +
|
| void DisassemblingDecoder::VisitLoadStoreAcquireRelease(Instruction *instr) {
|
| const char *mnemonic = "unimplemented";
|
| - const char *form = "'Wt, ['Xn]";
|
| - const char *form_x = "'Xt, ['Xn]";
|
| - const char *form_stlx = "'Ws, 'Wt, ['Xn]";
|
| - const char *form_stlx_x = "'Ws, 'Xt, ['Xn]";
|
| + const char* form = "'Wt, ['Xns]";
|
| + const char* form_x = "'Xt, ['Xns]";
|
| + const char* form_stlx = "'Ws, 'Wt, ['Xns]";
|
| + const char* form_stlx_x = "'Ws, 'Xt, ['Xns]";
|
|
|
| switch (instr->Mask(LoadStoreAcquireReleaseMask)) {
|
| case LDAXR_b: mnemonic = "ldaxrb"; break;
|
| @@ -938,7 +981,8 @@ void DisassemblingDecoder::VisitLoadStoreAcquireRelease(Instruction *instr) {
|
| case STLXR_b: mnemonic = "stlxrb"; form = form_stlx; break;
|
| case STLXR_w: mnemonic = "stlxr"; form = form_stlx; break;
|
| case STLXR_x: mnemonic = "stlxr"; form = form_stlx_x; break;
|
| - default: form = "(LoadStoreAcquireReleaseMask)";
|
| + default:
|
| + form = "(LoadStoreAcquireRelease)";
|
| }
|
| Format(instr, mnemonic, form);
|
| }
|
|
|