164c164
< uint32_t addr = 0;
---
> int64_t addr = 0;
175,176c175,176
< microOps[i++] = new MicroLdrFpUop(machInst, vd++, rn,
< tempUp, addr + 4);
---
> microOps[i++] = new MicroLdrFpUop(machInst, vd++, rn, tempUp,
> addr + (up ? 4 : -4));
181,182c181,182
< microOps[i++] = new MicroStrFpUop(machInst, vd++, rn,
< tempUp, addr + 4);
---
> microOps[i++] = new MicroStrFpUop(machInst, vd++, rn, tempUp,
> addr + (up ? 4 : -4));
188c188
< if (addr == 0) {
---
> if (addr <= 0) {
189a190
> addr = -addr;