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.
This commit is contained in:
parent
62145ff347
commit
96f3c2adbe
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=285620
@ -842,11 +842,7 @@ CNAME(dblow):
|
|||||||
mflr %r1 /* save LR */
|
mflr %r1 /* save LR */
|
||||||
mtsprg2 %r1 /* And then in SPRG2 */
|
mtsprg2 %r1 /* And then in SPRG2 */
|
||||||
|
|
||||||
nop /* Begin branching to generictrap */
|
ld %r1, TRAP_GENTRAP(0) /* Get branch address */
|
||||||
bl 9f
|
|
||||||
.llong generictrap
|
|
||||||
9: mflr %r1
|
|
||||||
ld %r1,0(%r1)
|
|
||||||
mtlr %r1
|
mtlr %r1
|
||||||
li %r1, 0 /* How to get the vector from LR */
|
li %r1, 0 /* How to get the vector from LR */
|
||||||
blrl /* Branch to generictrap */
|
blrl /* Branch to generictrap */
|
||||||
|
Loading…
Reference in New Issue
Block a user