summaryrefslogtreecommitdiff
path: root/arch/arm64/disassembler/decode_scratchpad.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm64/disassembler/decode_scratchpad.c')
-rw-r--r--arch/arm64/disassembler/decode_scratchpad.c9
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)