summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/qoriq/start/start.S
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-08-10 11:39:43 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-08-22 16:27:02 +0200
commit43cc2b4daf1eb6e6aff2db26c07e84910cfea0cb (patch)
tree54ecc230bd97eaea8e8e99272def6bb95181dc09 /c/src/lib/libbsp/powerpc/qoriq/start/start.S
parentbsp/qoriq: Use LA to load an address (diff)
downloadrtems-43cc2b4daf1eb6e6aff2db26c07e84910cfea0cb.tar.bz2
bsp/qoriq: Add basic 64-bit support
Update #3082.
Diffstat (limited to 'c/src/lib/libbsp/powerpc/qoriq/start/start.S')
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/start/start.S19
1 files changed, 16 insertions, 3 deletions
diff --git a/c/src/lib/libbsp/powerpc/qoriq/start/start.S b/c/src/lib/libbsp/powerpc/qoriq/start/start.S
index 0a2af7a200..85bcb3afcb 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/start/start.S
+++ b/c/src/lib/libbsp/powerpc/qoriq/start/start.S
@@ -7,7 +7,7 @@
*/
/*
- * Copyright (c) 2010, 2016 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2010, 2017 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
@@ -115,8 +115,10 @@ _start:
LA r4, bsp_section_bss_size
bl bsp_start_zero
+#ifndef __powerpc64__
/* Set up EABI and SYSV environment */
bl __eabi
+#endif
/* Clear command line */
li r3, 0
@@ -124,7 +126,7 @@ _start:
bl boot_card
.Lcopy:
- cmpw r3, r4
+ PPC_REG_CMP r3, r4
beqlr
b memcpy
@@ -134,6 +136,13 @@ _start:
* the boot loader.
*/
+#ifdef __powerpc64__
+ mfmsr r0
+ oris r0, r0, MSR_CM >> 16
+ mtmsr r0
+ isync
+#endif
+
/* Disable decrementer */
mfspr r0, BOOKE_TCR
LWI r4, BOOKE_TCR_DIE
@@ -159,11 +168,15 @@ _start:
mtspr HID0, r0
#endif
+#ifdef __powerpc64__
+ LA32 r2, .TOC.
+#else
/* Invalidate TLS anchor */
li r2, 0
/* Set small-data anchor */
LA r13, _SDA_BASE_
+#endif
SET_SELF_CPU_CONTROL r4, r5
@@ -282,7 +295,7 @@ _start_thread:
/* Initialize start stack */
GET_SELF_CPU_CONTROL r3
- lwz r3, PER_CPU_INTERRUPT_STACK_HIGH(r3)
+ PPC_REG_LOAD r3, PER_CPU_INTERRUPT_STACK_HIGH(r3)
subi r1, r3, PPC_MINIMUM_STACK_FRAME_SIZE
clrrwi r1, r1, PPC_STACK_ALIGN_POWER
li r0, 0