mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-27 22:53:55 +08:00
powerpc: Rename current_stack_pointer() to current_stack_frame()
current_stack_pointer(), which was called __get_SP(), used to just
return the value in r1.
But that caused problems in some cases, so it was turned into a
function in commit bfe9a2cfe9
("powerpc: Reimplement __get_SP() as a
function not a define").
Because it's a function in a separate compilation unit to all its
callers, it has the effect of causing a stack frame to be created, and
then returns the address of that frame. This is good in some cases
like those described in the above commit, but in other cases it's
overkill, we just need to know what stack page we're on.
On some other arches current_stack_pointer is just a register global
giving the stack pointer, and we'd like to do that too. So rename our
current_stack_pointer() to current_stack_frame() to make that
possible.
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Reviewed-by: Christophe Leroy <christophe.leroy@c-s.fr>
Link: https://lore.kernel.org/r/20200220115141.2707-1-mpe@ellerman.id.au
This commit is contained in:
parent
22697da36d
commit
3d13e839e8
@ -32,7 +32,7 @@
|
|||||||
do { \
|
do { \
|
||||||
(regs)->result = 0; \
|
(regs)->result = 0; \
|
||||||
(regs)->nip = __ip; \
|
(regs)->nip = __ip; \
|
||||||
(regs)->gpr[1] = current_stack_pointer(); \
|
(regs)->gpr[1] = current_stack_frame(); \
|
||||||
asm volatile("mfmsr %0" : "=r" ((regs)->msr)); \
|
asm volatile("mfmsr %0" : "=r" ((regs)->msr)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
@ -1448,7 +1448,7 @@ static inline void mtsrin(u32 val, u32 idx)
|
|||||||
|
|
||||||
#define proc_trap() asm volatile("trap")
|
#define proc_trap() asm volatile("trap")
|
||||||
|
|
||||||
extern unsigned long current_stack_pointer(void);
|
extern unsigned long current_stack_frame(void);
|
||||||
|
|
||||||
extern unsigned long scom970_read(unsigned int address);
|
extern unsigned long scom970_read(unsigned int address);
|
||||||
extern void scom970_write(unsigned int address, unsigned long value);
|
extern void scom970_write(unsigned int address, unsigned long value);
|
||||||
|
@ -602,7 +602,7 @@ static inline void check_stack_overflow(void)
|
|||||||
#ifdef CONFIG_DEBUG_STACKOVERFLOW
|
#ifdef CONFIG_DEBUG_STACKOVERFLOW
|
||||||
long sp;
|
long sp;
|
||||||
|
|
||||||
sp = current_stack_pointer() & (THREAD_SIZE-1);
|
sp = current_stack_frame() & (THREAD_SIZE-1);
|
||||||
|
|
||||||
/* check for stack overflow: is there less than 2KB free? */
|
/* check for stack overflow: is there less than 2KB free? */
|
||||||
if (unlikely(sp < 2048)) {
|
if (unlikely(sp < 2048)) {
|
||||||
@ -647,7 +647,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_pointer() & ~(THREAD_SIZE - 1));
|
cursp = (void *)(current_stack_frame() & ~(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()];
|
||||||
|
|
||||||
|
@ -110,7 +110,7 @@ _GLOBAL(longjmp)
|
|||||||
li r3, 1
|
li r3, 1
|
||||||
blr
|
blr
|
||||||
|
|
||||||
_GLOBAL(current_stack_pointer)
|
_GLOBAL(current_stack_frame)
|
||||||
PPC_LL r3,0(r1)
|
PPC_LL r3,0(r1)
|
||||||
blr
|
blr
|
||||||
EXPORT_SYMBOL(current_stack_pointer)
|
EXPORT_SYMBOL(current_stack_frame)
|
||||||
|
@ -2051,7 +2051,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
|
|||||||
sp = (unsigned long) stack;
|
sp = (unsigned long) stack;
|
||||||
if (sp == 0) {
|
if (sp == 0) {
|
||||||
if (tsk == current)
|
if (tsk == current)
|
||||||
sp = current_stack_pointer();
|
sp = current_stack_frame();
|
||||||
else
|
else
|
||||||
sp = tsk->thread.ksp;
|
sp = tsk->thread.ksp;
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ void save_stack_trace(struct stack_trace *trace)
|
|||||||
{
|
{
|
||||||
unsigned long sp;
|
unsigned long sp;
|
||||||
|
|
||||||
sp = current_stack_pointer();
|
sp = current_stack_frame();
|
||||||
|
|
||||||
save_context_stack(trace, sp, current, 1);
|
save_context_stack(trace, sp, current, 1);
|
||||||
}
|
}
|
||||||
@ -71,7 +71,7 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (tsk == current)
|
if (tsk == current)
|
||||||
sp = current_stack_pointer();
|
sp = current_stack_frame();
|
||||||
else
|
else
|
||||||
sp = tsk->thread.ksp;
|
sp = tsk->thread.ksp;
|
||||||
|
|
||||||
@ -131,7 +131,7 @@ static int __save_stack_trace_tsk_reliable(struct task_struct *tsk,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (tsk == current)
|
if (tsk == current)
|
||||||
sp = current_stack_pointer();
|
sp = current_stack_frame();
|
||||||
else
|
else
|
||||||
sp = tsk->thread.ksp;
|
sp = tsk->thread.ksp;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user