diff options
Diffstat (limited to 'arch/arm64/disassembler/decode_scratchpad.c')
| -rw-r--r-- | arch/arm64/disassembler/decode_scratchpad.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/arm64/disassembler/decode_scratchpad.c b/arch/arm64/disassembler/decode_scratchpad.c index f869889f..d1160980 100644 --- a/arch/arm64/disassembler/decode_scratchpad.c +++ b/arch/arm64/disassembler/decode_scratchpad.c @@ -1086,9 +1086,12 @@ static const char* const reg_lookup_c[16] = {"c0", "c1", "c2", "c3", "c4", "c5", i++; #define ADD_OPERAND_FLOAT32(VALUE) \ - instr->operands[i].operandClass = FIMM32; \ - *(float*)&(instr->operands[i].immediate) = VALUE; \ - i++; + do { \ + float value = VALUE; \ + instr->operands[i].operandClass = FIMM32; \ + memcpy(&instr->operands[i].immediate, &value, sizeof(float)); \ + i++; \ + } while (0) #define ADD_OPERAND_CONST ADD_OPERAND_IMM64(const_, 0) #define ADD_OPERAND_FBITS ADD_OPERAND_IMM32(fbits, 0) |
