powerpc: Rework runlatch code
This moves the inlines into system.h and changes the runlatch code to use the thread local flags (non-atomic) rather than the TIF flags (atomic) to keep track of the latch state. The code to turn it back on in an asynchronous interrupt is now simplified and partially inlined. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
@@ -1079,30 +1079,12 @@
|
||||
|
||||
#define proc_trap() asm volatile("trap")
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
|
||||
extern void ppc64_runlatch_on(void);
|
||||
extern void __ppc64_runlatch_off(void);
|
||||
|
||||
#define ppc64_runlatch_off() \
|
||||
do { \
|
||||
if (cpu_has_feature(CPU_FTR_CTRL) && \
|
||||
test_thread_flag(TIF_RUNLATCH)) \
|
||||
__ppc64_runlatch_off(); \
|
||||
} while (0)
|
||||
#define __get_SP() ({unsigned long sp; \
|
||||
asm volatile("mr %0,1": "=r" (sp)); sp;})
|
||||
|
||||
extern unsigned long scom970_read(unsigned int address);
|
||||
extern void scom970_write(unsigned int address, unsigned long value);
|
||||
|
||||
#else
|
||||
#define ppc64_runlatch_on()
|
||||
#define ppc64_runlatch_off()
|
||||
|
||||
#endif /* CONFIG_PPC64 */
|
||||
|
||||
#define __get_SP() ({unsigned long sp; \
|
||||
asm volatile("mr %0,1": "=r" (sp)); sp;})
|
||||
|
||||
struct pt_regs;
|
||||
|
||||
extern void ppc_save_regs(struct pt_regs *regs);
|
||||
|
Reference in New Issue
Block a user