Commit 76222808 authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman

powerpc: Move C prototypes out of asm-prototypes.h

We originally added asm-prototypes.h in commit 42f5b4ca ("powerpc:
Introduce asm-prototypes.h"). It's purpose was for prototypes of C
functions that are only called from asm, in order to fix sparse
warnings about missing prototypes.

A few months later Nick added a different use case in
commit 4efca4ed ("kbuild: modversions for EXPORT_SYMBOL() for asm")
for C prototypes for exported asm functions. This is basically the
inverse of our original usage.

Since then we've added various prototypes to asm-prototypes.h for both
reasons, meaning we now need to unstitch it all.

Dispatch prototypes of C functions into relevant headers and keep
only the prototypes for functions defined in assembly.

For the time being, leave prom_init() there because moving it
into asm/prom.h or asm/setup.h conflicts with
drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowrom.o
This will be fixed later by untaggling asm/pci.h and asm/prom.h
or by renaming the function in shadowrom.c
Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/62d46904eca74042097acf4cb12c175e3067f3d1.1646413435.git.christophe.leroy@csgroup.eu
parent a4abd55a
...@@ -19,19 +19,6 @@ ...@@ -19,19 +19,6 @@
#include <uapi/asm/ucontext.h> #include <uapi/asm/ucontext.h>
/* SMP */
extern struct task_struct *secondary_current;
void start_secondary(void *unused);
/* kexec */
struct kimage;
void kexec_copy_flush(struct kimage *image);
/* pseries hcall tracing */
extern struct static_key hcall_tracepoint_key;
void __trace_hcall_entry(unsigned long opcode, unsigned long *args);
void __trace_hcall_exit(long opcode, long retval, unsigned long *retbuf);
/* Ultravisor */ /* Ultravisor */
#if defined(CONFIG_PPC_POWERNV) || defined(CONFIG_PPC_SVM) #if defined(CONFIG_PPC_POWERNV) || defined(CONFIG_PPC_SVM)
long ucall_norets(unsigned long opcode, ...); long ucall_norets(unsigned long opcode, ...);
...@@ -47,43 +34,12 @@ int64_t __opal_call(int64_t a0, int64_t a1, int64_t a2, int64_t a3, ...@@ -47,43 +34,12 @@ int64_t __opal_call(int64_t a0, int64_t a1, int64_t a2, int64_t a3,
int64_t a4, int64_t a5, int64_t a6, int64_t a7, int64_t a4, int64_t a5, int64_t a6, int64_t a7,
int64_t opcode, uint64_t msr); int64_t opcode, uint64_t msr);
/* VMX copying */
int enter_vmx_usercopy(void);
int exit_vmx_usercopy(void);
int enter_vmx_ops(void);
void *exit_vmx_ops(void *dest);
/* signals, syscalls and interrupts */
#ifdef CONFIG_PPC32
int
ppc_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
struct __kernel_old_timeval __user *tvp);
unsigned long __init early_init(unsigned long dt_ptr);
void __init machine_init(u64 dt_ptr);
#endif
long system_call_exception(long r3, long r4, long r5, long r6, long r7, long r8, unsigned long r0, struct pt_regs *regs);
notrace unsigned long syscall_exit_prepare(unsigned long r3, struct pt_regs *regs, long scv);
notrace unsigned long interrupt_exit_user_prepare(struct pt_regs *regs);
notrace unsigned long interrupt_exit_kernel_prepare(struct pt_regs *regs);
#ifdef CONFIG_PPC64
unsigned long syscall_exit_restart(unsigned long r3, struct pt_regs *regs);
unsigned long interrupt_exit_user_restart(struct pt_regs *regs);
unsigned long interrupt_exit_kernel_restart(struct pt_regs *regs);
#endif
long ppc_fadvise64_64(int fd, int advice, u32 offset_high, u32 offset_low,
u32 len_high, u32 len_low);
/* prom_init (OpenFirmware) */ /* prom_init (OpenFirmware) */
unsigned long __init prom_init(unsigned long r3, unsigned long r4, unsigned long __init prom_init(unsigned long r3, unsigned long r4,
unsigned long pp, unsigned long pp,
unsigned long r6, unsigned long r7, unsigned long r6, unsigned long r7,
unsigned long kbase); unsigned long kbase);
/* setup */
void __init early_setup(unsigned long dt_ptr);
void early_setup_secondary(void);
/* misc runtime */ /* misc runtime */
extern u64 __bswapdi2(u64); extern u64 __bswapdi2(u64);
extern s64 __lshrdi3(s64, int); extern s64 __lshrdi3(s64, int);
...@@ -94,11 +50,6 @@ extern int __ucmpdi2(u64, u64); ...@@ -94,11 +50,6 @@ extern int __ucmpdi2(u64, u64);
/* tracing */ /* tracing */
void _mcount(void); void _mcount(void);
unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip,
unsigned long sp);
void pnv_power9_force_smt4_catch(void);
void pnv_power9_force_smt4_release(void);
/* Transaction memory related */ /* Transaction memory related */
void tm_enable(void); void tm_enable(void);
......
...@@ -19,6 +19,9 @@ static inline unsigned long ftrace_call_adjust(unsigned long addr) ...@@ -19,6 +19,9 @@ static inline unsigned long ftrace_call_adjust(unsigned long addr)
return addr; return addr;
} }
unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip,
unsigned long sp);
struct dyn_arch_ftrace { struct dyn_arch_ftrace {
struct module *mod; struct module *mod;
}; };
......
...@@ -501,6 +501,11 @@ long plpar_hcall_raw(unsigned long opcode, unsigned long *retbuf, ...); ...@@ -501,6 +501,11 @@ long plpar_hcall_raw(unsigned long opcode, unsigned long *retbuf, ...);
long plpar_hcall9(unsigned long opcode, unsigned long *retbuf, ...); long plpar_hcall9(unsigned long opcode, unsigned long *retbuf, ...);
long plpar_hcall9_raw(unsigned long opcode, unsigned long *retbuf, ...); long plpar_hcall9_raw(unsigned long opcode, unsigned long *retbuf, ...);
/* pseries hcall tracing */
extern struct static_key hcall_tracepoint_key;
void __trace_hcall_entry(unsigned long opcode, unsigned long *args);
void __trace_hcall_exit(long opcode, long retval, unsigned long *retbuf);
struct hvcall_mpp_data { struct hvcall_mpp_data {
unsigned long entitled_mem; unsigned long entitled_mem;
unsigned long mapped_mem; unsigned long mapped_mem;
......
...@@ -636,6 +636,17 @@ static inline void interrupt_cond_local_irq_enable(struct pt_regs *regs) ...@@ -636,6 +636,17 @@ static inline void interrupt_cond_local_irq_enable(struct pt_regs *regs)
local_irq_enable(); local_irq_enable();
} }
long system_call_exception(long r3, long r4, long r5, long r6, long r7, long r8,
unsigned long r0, struct pt_regs *regs);
notrace unsigned long syscall_exit_prepare(unsigned long r3, struct pt_regs *regs, long scv);
notrace unsigned long interrupt_exit_user_prepare(struct pt_regs *regs);
notrace unsigned long interrupt_exit_kernel_prepare(struct pt_regs *regs);
#ifdef CONFIG_PPC64
unsigned long syscall_exit_restart(unsigned long r3, struct pt_regs *regs);
unsigned long interrupt_exit_user_restart(struct pt_regs *regs);
unsigned long interrupt_exit_kernel_restart(struct pt_regs *regs);
#endif
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#endif /* _ASM_POWERPC_INTERRUPT_H */ #endif /* _ASM_POWERPC_INTERRUPT_H */
...@@ -96,6 +96,8 @@ static inline bool kdump_in_progress(void) ...@@ -96,6 +96,8 @@ static inline bool kdump_in_progress(void)
void relocate_new_kernel(unsigned long indirection_page, unsigned long reboot_code_buffer, void relocate_new_kernel(unsigned long indirection_page, unsigned long reboot_code_buffer,
unsigned long start_address) __noreturn; unsigned long start_address) __noreturn;
void kexec_copy_flush(struct kimage *image);
#ifdef CONFIG_KEXEC_FILE #ifdef CONFIG_KEXEC_FILE
extern const struct kexec_file_ops kexec_elf64_ops; extern const struct kexec_file_ops kexec_elf64_ops;
......
...@@ -411,6 +411,8 @@ extern int powersave_nap; /* set if nap mode can be used in idle loop */ ...@@ -411,6 +411,8 @@ extern int powersave_nap; /* set if nap mode can be used in idle loop */
extern void power7_idle_type(unsigned long type); extern void power7_idle_type(unsigned long type);
extern void arch300_idle_type(unsigned long stop_psscr_val, extern void arch300_idle_type(unsigned long stop_psscr_val,
unsigned long stop_psscr_mask); unsigned long stop_psscr_mask);
void pnv_power9_force_smt4_catch(void);
void pnv_power9_force_smt4_release(void);
extern int fix_alignment(struct pt_regs *); extern int fix_alignment(struct pt_regs *);
...@@ -427,6 +429,12 @@ extern int fix_alignment(struct pt_regs *); ...@@ -427,6 +429,12 @@ extern int fix_alignment(struct pt_regs *);
int do_mathemu(struct pt_regs *regs); int do_mathemu(struct pt_regs *regs);
/* VMX copying */
int enter_vmx_usercopy(void);
int exit_vmx_usercopy(void);
int enter_vmx_ops(void);
void *exit_vmx_ops(void *dest);
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#endif /* _ASM_POWERPC_PROCESSOR_H */ #endif /* _ASM_POWERPC_PROCESSOR_H */
...@@ -76,6 +76,13 @@ static inline void setup_spectre_v2(void) {} ...@@ -76,6 +76,13 @@ static inline void setup_spectre_v2(void) {}
#endif #endif
void __init do_btb_flush_fixups(void); void __init do_btb_flush_fixups(void);
#ifdef CONFIG_PPC32
unsigned long __init early_init(unsigned long dt_ptr);
void __init machine_init(u64 dt_ptr);
#endif
void __init early_setup(unsigned long dt_ptr);
void early_setup_secondary(void);
#endif /* !__ASSEMBLY__ */ #endif /* !__ASSEMBLY__ */
#endif /* _ASM_POWERPC_SETUP_H */ #endif /* _ASM_POWERPC_SETUP_H */
......
...@@ -60,6 +60,9 @@ struct smp_ops_t { ...@@ -60,6 +60,9 @@ struct smp_ops_t {
#endif #endif
}; };
extern struct task_struct *secondary_current;
void start_secondary(void *unused);
extern int smp_send_nmi_ipi(int cpu, void (*fn)(struct pt_regs *), u64 delay_us); extern int smp_send_nmi_ipi(int cpu, void (*fn)(struct pt_regs *), u64 delay_us);
extern int smp_send_safe_nmi_ipi(int cpu, void (*fn)(struct pt_regs *), u64 delay_us); extern int smp_send_safe_nmi_ipi(int cpu, void (*fn)(struct pt_regs *), u64 delay_us);
extern void smp_send_debugger_break(void); extern void smp_send_debugger_break(void);
......
...@@ -18,6 +18,10 @@ asmlinkage long sys_mmap2(unsigned long addr, size_t len, ...@@ -18,6 +18,10 @@ asmlinkage long sys_mmap2(unsigned long addr, size_t len,
unsigned long fd, unsigned long pgoff); unsigned long fd, unsigned long pgoff);
asmlinkage long ppc64_personality(unsigned long personality); asmlinkage long ppc64_personality(unsigned long personality);
asmlinkage long sys_rtas(struct rtas_args __user *uargs); asmlinkage long sys_rtas(struct rtas_args __user *uargs);
int ppc_select(int n, fd_set __user *inp, fd_set __user *outp,
fd_set __user *exp, struct __kernel_old_timeval __user *tvp);
long ppc_fadvise64_64(int fd, int advice, u32 offset_high, u32 offset_low,
u32 len_high, u32 len_low);
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
unsigned long compat_sys_mmap2(unsigned long addr, size_t len, unsigned long compat_sys_mmap2(unsigned long addr, size_t len,
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/sections.h> #include <asm/sections.h>
#include <asm/asm-prototypes.h>
/* /*
* We're called here very early in the boot. * We're called here very early in the boot.
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
#include <linux/compat.h> #include <linux/compat.h>
#include <linux/sched/debug.h> /* for show_regs */ #include <linux/sched/debug.h> /* for show_regs */
#include <asm/asm-prototypes.h>
#include <asm/kup.h> #include <asm/kup.h>
#include <asm/cputime.h> #include <asm/cputime.h>
#include <asm/hw_irq.h> #include <asm/hw_irq.h>
......
...@@ -64,7 +64,6 @@ ...@@ -64,7 +64,6 @@
#include <asm/udbg.h> #include <asm/udbg.h>
#include <asm/smp.h> #include <asm/smp.h>
#include <asm/livepatch.h> #include <asm/livepatch.h>
#include <asm/asm-prototypes.h>
#include <asm/hw_irq.h> #include <asm/hw_irq.h>
#include <asm/softirq_stack.h> #include <asm/softirq_stack.h>
......
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
#include <asm/machdep.h> #include <asm/machdep.h>
#include <asm/mce.h> #include <asm/mce.h>
#include <asm/nmi.h> #include <asm/nmi.h>
#include <asm/asm-prototypes.h>
#include "setup.h" #include "setup.h"
......
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include <linux/syscalls.h> #include <linux/syscalls.h>
#include <asm/switch_to.h> #include <asm/switch_to.h>
#include <asm/asm-prototypes.h>
#include <asm/debug.h> #include <asm/debug.h>
#define CREATE_TRACE_POINTS #define CREATE_TRACE_POINTS
......
...@@ -67,7 +67,6 @@ ...@@ -67,7 +67,6 @@
#include <asm/kup.h> #include <asm/kup.h>
#include <asm/early_ioremap.h> #include <asm/early_ioremap.h>
#include <asm/pgalloc.h> #include <asm/pgalloc.h>
#include <asm/asm-prototypes.h>
#include "setup.h" #include "setup.h"
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
#include <asm/vdso.h> #include <asm/vdso.h>
#include <asm/debug.h> #include <asm/debug.h>
#include <asm/kexec.h> #include <asm/kexec.h>
#include <asm/asm-prototypes.h>
#include <asm/cpu_has_feature.h> #include <asm/cpu_has_feature.h>
#include <asm/ftrace.h> #include <asm/ftrace.h>
#include <asm/kup.h> #include <asm/kup.h>
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include <asm/syscalls.h> #include <asm/syscalls.h>
#include <asm/time.h> #include <asm/time.h>
#include <asm/unistd.h> #include <asm/unistd.h>
#include <asm/asm-prototypes.h>
static inline long do_mmap2(unsigned long addr, size_t len, static inline long do_mmap2(unsigned long addr, size_t len,
unsigned long prot, unsigned long flags, unsigned long prot, unsigned long flags,
......
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
#include <asm/cache.h> #include <asm/cache.h>
#include <asm/8xx_immap.h> #include <asm/8xx_immap.h>
#include <asm/machdep.h> #include <asm/machdep.h>
#include <asm/asm-prototypes.h>
#include "setup.h" #include "setup.h"
......
...@@ -69,7 +69,6 @@ ...@@ -69,7 +69,6 @@
#include <asm/smp.h> #include <asm/smp.h>
#include <asm/vdso_datapage.h> #include <asm/vdso_datapage.h>
#include <asm/firmware.h> #include <asm/firmware.h>
#include <asm/asm-prototypes.h>
#include <asm/mce.h> #include <asm/mce.h>
/* powerpc clocksource/clockevent code */ /* powerpc clocksource/clockevent code */
......
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/list.h> #include <linux/list.h>
#include <asm/asm-prototypes.h>
#include <asm/cacheflush.h> #include <asm/cacheflush.h>
#include <asm/code-patching.h> #include <asm/code-patching.h>
#include <asm/ftrace.h> #include <asm/ftrace.h>
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include <asm/prom.h> #include <asm/prom.h>
#include <asm/smp.h> #include <asm/smp.h>
#include <asm/hw_breakpoint.h> #include <asm/hw_breakpoint.h>
#include <asm/asm-prototypes.h>
#include <asm/svm.h> #include <asm/svm.h>
#include <asm/ultravisor.h> #include <asm/ultravisor.h>
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
#include <linux/cma.h> #include <linux/cma.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <asm/asm-prototypes.h>
#include <asm/cputable.h> #include <asm/cputable.h>
#include <asm/interrupt.h> #include <asm/interrupt.h>
#include <asm/kvm_ppc.h> #include <asm/kvm_ppc.h>
......
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
#include <asm/pnv-pci.h> #include <asm/pnv-pci.h>
#include <asm/opal.h> #include <asm/opal.h>
#include <asm/smp.h> #include <asm/smp.h>
#include <asm/asm-prototypes.h>
#include <asm/xive.h> #include <asm/xive.h>
#include <asm/xive-regs.h> #include <asm/xive-regs.h>
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <linux/hardirq.h> #include <linux/hardirq.h>
#include <asm/switch_to.h> #include <asm/switch_to.h>
#include <asm/asm-prototypes.h>
int enter_vmx_usercopy(void) int enter_vmx_usercopy(void)
{ {
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
* Copyright (C) 2002 Anton Blanchard <anton@au.ibm.com>, IBM * Copyright (C) 2002 Anton Blanchard <anton@au.ibm.com>, IBM
*/ */
#include <asm/asm-prototypes.h>
#include <asm/interrupt.h> #include <asm/interrupt.h>
#include <asm/mmu.h> #include <asm/mmu.h>
#include <asm/mmu_context.h> #include <asm/mmu_context.h>
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include <linux/kfence.h> #include <linux/kfence.h>
#include <linux/pkeys.h> #include <linux/pkeys.h>
#include <asm/asm-prototypes.h>
#include <asm/firmware.h> #include <asm/firmware.h>
#include <asm/interrupt.h> #include <asm/interrupt.h>
#include <asm/page.h> #include <asm/page.h>
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include <linux/device.h> #include <linux/device.h>
#include <linux/cpu.h> #include <linux/cpu.h>
#include <asm/asm-prototypes.h>
#include <asm/firmware.h> #include <asm/firmware.h>
#include <asm/interrupt.h> #include <asm/interrupt.h>
#include <asm/machdep.h> #include <asm/machdep.h>
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
#include <linux/percpu.h> #include <linux/percpu.h>
#include <linux/jump_label.h> #include <linux/jump_label.h>
#include <asm/trace.h> #include <asm/trace.h>
#include <asm/asm-prototypes.h>
#ifdef CONFIG_JUMP_LABEL #ifdef CONFIG_JUMP_LABEL
struct static_key opal_tracepoint_key = STATIC_KEY_INIT; struct static_key opal_tracepoint_key = STATIC_KEY_INIT;
......
...@@ -40,7 +40,6 @@ ...@@ -40,7 +40,6 @@
#include <asm/plpar_wrappers.h> #include <asm/plpar_wrappers.h>
#include <asm/kexec.h> #include <asm/kexec.h>
#include <asm/fadump.h> #include <asm/fadump.h>
#include <asm/asm-prototypes.h>
#include <asm/dtl.h> #include <asm/dtl.h>
#include "pseries.h" #include "pseries.h"
......
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