summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorchedahub <2017000029@ushs.hs.kr>2025-11-01 01:03:09 +0900
committerAlexander Taylor <twobitwizard@gmail.com>2026-01-12 09:54:26 -0500
commitfb764042bc62f61c25dfdce14ccaf8dcb0437fc3 (patch)
tree4f700423416a0c97fd00951946f4cd395eb10933 /arch
parent36f37d301930347b92049c1535ed2a63557771a0 (diff)
Fix(ppcvle): Correct si_split16 immediate decoding for I16A-form instructions
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/decode/vle32.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/powerpc/decode/vle32.c b/arch/powerpc/decode/vle32.c
index f722c789..1be2272d 100644
--- a/arch/powerpc/decode/vle32.c
+++ b/arch/powerpc/decode/vle32.c
@@ -326,7 +326,7 @@ static uint32_t ComputeSCI8(uint32_t word32) {
static void FillOperands32Vle(Instruction* instruction, uint32_t word32, uint64_t address, bool translate)
{
- uint16_t ui0_4 = (word32 >> 16) & 0x1f;
+ uint16_t ui0_4 = (word32 >> 21) & 0x1f;
uint16_t ui5_15 = word32 & 0x7ff;
uint32_t ui_split16 = (ui0_4 << 11) | ui5_15;
int32_t si_split16 = (int32_t)(int16_t)(uint16_t)(ui_split16);