summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/shared
diff options
context:
space:
mode:
authorTill Straumann <strauman@slac.stanford.edu>2011-07-28 01:13:20 +0000
committerTill Straumann <strauman@slac.stanford.edu>2011-07-28 01:13:20 +0000
commit38ccd6fa1a6d74bf92acec53a1b8255564aae460 (patch)
treedc8ac5411e75ca8df1eeefc6da7315d5ea9586b8 /c/src/lib/libbsp/powerpc/shared
parent2011-07-27 Joel Sherrill <joel.sherrilL@OARcorp.com> (diff)
downloadrtems-38ccd6fa1a6d74bf92acec53a1b8255564aae460.tar.bz2
2011-07-27 Till Straumann <strauman@slac.stanford.edu>
* shared/start/start.S, shared/start/preload.S: Make sure stack is 16-byte aligned and the TOS is tagged with a NULL pointer (used as a terminator when printing stack traces).
Diffstat (limited to 'c/src/lib/libbsp/powerpc/shared')
-rw-r--r--c/src/lib/libbsp/powerpc/shared/start/preload.S5
-rw-r--r--c/src/lib/libbsp/powerpc/shared/start/start.S6
2 files changed, 10 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/powerpc/shared/start/preload.S b/c/src/lib/libbsp/powerpc/shared/start/preload.S
index eda0ac0618..b0a6bc9edd 100644
--- a/c/src/lib/libbsp/powerpc/shared/start/preload.S
+++ b/c/src/lib/libbsp/powerpc/shared/start/preload.S
@@ -84,7 +84,7 @@
* if DESTINATION_ADDR is not 0
*/
#define KERNELBASE 0x0
-#define INITIAL_STACK 0x78 /* 8-byte aligned */
+#define INITIAL_STACK 0x70 /* 16-byte aligned */
#define CACHE_LINE_SIZE PPC_CACHE_ALIGNMENT /* autodetect doesn't work, see below */
#define ASSUME_RTEMS_INSTALLS_VECTORS /* assume we need not load vectors */
#define DONT_USE_R5_ENTRY /* always dynamically determine the address we're running from */
@@ -211,6 +211,9 @@ return_here:
/* setup initial stack for rtems early boot */
li r1,INITIAL_STACK
+ /* tag TOS with a NULL pointer (for stack trace) */
+ li r0, 0
+ stw r0, 0(r1)
/* disable the MMU and fire up rtems */
mfmsr r0
ori r0,r0,MSR_IR|MSR_DR|MSR_IP|MSR_ME
diff --git a/c/src/lib/libbsp/powerpc/shared/start/start.S b/c/src/lib/libbsp/powerpc/shared/start/start.S
index a2f233c138..5f0f4e5f9a 100644
--- a/c/src/lib/libbsp/powerpc/shared/start/start.S
+++ b/c/src/lib/libbsp/powerpc/shared/start/start.S
@@ -130,6 +130,12 @@ enter_C_code:
li r0, (CPU_STACK_ALIGNMENT-1)
andc r1, r9, r0
/*
+ * Tag TOS with a NULL (terminator for stack dump)
+ */
+ li r0, 0
+ stw r0, 0(r1)
+
+ /*
* We are now in a environment that is totally independent from
* bootloader setup.
*/