ifdef out specific PPC64 stuff to allow building syscall_64.c on PPC32. Modify Makefile to always build syscall.o
Signed-off-by: Christophe Leroy <christophe.le...@c-s.fr> --- arch/powerpc/kernel/Makefile | 5 ++--- arch/powerpc/kernel/syscall.c | 10 ++++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile index 8cc3c831dccd..e4be425b7718 100644 --- a/arch/powerpc/kernel/Makefile +++ b/arch/powerpc/kernel/Makefile @@ -45,11 +45,10 @@ obj-y := cputable.o syscalls.o \ signal.o sysfs.o cacheinfo.o time.o \ prom.o traps.o setup-common.o \ udbg.o misc.o io.o misc_$(BITS).o \ - of_platform.o prom_parse.o + of_platform.o prom_parse.o syscall.o obj-y += ptrace/ obj-$(CONFIG_PPC64) += setup_64.o sys_ppc32.o signal_64.o \ - paca.o nvram_64.o firmware.o note.o \ - syscall.o + paca.o nvram_64.o firmware.o note.o obj-$(CONFIG_VDSO32) += vdso32/ obj-$(CONFIG_PPC_WATCHDOG) += watchdog.o obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o diff --git a/arch/powerpc/kernel/syscall.c b/arch/powerpc/kernel/syscall.c index 72f3d2f0a823..28bd43db8755 100644 --- a/arch/powerpc/kernel/syscall.c +++ b/arch/powerpc/kernel/syscall.c @@ -25,8 +25,10 @@ notrace long system_call_exception(long r3, long r4, long r5, unsigned long ti_flags; syscall_fn f; +#ifdef CONFIG_PPC64 if (IS_ENABLED(CONFIG_PPC_IRQ_SOFT_MASK_DEBUG)) BUG_ON(irq_soft_mask_return() != IRQS_ALL_DISABLED); +#endif trace_hardirqs_off(); /* finish reconciling */ @@ -34,7 +36,9 @@ notrace long system_call_exception(long r3, long r4, long r5, BUG_ON(!(regs->msr & MSR_RI)); BUG_ON(!(regs->msr & MSR_PR)); BUG_ON(!FULL_REGS(regs)); +#ifdef CONFIG_PPC64 BUG_ON(regs->softe != IRQS_ENABLED); +#endif account_cpu_user_entry(); @@ -56,7 +60,9 @@ notrace long system_call_exception(long r3, long r4, long r5, * frame, or if the unwinder was taught the first stack frame always * returns to user with IRQS_ENABLED, this store could be avoided! */ +#ifdef CONFIG_PPC64 regs->softe = IRQS_ENABLED; +#endif local_irq_enable(); @@ -148,7 +154,9 @@ notrace unsigned long syscall_exit_prepare(unsigned long r3, ret |= _TIF_RESTOREALL; } +#ifdef CONFIG_PPC64 again: +#endif local_irq_disable(); ti_flags = READ_ONCE(*ti_flagsp); while (unlikely(ti_flags & (_TIF_USER_WORK_MASK & ~_TIF_RESTORE_TM))) { @@ -191,6 +199,7 @@ notrace unsigned long syscall_exit_prepare(unsigned long r3, /* This pattern matches prep_irq_for_idle */ __hard_EE_RI_disable(); +#ifdef CONFIG_PPC64 if (unlikely(lazy_irq_pending())) { __hard_RI_enable(); trace_hardirqs_off(); @@ -201,6 +210,7 @@ notrace unsigned long syscall_exit_prepare(unsigned long r3, } local_paca->irq_happened = 0; irq_soft_mask_set(IRQS_ENABLED); +#endif #ifdef CONFIG_PPC_TRANSACTIONAL_MEM local_paca->tm_scratch = regs->msr; -- 2.25.0