svn commit: r285620 - head/sys/powerpc/aim
Justin Hibbits
jhibbits at FreeBSD.org
Thu Jul 16 05:13:09 UTC 2015
Author: jhibbits
Date: Thu Jul 16 05:13:08 2015
New Revision: 285620
URL: https://svnweb.freebsd.org/changeset/base/285620
Log:
Fix userland program exception handling for powerpc64.
It appears that the linker will not handle 64-bit relocations at addresses that
are not aligned to 8-byte boundaries. Prior to this change the line:
.llong generictrap
was aligned to a 4-byte address, and the linker replaced that with an 8-byte
0x0. Aligning that address to 8 bytes caused the linker to generate the proper
relocation. As a follow-through, the dblow from trap_subr33.S used the code
sequence 'lwz %r1, TRAP_GENTRAP(0)', so this reproduces the analogue of that for
64-bit.
Modified:
head/sys/powerpc/aim/trap_subr64.S
Modified: head/sys/powerpc/aim/trap_subr64.S
==============================================================================
--- head/sys/powerpc/aim/trap_subr64.S Thu Jul 16 04:15:22 2015 (r285619)
+++ head/sys/powerpc/aim/trap_subr64.S Thu Jul 16 05:13:08 2015 (r285620)
@@ -842,11 +842,7 @@ CNAME(dblow):
mflr %r1 /* save LR */
mtsprg2 %r1 /* And then in SPRG2 */
- nop /* Begin branching to generictrap */
- bl 9f
- .llong generictrap
-9: mflr %r1
- ld %r1,0(%r1)
+ ld %r1, TRAP_GENTRAP(0) /* Get branch address */
mtlr %r1
li %r1, 0 /* How to get the vector from LR */
blrl /* Branch to generictrap */
More information about the svn-src-all
mailing list