summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-11-09 14:59:33 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-11-10 09:58:37 +0100
commit38a1449fd47be848cc40593abd40262e9ad2030d (patch)
treee559758984306acb4b4f0e0f88e9a133213557f0 /c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h
parentscore: Move _CPU_Get_current_per_CPU_control() (diff)
downloadrtems-38a1449fd47be848cc40593abd40262e9ad2030d.tar.bz2
powerpc: Add _CPU_Get_current_per_CPU_control()
Add _CPU_Get_current_per_CPU_control() on SMP configurations. Use SPRG0 for the current per-CPU control. This reduces the code size by three instructions and is slightly faster. Update #2805.
Diffstat (limited to 'c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h')
-rw-r--r--c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h9
1 files changed, 8 insertions, 1 deletions
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 ce4068fdd3..22cf46bea3 100644
--- a/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h
+++ b/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h
@@ -936,13 +936,20 @@ void ShowBATS(void);
mtmsr \level
.endm
-.macro GET_SELF_CPU_CONTROL reg
#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@ha
addi \reg, \reg, _Per_CPU_Information@l
+ mtspr PPC_PER_CPU_CONTROL_REGISTER, \reg
+.endm
+#endif
+
+.macro GET_SELF_CPU_CONTROL reg
+#if defined(RTEMS_SMP)
+ mfspr \reg, PPC_PER_CPU_CONTROL_REGISTER
#else
lis \reg, _Per_CPU_Information@h
ori \reg, \reg, _Per_CPU_Information@l