forked from Minki/linux
powerpc: add ISA v3.0 / v3.1 wait opcode macro
The wait instruction encoding changed between ISA v2.07 and ISA v3.0. In v3.1 the instruction gained a new field. Update the PPC_WAIT macro to the current encoding. Rename the older incompatible one with a _v203 suffix as it was introduced in v2.03 (the WC field was introduced in v2.07 but the kernel only uses WC=0). Reviewed-by: Segher Boessenkool <segher@kernel.crashing.org> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20220920122259.363092-1-npiggin@gmail.com
This commit is contained in:
parent
c84550203b
commit
dabeb572ad
@ -330,6 +330,7 @@
|
||||
#define __PPC_XSP(s) ((((s) & 0x1e) | (((s) >> 5) & 0x1)) << 21)
|
||||
#define __PPC_XTP(s) __PPC_XSP(s)
|
||||
#define __PPC_T_TLB(t) (((t) & 0x3) << 21)
|
||||
#define __PPC_PL(p) (((p) & 0x3) << 16)
|
||||
#define __PPC_WC(w) (((w) & 0x3) << 21)
|
||||
#define __PPC_WS(w) (((w) & 0x1f) << 11)
|
||||
#define __PPC_SH(s) __PPC_WS(s)
|
||||
@ -388,7 +389,8 @@
|
||||
#define PPC_RAW_RFDI (0x4c00004e)
|
||||
#define PPC_RAW_RFMCI (0x4c00004c)
|
||||
#define PPC_RAW_TLBILX(t, a, b) (0x7c000024 | __PPC_T_TLB(t) | __PPC_RA0(a) | __PPC_RB(b))
|
||||
#define PPC_RAW_WAIT(w) (0x7c00007c | __PPC_WC(w))
|
||||
#define PPC_RAW_WAIT_v203 (0x7c00007c)
|
||||
#define PPC_RAW_WAIT(w, p) (0x7c00003c | __PPC_WC(w) | __PPC_PL(p))
|
||||
#define PPC_RAW_TLBIE(lp, a) (0x7c000264 | ___PPC_RB(a) | ___PPC_RS(lp))
|
||||
#define PPC_RAW_TLBIE_5(rb, rs, ric, prs, r) \
|
||||
(0x7c000264 | ___PPC_RB(rb) | ___PPC_RS(rs) | ___PPC_RIC(ric) | ___PPC_PRS(prs) | ___PPC_R(r))
|
||||
@ -606,7 +608,8 @@
|
||||
#define PPC_TLBILX_ALL(a, b) PPC_TLBILX(0, a, b)
|
||||
#define PPC_TLBILX_PID(a, b) PPC_TLBILX(1, a, b)
|
||||
#define PPC_TLBILX_VA(a, b) PPC_TLBILX(3, a, b)
|
||||
#define PPC_WAIT(w) stringify_in_c(.long PPC_RAW_WAIT(w))
|
||||
#define PPC_WAIT_v203 stringify_in_c(.long PPC_RAW_WAIT_v203)
|
||||
#define PPC_WAIT(w, p) stringify_in_c(.long PPC_RAW_WAIT(w, p))
|
||||
#define PPC_TLBIE(lp, a) stringify_in_c(.long PPC_RAW_TLBIE(lp, a))
|
||||
#define PPC_TLBIE_5(rb, rs, ric, prs, r) \
|
||||
stringify_in_c(.long PPC_RAW_TLBIE_5(rb, rs, ric, prs, r))
|
||||
|
@ -75,7 +75,7 @@ _GLOBAL(\name)
|
||||
|
||||
.macro BOOK3E_IDLE_LOOP
|
||||
1:
|
||||
PPC_WAIT(0)
|
||||
PPC_WAIT_v203
|
||||
b 1b
|
||||
.endm
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user