[DYNAREC] Avoid SIGBUS on FLD double
@@ -144,9 +144,16 @@ uintptr_t dynarecDD(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst,
addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 1023, 3);
VLDR_64(v1, ed, fixedaddress);
#else
- addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 255, 0);
- LDRD_IMM8(x2, ed, fixedaddress);
+ parity = getedparity(dyn, ninst, addr, nextop, 3);
+ if (parity) {
+ addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 1023, 3);
+ VLDR_64(v1, ed, fixedaddress);
+ } else {
+ addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 4095-4, 0);
+ LDR_IMM9(x2, ed, fixedaddress);
+ LDR_IMM9(x3, ed, fixedaddress + 4);
VMOVtoV_D(v1, x2, x3);
+ }
#endif
break;
case 1:
