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:
Justin Hibbits 2015-07-16 05:13:08 +00:00
parent 62145ff347
commit 96f3c2adbe
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=285620

View File

@ -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 */