diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-07-31 15:25:12 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-08-22 16:27:01 +0200 |
commit | 50382788b3fae3a6c7b32ffb2dd8282bc8ff9978 (patch) | |
tree | a502027f6b444d20b8ee1dc27acc510ba153fbd9 | |
parent | bsps/powerpc: Add 64-bit linker sections (diff) | |
download | rtems-50382788b3fae3a6c7b32ffb2dd8282bc8ff9978.tar.bz2 |
bsps/powerpc: Add 64-bit SET_SELF_CPU_CONTROL
Update #3082.
-rw-r--r-- | c/src/lib/libbsp/powerpc/qoriq/start/start.S | 4 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/t32mppc/start/start.S | 4 | ||||
-rw-r--r-- | c/src/lib/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 a0c7cc7993..bcdbb0c3b2 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 a7c47c1439..ef4c507187 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 0fe340cf6e..ea063d5ff1 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@ha - addi \reg, \reg, _Per_CPU_Information@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@ha + addi \reg_0, \reg_0, _Per_CPU_Information@l #endif + mtspr PPC_PER_CPU_CONTROL_REGISTER, \reg_0 +#endif +.endm .macro GET_SELF_CPU_CONTROL reg #if defined(RTEMS_SMP) |