diff options
| author | chedahub <2017000029@ushs.hs.kr> | 2025-11-03 16:00:05 +0900 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2025-11-03 12:49:02 -0500 |
| commit | 4bbf5434655da660322205b9db590c524bef4aa8 (patch) | |
| tree | 4b4caf289615689bc32d70cbc41feae4037c57ec /arch | |
| parent | 251799ddc71f7c4027d7317ec00c87189b499eb4 (diff) | |
Fix VLE I16L-form instructions to use rD instead of rA
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/powerpc/decode/vle32.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/arch/powerpc/decode/vle32.c b/arch/powerpc/decode/vle32.c index 3b67184c..f722c789 100644 --- a/arch/powerpc/decode/vle32.c +++ b/arch/powerpc/decode/vle32.c @@ -383,13 +383,12 @@ static void FillOperands32Vle(Instruction* instruction, uint32_t word32, uint64_ case PPC_ID_VLE_E_AND2IS: case PPC_ID_VLE_E_OR2I: case PPC_ID_VLE_E_OR2IS: - case PPC_ID_VLE_E_LIS: { uint32_t ui5_15 = word32 & 0x7ff; uint32_t ui0_4 = (word32 >> 16) & 0x1f; uint32_t ui = (ui0_4 << 11) | ui5_15; - PushRA(instruction, word32); + PushRD(instruction, word32); if (translate) PushRS(instruction, word32); @@ -399,6 +398,16 @@ static void FillOperands32Vle(Instruction* instruction, uint32_t word32, uint64_ break; } + case PPC_ID_VLE_E_LIS: + { + uint32_t ui5_15 = word32 & 0x7ff; + uint32_t ui0_4 = (word32 >> 16) & 0x1f; + uint32_t ui = (ui0_4 << 11) | ui5_15; + PushRD(instruction, word32); + PushUIMMValue(instruction, ui); + break; + } + // <op>[.] rA, rS, SH case PPC_ID_VLE_E_RLWIx: case PPC_ID_VLE_E_SLWIx: |
