- offset = -offset;
- if (offset <= 0xfff)
- dtr_d(isLoad, srcDst, base, offset);
- else if (offset <= 0xfffff) {
- sub_r(ARMRegisters::S0, base, OP2_IMM | (offset >> 12) | (10 << 8));
- dtr_d(isLoad, srcDst, ARMRegisters::S0, offset & 0xfff);
+ if (offset >= -0xfff)
+ dtr_d(isLoad, srcDst, base, -offset | transferFlag);
+ else if (offset >= -0xfffff) {
+ sub_r(ARMRegisters::S0, base, OP2_IMM | (-offset >> 12) | (10 << 8));
+ dtr_d(isLoad, srcDst, ARMRegisters::S0, (-offset & 0xfff) | transferFlag);