mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-04 23:07:46 -04:00
sh2 drc, fix arm32 ld/st offset (minimum -255)
This commit is contained in:
parent
ca8b001b7f
commit
8d8357dded
1 changed files with 8 additions and 0 deletions
|
@ -2611,6 +2611,14 @@ static uptr split_address(uptr la, uptr mask, s32 *offs)
|
|||
uptr sign = (mask>>1) + 1; // sign bit in offset
|
||||
*offs = (la & mask) | (la & sign ? ~mask : 0); // offset part, sign extended
|
||||
la = (la & ~mask) + ((la & sign) << 1); // base part, corrected for offs sign
|
||||
#ifdef __arm__
|
||||
// arm32 offset has an add/sub flag and an unsigned 8 bit value, which only
|
||||
// allows values of [-255...255]. the value -256 thus can't be used.
|
||||
if (*offs + sign == 0) {
|
||||
la += sign;
|
||||
*offs += sign;
|
||||
}
|
||||
#endif
|
||||
return la;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue