gnu/gcc/b65eb20e8fff1bc572a49fae254055ccfc7799aa AVR: Fix 64-bit signed fixed-point multiply
The recently added 64-bit signed fixed-point multiply
calculated |B| but didn't restore it, which is wrong
code when the caller reuses B after the multiplication
in the assumption that the respective callee-saved regs
are unaltered.
This patch stores the sign of B and unclobbers B by
negating it twice when it is negative, instead of only once.
libgcc/
* config/avr/lib1funcs-fixed.S (__mulQ64_work):
Restore B = R10..R17 to its orignal value.
1 file changed