diff options
author | Nicholas Piggin <npiggin@gmail.com> | 2017-08-29 21:36:35 +1000 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2017-08-29 21:38:47 +1000 |
commit | aafc8a8300ec0f20b99c72e5a10e22535cb99dd1 (patch) | |
tree | c034078cd696e9eed4522ebb7bacf9c074d6d4c5 /arch/powerpc/kernel/idle_book3s.S | |
parent | 82b7fcc0055dcc1aa9a7b51c7fbc31ad8d89fffa (diff) | |
download | linux-aafc8a8300ec0f20b99c72e5a10e22535cb99dd1.tar.gz linux-aafc8a8300ec0f20b99c72e5a10e22535cb99dd1.tar.bz2 linux-aafc8a8300ec0f20b99c72e5a10e22535cb99dd1.zip |
powerpc/64s: Move IDLE_STATE_ENTER_SEQ[_NORET] into idle_book3s.S
This macro is only used in idle_book3s.S, move it in there and add a
more descriptive comment.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
[mpe: Split out of larger patch and write change log]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/kernel/idle_book3s.S')
-rw-r--r-- | arch/powerpc/kernel/idle_book3s.S | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/idle_book3s.S b/arch/powerpc/kernel/idle_book3s.S index 4924647d964d..c3cc18573ca6 100644 --- a/arch/powerpc/kernel/idle_book3s.S +++ b/arch/powerpc/kernel/idle_book3s.S @@ -205,6 +205,23 @@ pnv_powersave_common: mtmsrd r7,0 bctr +/* + * This is the sequence required to execute idle instructions, as + * specified in ISA v2.07 (and earlier). MSR[IR] and MSR[DR] must be 0. + */ +#define IDLE_STATE_ENTER_SEQ(IDLE_INST) \ + /* Magic NAP/SLEEP/WINKLE mode enter sequence */ \ + std r0,0(r1); \ + ptesync; \ + ld r0,0(r1); \ +236: cmpd cr0,r0,r0; \ + bne 236b; \ + IDLE_INST; + +#define IDLE_STATE_ENTER_SEQ_NORET(IDLE_INST) \ + IDLE_STATE_ENTER_SEQ(IDLE_INST) \ + b . + .globl pnv_enter_arch207_idle_mode pnv_enter_arch207_idle_mode: #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE |