Nicholas Piggin [off-list ref] writes:
quoted hunk ↗ jump to hunk
The __replay_interrupt code is branched to with bl, but the caller is
returned to directly with rfid from the interrupt.
Instead return to a return stub that returns to the caller with blr,
which should do better with the return predictor.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/powerpc/kernel/exceptions-64s.S | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index a04ee0d7f88e..d55201625ea3 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -1586,7 +1586,7 @@ _GLOBAL(__replay_interrupt)
* we don't give a damn about, so we don't bother storing them.
*/
mfmsr r12
- mflr r11
+ LOAD_REG_ADDR(r11, __replay_interrupt_return)
Can you make it a local label, to make it clear nothing outside the file
returns to there, and to not clutter the symbol map?
cheers