summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/shared/start/start.S
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/powerpc/shared/start/start.S')
-rw-r--r--c/src/lib/libbsp/powerpc/shared/start/start.S12
1 files changed, 9 insertions, 3 deletions
diff --git a/c/src/lib/libbsp/powerpc/shared/start/start.S b/c/src/lib/libbsp/powerpc/shared/start/start.S
index fa4b1f4b1e..de7d097f49 100644
--- a/c/src/lib/libbsp/powerpc/shared/start/start.S
+++ b/c/src/lib/libbsp/powerpc/shared/start/start.S
@@ -106,11 +106,17 @@ enter_C_code:
* stack = &__rtems_end + 4096
*/
addis r9,r0, __stack-PPC_MINIMUM_STACK_FRAME_SIZE@ha
- addi r9,r9, __stack-PPC_MINIMUM_STACK_FRAME_SIZE@l
- mr r1, r9
+ addi r9,r9, __stack-PPC_MINIMUM_STACK_FRAME_SIZE@l
+ /*
+ * align initial stack
+ * (we hope that the bootloader stack was 16-byte aligned
+ * or we haven't used altivec yet...)
+ */
+ li r0, (CPU_STACK_ALIGNMENT-1)
+ andc r1, r9, r0
/*
* We are now in a environment that is totally independent from
- * bootloader setup.
+ * bootloader setup.
*/
/* pass result of 'save_boot_params' to 'boot_card' in R3 */
bl boot_card