svn commit: r352832 - head/sys/powerpc/booke
Justin Hibbits
jhibbits at FreeBSD.org
Sat Sep 28 03:33:07 UTC 2019
Author: jhibbits
Date: Sat Sep 28 03:33:07 2019
New Revision: 352832
URL: https://svnweb.freebsd.org/changeset/base/352832
Log:
powerpc/booke64: Align initial stack setting to match that of aim64's
Clang9/LLD9 appears to get quite confused with the instruction stream used
to obtain the tmpstack pointer, almost as though it thinks this is a C
function, so tries to optimize it. Since the AIM64 method doesn't use the
TOC to obtain the tmpstack, just follow that model, and lld won't get
confused.
Reported by: bdragon
MFC after: 2 weeks
Modified:
head/sys/powerpc/booke/locore.S
Modified: head/sys/powerpc/booke/locore.S
==============================================================================
--- head/sys/powerpc/booke/locore.S Sat Sep 28 02:49:46 2019 (r352831)
+++ head/sys/powerpc/booke/locore.S Sat Sep 28 03:33:07 2019 (r352832)
@@ -298,16 +298,18 @@ done_mapping:
ld %r1,0(%r2)
add %r2,%r1,%r2
mtspr SPR_SPRG8, %r2
+ nop
/* Get load offset */
ld %r31,-0x8000(%r2) /* First TOC entry is TOC base */
subf %r31,%r31,%r2 /* Subtract from real TOC base to get base */
/* Set up the stack pointer */
- addis %r1,%r2,TOC_REF(tmpstack)@ha
- ld %r1,TOC_REF(tmpstack)@l(%r1)
- addi %r1,%r1,TMPSTACKSZ-96
- add %r1,%r1,%r31
+ bl 1f
+ .llong tmpstack + TMPSTACKSZ - 96 - .
+1: mflr %r3
+ ld %r1,0(%r3)
+ add %r1,%r1,%r3
bl 1f
.llong _DYNAMIC-.
1: mflr %r3
More information about the svn-src-all
mailing list