<feed xmlns='http://www.w3.org/2005/Atom'>
<title>grovel/src/setjmp/powerpc, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>http://euandre.org/git/grovel/atom?h=main</id>
<link rel='self' href='http://euandre.org/git/grovel/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/'/>
<updated>2023-02-11T15:00:31Z</updated>
<entry>
<title>powerpc-sf longjmp clobbering of val argument</title>
<updated>2023-02-11T15:00:31Z</updated>
<author>
<name>Rich Felker</name>
<email>dalias@aerifal.cx</email>
</author>
<published>2023-02-11T14:43:29Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=115149c023485a69f5bff05efd5339c0c5f77798'/>
<id>urn:sha1:115149c023485a69f5bff05efd5339c0c5f77798</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>fix hwcap access in powerpc-sf setjmp/longjmp</title>
<updated>2021-11-29T22:41:43Z</updated>
<author>
<name>Rich Felker</name>
<email>dalias@aerifal.cx</email>
</author>
<published>2021-11-29T22:41:43Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=8274aaaaa1948c50c661aa32e21b3db27a5c0eab'/>
<id>urn:sha1:8274aaaaa1948c50c661aa32e21b3db27a5c0eab</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>add SPE FPU support to powerpc-sf</title>
<updated>2021-09-23T23:11:46Z</updated>
<author>
<name>Rich Felker</name>
<email>dalias@aerifal.cx</email>
</author>
<published>2021-09-23T23:11:46Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=7be59733d71ada3a32a98622507399253f1d5e48'/>
<id>urn:sha1:7be59733d71ada3a32a98622507399253f1d5e48</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>add powerpc soft-float support</title>
<updated>2016-03-06T22:03:01Z</updated>
<author>
<name>Felix Fietkau</name>
<email>nbd@openwrt.org</email>
</author>
<published>2016-01-25T12:20:52Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=5a92dd95c77cee81755f1a441ae0b71e3ae2bcdb'/>
<id>urn:sha1:5a92dd95c77cee81755f1a441ae0b71e3ae2bcdb</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>remove possible-textrels from powerpc asm</title>
<updated>2015-04-20T01:20:08Z</updated>
<author>
<name>Rich Felker</name>
<email>dalias@aerifal.cx</email>
</author>
<published>2015-04-20T01:20:08Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=cf1a9d9d16a79322df15b344a2617b79ebb12705'/>
<id>urn:sha1:cf1a9d9d16a79322df15b344a2617b79ebb12705</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>fix powerpc setjmp/longjmp to save/restore float regs; enlarge/align jmp_buf</title>
<updated>2012-11-23T19:30:58Z</updated>
<author>
<name>Rich Felker</name>
<email>dalias@aerifal.cx</email>
</author>
<published>2012-11-23T19:30:58Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=a50136dfe186a3ea3d78a4264187915ad16ab861'/>
<id>urn:sha1:a50136dfe186a3ea3d78a4264187915ad16ab861</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix indention with spaces in powerpc asm</title>
<updated>2012-11-14T19:27:51Z</updated>
<author>
<name>Rich Felker</name>
<email>dalias@aerifal.cx</email>
</author>
<published>2012-11-14T19:27:51Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=d1bf452d75bef2b098765fe94b9ccb24cdb6568b'/>
<id>urn:sha1:d1bf452d75bef2b098765fe94b9ccb24cdb6568b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>PPC port cleaned up, static linking works well now.</title>
<updated>2012-11-13T18:12:25Z</updated>
<author>
<name>rofl0r</name>
<email>retnyg@gmx.net</email>
</author>
<published>2012-11-09T22:36:55Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=1c8eb8bad791fe9d01d0d4ab77882db634fa933d'/>
<id>urn:sha1:1c8eb8bad791fe9d01d0d4ab77882db634fa933d</id>
<content type='text'>
</content>
</entry>
</feed>
