[rtems commit] bsps/powerpc: Add 64-bit SET_SELF_CPU_CONTROL

Sebastian Huber sebh at rtems.org
Tue Aug 22 14:54:05 UTC 2017


Module:    rtems
Branch:    master
Commit:    50382788b3fae3a6c7b32ffb2dd8282bc8ff9978
Changeset: http://git.rtems.org/rtems/commit/?id=50382788b3fae3a6c7b32ffb2dd8282bc8ff9978

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Mon Jul 31 15:25:12 2017 +0200

bsps/powerpc: Add 64-bit SET_SELF_CPU_CONTROL

Update #3082.

---

 c/src/lib/libbsp/powerpc/qoriq/start/start.S          |  4 +---
 c/src/lib/libbsp/powerpc/t32mppc/start/start.S        |  4 +---
 .../libcpu/powerpc/shared/include/powerpc-utility.h   | 19 ++++++++++++-------
 3 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/c/src/lib/libbsp/powerpc/qoriq/start/start.S b/c/src/lib/libbsp/powerpc/qoriq/start/start.S
index a0c7cc7..bcdbb0c 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/start/start.S
+++ b/c/src/lib/libbsp/powerpc/qoriq/start/start.S
@@ -165,9 +165,7 @@ _start:
 	/* Set small-data anchor */
 	LA	r13, _SDA_BASE_
 
-#ifdef RTEMS_SMP
-	SET_SELF_CPU_CONTROL	r4
-#endif
+	SET_SELF_CPU_CONTROL	r4, r5
 
 	blr
 
diff --git a/c/src/lib/libbsp/powerpc/t32mppc/start/start.S b/c/src/lib/libbsp/powerpc/t32mppc/start/start.S
index a7c47c1..ef4c507 100644
--- a/c/src/lib/libbsp/powerpc/t32mppc/start/start.S
+++ b/c/src/lib/libbsp/powerpc/t32mppc/start/start.S
@@ -39,9 +39,7 @@ _start:
 	li	r0, 0
 	stw	r0, 0(r1)
 
-#ifdef RTEMS_SMP
-	SET_SELF_CPU_CONTROL	r3
-#endif
+	SET_SELF_CPU_CONTROL	r3, r4
 
 	/* Copy fast text */
 	LWI	r3, bsp_section_fast_text_begin
diff --git a/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h b/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h
index 0fe340c..ea063d5 100644
--- a/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h
+++ b/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h
@@ -941,16 +941,21 @@ void ShowBATS(void);
 	mtmsr	\level
 .endm
 
+.macro SET_SELF_CPU_CONTROL reg_0, reg_1
 #if defined(RTEMS_SMP)
-.macro SET_SELF_CPU_CONTROL reg
 	/* Use Book E Processor ID Register (PIR) */
-	mfspr	\reg, 286
-	slwi	\reg, \reg, PER_CPU_CONTROL_SIZE_LOG2
-	addis	\reg, \reg, _Per_CPU_Information at ha
-	addi	\reg, \reg, _Per_CPU_Information at l
-	mtspr	PPC_PER_CPU_CONTROL_REGISTER, \reg
-.endm
+	mfspr	\reg_0, 286
+	slwi	\reg_0, \reg_0, PER_CPU_CONTROL_SIZE_LOG2
+#if defined(__powerpc64__)
+	LA	\reg_1, _Per_CPU_Information
+	add	\reg_0, \reg_0, \reg_1
+#else
+	addis	\reg_0, \reg_0, _Per_CPU_Information at ha
+	addi	\reg_0, \reg_0, _Per_CPU_Information at l
 #endif
+	mtspr	PPC_PER_CPU_CONTROL_REGISTER, \reg_0
+#endif
+.endm
 
 .macro GET_SELF_CPU_CONTROL reg
 #if defined(RTEMS_SMP)



More information about the vc mailing list