summaryrefslogtreecommitdiff
path: root/src/setjmp/powerpc
AgeCommit message (Collapse)AuthorFilesLines
2023-02-11powerpc-sf longjmp clobbering of val argumentRich Felker1-4/+4
the logic to check hwcap for SPE register file inadvertently clobbered the val argument before use. switch to a different work register so this doesn't happen.
2021-11-29fix hwcap access in powerpc-sf setjmp/longjmpRich Felker2-2/+2
commit 7be59733d71ada3a32a98622507399253f1d5e48 introduced the hwcap-based branches to support the SPE FPU, but wrongly coded them as bitwise tests on the computed address of __hwcap, not a value loaded from that address. replace the add with indexed load to fix it.
2021-09-23add SPE FPU support to powerpc-sfRich Felker2-2/+62
When the soft-float ABI for PowerPC was added in commit 5a92dd95c77cee81755f1a441ae0b71e3ae2bcdb, with Freescale cpus using the alternative SPE FPU as the main use case, it was noted that we could probably support hard float on them, but that it would involve determining some difficult ABI constraints. This commit is the completion of that work. The Power-Arch-32 ABI supplement defines the ABI profiles, and indeed ATR-SPE is built on ATR-SOFT-FLOAT. But setjmp/longjmp compatibility are problematic for the same reason they're problematic on ARM, where optional float-related parts of the register file are "call-saved if present". This requires testing __hwcap, which is now done. In keeping with the existing powerpc-sf subarch definition, which did not have fenv, the fenv macros are not defined for SPE and the SPEFSCR control register is left (and assumed to start in) the default mode.
2016-03-06add powerpc soft-float supportFelix Fietkau2-16/+22
Some PowerPC CPUs (e.g. Freescale MPC85xx) have a completely different instruction set for floating point operations (SPE). Executing regular PowerPC floating point instructions results in "Illegal instruction" errors. Make it possible to run these devices in soft-float mode.
2015-04-19remove possible-textrels from powerpc asmRich Felker1-0/+3
these are perfectly fine with ld-time symbol binding, but otherwise result in textrels. they cannot be replaced with @PLT jump targets because the PLT thunks require a GOT register to be setup, so use a hidden alias instead.
2012-11-23fix powerpc setjmp/longjmp to save/restore float regs; enlarge/align jmp_bufRich Felker2-0/+36
2012-11-14fix indention with spaces in powerpc asmRich Felker2-10/+10
2012-11-13PPC port cleaned up, static linking works well now.rofl0r2-0/+87