Page MenuHomeFreeBSD

D61519.1794691298.diff
No OneTemporary

Authored By
Unknown
Size
899 B
Referenced Files
None
Subscribers
None

D61519.1794691298.diff

diff --git a/sys/powerpc/powerpc/exec_machdep.c b/sys/powerpc/powerpc/exec_machdep.c
--- a/sys/powerpc/powerpc/exec_machdep.c
+++ b/sys/powerpc/powerpc/exec_machdep.c
@@ -213,11 +213,7 @@
sfp = (caddr_t)&sf;
sfpsize = sizeof(sf);
#ifdef __powerpc64__
- /*
- * 64-bit PPC defines a 512 byte red zone below
- * the existing stack (ELF ABI v2 §2.2.2.4)
- */
- rndfsize = 512 + roundup(sizeof(sf), 48);
+ rndfsize = roundup(sizeof(sf), 48);
#else
rndfsize = roundup(sizeof(sf), 16);
#endif
@@ -252,6 +248,14 @@
usfp = (void *)(((uintptr_t)td->td_sigstk.ss_sp +
td->td_sigstk.ss_size - rndfsize) & ~0xFul);
} else {
+ #ifdef __powerpc64__
+ /*
+ * 64-bit PPC defines a 512 byte red zone below
+ * the existing stack (ELF ABI v2 §2.2.2.4)
+ */
+ if (!SV_PROC_FLAG(p, SV_ILP32))
+ sp -= 512;
+ #endif
usfp = (void *)((sp - rndfsize) & ~0xFul);
}

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 14, 9:21 PM (5 h, 27 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41731611
Default Alt Text
D61519.1794691298.diff (899 B)

Event Timeline