diff options
author | Till Straumann <strauman@slac.stanford.edu> | 2011-07-28 01:13:20 +0000 |
---|---|---|
committer | Till Straumann <strauman@slac.stanford.edu> | 2011-07-28 01:13:20 +0000 |
commit | 38ccd6fa1a6d74bf92acec53a1b8255564aae460 (patch) | |
tree | dc8ac5411e75ca8df1eeefc6da7315d5ea9586b8 /c/src/lib/libbsp/powerpc/shared | |
parent | 2011-07-27 Joel Sherrill <joel.sherrilL@OARcorp.com> (diff) | |
download | rtems-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.S | 5 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/shared/start/start.S | 6 |
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. */ |