Commit 532d43a7 authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman

powerpc/irq: Use current_stack_pointer in do_IRQ()

Until commit 7306e83c ("powerpc: Don't use CURRENT_THREAD_INFO to
find the stack"), the current stack base address was obtained by
calling current_thread_info(). That inline function was simply masking
out the value of r1.

In that commit, it was changed to using current_stack_pointer() (since
renamed current_stack_frame()), which is a heavier function as it is
an outline assembly function which cannot be inlined and which reads
the content of the stack at 0(r1).

Convert to using current_stack_pointer for geting r1 and masking out
its value to obtain the base address of the stack pointer as before.

Fixes: 7306e83c ("powerpc: Don't use CURRENT_THREAD_INFO to find the stack")
Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200220115141.2707-5-mpe@ellerman.id.au
parent 0dec6e1c
...@@ -648,7 +648,7 @@ void do_IRQ(struct pt_regs *regs) ...@@ -648,7 +648,7 @@ void do_IRQ(struct pt_regs *regs)
void *cursp, *irqsp, *sirqsp; void *cursp, *irqsp, *sirqsp;
/* Switch to the irq stack to handle this */ /* Switch to the irq stack to handle this */
cursp = (void *)(current_stack_frame() & ~(THREAD_SIZE - 1)); cursp = (void *)(current_stack_pointer & ~(THREAD_SIZE - 1));
irqsp = hardirq_ctx[raw_smp_processor_id()]; irqsp = hardirq_ctx[raw_smp_processor_id()];
sirqsp = softirq_ctx[raw_smp_processor_id()]; sirqsp = softirq_ctx[raw_smp_processor_id()];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment