You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'x86-asmlinkage-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86/asmlinkage changes from Ingo Molnar:
"As a preparation for Andi Kleen's LTO patchset (link time
optimizations using GCC's -flto which build time optimization has
steadily increased in quality over the past few years and might
eventually be usable for the kernel too) this tree includes a handful
of preparatory patches that make function calling convention
annotations consistent again:
- Mark every function without arguments (or 64bit only) that is used
by assembly code with asmlinkage()
- Mark every function with parameters or variables that is used by
assembly code as __visible.
For the vanilla kernel this has documentation, consistency and
debuggability advantages, for the time being"
* 'x86-asmlinkage-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86/asmlinkage: Fix warning in xen asmlinkage change
x86, asmlinkage, vdso: Mark vdso variables __visible
x86, asmlinkage, power: Make various symbols used by the suspend asm code visible
x86, asmlinkage: Make dump_stack visible
x86, asmlinkage: Make 64bit checksum functions visible
x86, asmlinkage, paravirt: Add __visible/asmlinkage to xen paravirt ops
x86, asmlinkage, apm: Make APM data structure used from assembler visible
x86, asmlinkage: Make syscall tables visible
x86, asmlinkage: Make several variables used from assembler/linker script visible
x86, asmlinkage: Make kprobes code visible and fix assembler code
x86, asmlinkage: Make various syscalls asmlinkage
x86, asmlinkage: Make 32bit/64bit __switch_to visible
x86, asmlinkage: Make _*_start_kernel visible
x86, asmlinkage: Make all interrupt handlers asmlinkage / __visible
x86, asmlinkage: Change dotraplinkage into __visible on 32bit
x86: Fix sys_call_table type in asm/syscall.h
This commit is contained in:
@@ -133,7 +133,7 @@ extern __wsum csum_partial(const void *buff, int len, __wsum sum);
|
||||
|
||||
|
||||
/* Do not call this directly. Use the wrappers below */
|
||||
extern __wsum csum_partial_copy_generic(const void *src, const void *dst,
|
||||
extern __visible __wsum csum_partial_copy_generic(const void *src, const void *dst,
|
||||
int len, __wsum sum,
|
||||
int *src_err_ptr, int *dst_err_ptr);
|
||||
|
||||
|
||||
@@ -26,56 +26,56 @@
|
||||
#include <asm/sections.h>
|
||||
|
||||
/* Interrupt handlers registered during init_IRQ */
|
||||
extern void apic_timer_interrupt(void);
|
||||
extern void x86_platform_ipi(void);
|
||||
extern void kvm_posted_intr_ipi(void);
|
||||
extern void error_interrupt(void);
|
||||
extern void irq_work_interrupt(void);
|
||||
extern asmlinkage void apic_timer_interrupt(void);
|
||||
extern asmlinkage void x86_platform_ipi(void);
|
||||
extern asmlinkage void kvm_posted_intr_ipi(void);
|
||||
extern asmlinkage void error_interrupt(void);
|
||||
extern asmlinkage void irq_work_interrupt(void);
|
||||
|
||||
extern void spurious_interrupt(void);
|
||||
extern void thermal_interrupt(void);
|
||||
extern void reschedule_interrupt(void);
|
||||
extern asmlinkage void spurious_interrupt(void);
|
||||
extern asmlinkage void thermal_interrupt(void);
|
||||
extern asmlinkage void reschedule_interrupt(void);
|
||||
|
||||
extern void invalidate_interrupt(void);
|
||||
extern void invalidate_interrupt0(void);
|
||||
extern void invalidate_interrupt1(void);
|
||||
extern void invalidate_interrupt2(void);
|
||||
extern void invalidate_interrupt3(void);
|
||||
extern void invalidate_interrupt4(void);
|
||||
extern void invalidate_interrupt5(void);
|
||||
extern void invalidate_interrupt6(void);
|
||||
extern void invalidate_interrupt7(void);
|
||||
extern void invalidate_interrupt8(void);
|
||||
extern void invalidate_interrupt9(void);
|
||||
extern void invalidate_interrupt10(void);
|
||||
extern void invalidate_interrupt11(void);
|
||||
extern void invalidate_interrupt12(void);
|
||||
extern void invalidate_interrupt13(void);
|
||||
extern void invalidate_interrupt14(void);
|
||||
extern void invalidate_interrupt15(void);
|
||||
extern void invalidate_interrupt16(void);
|
||||
extern void invalidate_interrupt17(void);
|
||||
extern void invalidate_interrupt18(void);
|
||||
extern void invalidate_interrupt19(void);
|
||||
extern void invalidate_interrupt20(void);
|
||||
extern void invalidate_interrupt21(void);
|
||||
extern void invalidate_interrupt22(void);
|
||||
extern void invalidate_interrupt23(void);
|
||||
extern void invalidate_interrupt24(void);
|
||||
extern void invalidate_interrupt25(void);
|
||||
extern void invalidate_interrupt26(void);
|
||||
extern void invalidate_interrupt27(void);
|
||||
extern void invalidate_interrupt28(void);
|
||||
extern void invalidate_interrupt29(void);
|
||||
extern void invalidate_interrupt30(void);
|
||||
extern void invalidate_interrupt31(void);
|
||||
extern asmlinkage void invalidate_interrupt(void);
|
||||
extern asmlinkage void invalidate_interrupt0(void);
|
||||
extern asmlinkage void invalidate_interrupt1(void);
|
||||
extern asmlinkage void invalidate_interrupt2(void);
|
||||
extern asmlinkage void invalidate_interrupt3(void);
|
||||
extern asmlinkage void invalidate_interrupt4(void);
|
||||
extern asmlinkage void invalidate_interrupt5(void);
|
||||
extern asmlinkage void invalidate_interrupt6(void);
|
||||
extern asmlinkage void invalidate_interrupt7(void);
|
||||
extern asmlinkage void invalidate_interrupt8(void);
|
||||
extern asmlinkage void invalidate_interrupt9(void);
|
||||
extern asmlinkage void invalidate_interrupt10(void);
|
||||
extern asmlinkage void invalidate_interrupt11(void);
|
||||
extern asmlinkage void invalidate_interrupt12(void);
|
||||
extern asmlinkage void invalidate_interrupt13(void);
|
||||
extern asmlinkage void invalidate_interrupt14(void);
|
||||
extern asmlinkage void invalidate_interrupt15(void);
|
||||
extern asmlinkage void invalidate_interrupt16(void);
|
||||
extern asmlinkage void invalidate_interrupt17(void);
|
||||
extern asmlinkage void invalidate_interrupt18(void);
|
||||
extern asmlinkage void invalidate_interrupt19(void);
|
||||
extern asmlinkage void invalidate_interrupt20(void);
|
||||
extern asmlinkage void invalidate_interrupt21(void);
|
||||
extern asmlinkage void invalidate_interrupt22(void);
|
||||
extern asmlinkage void invalidate_interrupt23(void);
|
||||
extern asmlinkage void invalidate_interrupt24(void);
|
||||
extern asmlinkage void invalidate_interrupt25(void);
|
||||
extern asmlinkage void invalidate_interrupt26(void);
|
||||
extern asmlinkage void invalidate_interrupt27(void);
|
||||
extern asmlinkage void invalidate_interrupt28(void);
|
||||
extern asmlinkage void invalidate_interrupt29(void);
|
||||
extern asmlinkage void invalidate_interrupt30(void);
|
||||
extern asmlinkage void invalidate_interrupt31(void);
|
||||
|
||||
extern void irq_move_cleanup_interrupt(void);
|
||||
extern void reboot_interrupt(void);
|
||||
extern void threshold_interrupt(void);
|
||||
extern asmlinkage void irq_move_cleanup_interrupt(void);
|
||||
extern asmlinkage void reboot_interrupt(void);
|
||||
extern asmlinkage void threshold_interrupt(void);
|
||||
|
||||
extern void call_function_interrupt(void);
|
||||
extern void call_function_single_interrupt(void);
|
||||
extern asmlinkage void call_function_interrupt(void);
|
||||
extern asmlinkage void call_function_single_interrupt(void);
|
||||
|
||||
#ifdef CONFIG_TRACING
|
||||
/* Interrupt handlers registered during init_IRQ */
|
||||
@@ -172,22 +172,18 @@ extern atomic_t irq_mis_count;
|
||||
extern void eisa_set_level_irq(unsigned int irq);
|
||||
|
||||
/* SMP */
|
||||
extern void smp_apic_timer_interrupt(struct pt_regs *);
|
||||
extern void smp_spurious_interrupt(struct pt_regs *);
|
||||
extern void smp_x86_platform_ipi(struct pt_regs *);
|
||||
extern void smp_error_interrupt(struct pt_regs *);
|
||||
extern __visible void smp_apic_timer_interrupt(struct pt_regs *);
|
||||
extern __visible void smp_spurious_interrupt(struct pt_regs *);
|
||||
extern __visible void smp_x86_platform_ipi(struct pt_regs *);
|
||||
extern __visible void smp_error_interrupt(struct pt_regs *);
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
extern asmlinkage void smp_irq_move_cleanup_interrupt(void);
|
||||
#endif
|
||||
#ifdef CONFIG_SMP
|
||||
extern void smp_reschedule_interrupt(struct pt_regs *);
|
||||
extern void smp_call_function_interrupt(struct pt_regs *);
|
||||
extern void smp_call_function_single_interrupt(struct pt_regs *);
|
||||
#ifdef CONFIG_X86_32
|
||||
extern void smp_invalidate_interrupt(struct pt_regs *);
|
||||
#else
|
||||
extern asmlinkage void smp_invalidate_interrupt(struct pt_regs *);
|
||||
#endif
|
||||
extern __visible void smp_reschedule_interrupt(struct pt_regs *);
|
||||
extern __visible void smp_call_function_interrupt(struct pt_regs *);
|
||||
extern __visible void smp_call_function_single_interrupt(struct pt_regs *);
|
||||
extern __visible void smp_invalidate_interrupt(struct pt_regs *);
|
||||
#endif
|
||||
|
||||
extern void (*__initconst interrupt[NR_VECTORS-FIRST_EXTERNAL_VECTOR])(void);
|
||||
|
||||
@@ -33,7 +33,7 @@ extern void (*x86_platform_ipi_callback)(void);
|
||||
extern void native_init_IRQ(void);
|
||||
extern bool handle_irq(unsigned irq, struct pt_regs *regs);
|
||||
|
||||
extern unsigned int do_IRQ(struct pt_regs *regs);
|
||||
extern __visible unsigned int do_IRQ(struct pt_regs *regs);
|
||||
|
||||
/* Interrupt vector management */
|
||||
extern DECLARE_BITMAP(used_vectors, NR_VECTORS);
|
||||
|
||||
@@ -49,10 +49,10 @@ typedef u8 kprobe_opcode_t;
|
||||
#define flush_insn_slot(p) do { } while (0)
|
||||
|
||||
/* optinsn template addresses */
|
||||
extern kprobe_opcode_t optprobe_template_entry;
|
||||
extern kprobe_opcode_t optprobe_template_val;
|
||||
extern kprobe_opcode_t optprobe_template_call;
|
||||
extern kprobe_opcode_t optprobe_template_end;
|
||||
extern __visible kprobe_opcode_t optprobe_template_entry;
|
||||
extern __visible kprobe_opcode_t optprobe_template_val;
|
||||
extern __visible kprobe_opcode_t optprobe_template_call;
|
||||
extern __visible kprobe_opcode_t optprobe_template_end;
|
||||
#define MAX_OPTIMIZED_LENGTH (MAX_INSN_SIZE + RELATIVE_ADDR_SIZE)
|
||||
#define MAX_OPTINSN_SIZE \
|
||||
(((unsigned long)&optprobe_template_end - \
|
||||
@@ -62,7 +62,7 @@ extern kprobe_opcode_t optprobe_template_end;
|
||||
extern const int kretprobe_blacklist_size;
|
||||
|
||||
void arch_remove_kprobe(struct kprobe *p);
|
||||
void kretprobe_trampoline(void);
|
||||
asmlinkage void kretprobe_trampoline(void);
|
||||
|
||||
/* Architecture specific copy of original instruction*/
|
||||
struct arch_specific_insn {
|
||||
|
||||
@@ -387,7 +387,8 @@ extern struct pv_lock_ops pv_lock_ops;
|
||||
|
||||
/* Simple instruction patching code. */
|
||||
#define DEF_NATIVE(ops, name, code) \
|
||||
extern const char start_##ops##_##name[], end_##ops##_##name[]; \
|
||||
extern const char start_##ops##_##name[] __visible, \
|
||||
end_##ops##_##name[] __visible; \
|
||||
asm("start_" #ops "_" #name ": " code "; end_" #ops "_" #name ":")
|
||||
|
||||
unsigned paravirt_patch_nop(void);
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
* ZERO_PAGE is a global shared page that is always zero: used
|
||||
* for zero-mapped memory areas etc..
|
||||
*/
|
||||
extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)];
|
||||
extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)]
|
||||
__visible;
|
||||
#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
|
||||
|
||||
extern spinlock_t pgd_lock;
|
||||
|
||||
@@ -412,7 +412,7 @@ union irq_stack_union {
|
||||
};
|
||||
};
|
||||
|
||||
DECLARE_PER_CPU_FIRST(union irq_stack_union, irq_stack_union);
|
||||
DECLARE_PER_CPU_FIRST(union irq_stack_union, irq_stack_union) __visible;
|
||||
DECLARE_INIT_PER_CPU(irq_stack_union);
|
||||
|
||||
DECLARE_PER_CPU(char *, irq_stack_ptr);
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
#define COMMAND_LINE_SIZE 2048
|
||||
|
||||
#include <linux/linkage.h>
|
||||
|
||||
#ifdef __i386__
|
||||
|
||||
#include <linux/pfn.h>
|
||||
@@ -108,11 +110,11 @@ void *extend_brk(size_t size, size_t align);
|
||||
extern void probe_roms(void);
|
||||
#ifdef __i386__
|
||||
|
||||
void __init i386_start_kernel(void);
|
||||
asmlinkage void __init i386_start_kernel(void);
|
||||
|
||||
#else
|
||||
void __init x86_64_start_kernel(char *real_mode);
|
||||
void __init x86_64_start_reservations(char *real_mode_data);
|
||||
asmlinkage void __init x86_64_start_kernel(char *real_mode);
|
||||
asmlinkage void __init x86_64_start_reservations(char *real_mode_data);
|
||||
|
||||
#endif /* __i386__ */
|
||||
#endif /* _SETUP */
|
||||
|
||||
@@ -101,7 +101,7 @@ static inline void native_wbinvd(void)
|
||||
asm volatile("wbinvd": : :"memory");
|
||||
}
|
||||
|
||||
extern void native_load_gs_index(unsigned);
|
||||
extern asmlinkage void native_load_gs_index(unsigned);
|
||||
|
||||
#ifdef CONFIG_PARAVIRT
|
||||
#include <asm/paravirt.h>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
#define _ASM_X86_SWITCH_TO_H
|
||||
|
||||
struct task_struct; /* one of the stranger aspects of C forward declarations */
|
||||
struct task_struct *__switch_to(struct task_struct *prev,
|
||||
struct task_struct *next);
|
||||
__visible struct task_struct *__switch_to(struct task_struct *prev,
|
||||
struct task_struct *next);
|
||||
struct tss_struct;
|
||||
void __switch_to_xtra(struct task_struct *prev_p, struct task_struct *next_p,
|
||||
struct tss_struct *tss);
|
||||
|
||||
@@ -20,7 +20,8 @@
|
||||
#include <asm/thread_info.h> /* for TS_COMPAT */
|
||||
#include <asm/unistd.h>
|
||||
|
||||
extern const unsigned long sys_call_table[];
|
||||
typedef void (*sys_call_ptr_t)(void);
|
||||
extern const sys_call_ptr_t sys_call_table[];
|
||||
|
||||
/*
|
||||
* Only the low 32 bits of orig_ax are meaningful, so we return int.
|
||||
|
||||
@@ -24,7 +24,7 @@ asmlinkage long sys_iopl(unsigned int);
|
||||
asmlinkage int sys_modify_ldt(int, void __user *, unsigned long);
|
||||
|
||||
/* kernel/signal.c */
|
||||
long sys_rt_sigreturn(void);
|
||||
asmlinkage long sys_rt_sigreturn(void);
|
||||
|
||||
/* kernel/tls.c */
|
||||
asmlinkage long sys_set_thread_area(struct user_desc __user *);
|
||||
@@ -34,7 +34,7 @@ asmlinkage long sys_get_thread_area(struct user_desc __user *);
|
||||
#ifdef CONFIG_X86_32
|
||||
|
||||
/* kernel/signal.c */
|
||||
unsigned long sys_sigreturn(void);
|
||||
asmlinkage unsigned long sys_sigreturn(void);
|
||||
|
||||
/* kernel/vm86_32.c */
|
||||
asmlinkage long sys_vm86old(struct vm86_struct __user *);
|
||||
@@ -44,7 +44,7 @@ asmlinkage long sys_vm86(unsigned long, unsigned long);
|
||||
|
||||
/* X86_64 only */
|
||||
/* kernel/process_64.c */
|
||||
long sys_arch_prctl(int, unsigned long);
|
||||
asmlinkage long sys_arch_prctl(int, unsigned long);
|
||||
|
||||
/* kernel/sys_x86_64.c */
|
||||
asmlinkage long sys_mmap(unsigned long, unsigned long, unsigned long,
|
||||
|
||||
@@ -6,11 +6,7 @@
|
||||
#include <asm/debugreg.h>
|
||||
#include <asm/siginfo.h> /* TRAP_TRACE, ... */
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
#define dotraplinkage
|
||||
#else
|
||||
#define dotraplinkage asmlinkage
|
||||
#endif
|
||||
#define dotraplinkage __visible
|
||||
|
||||
asmlinkage void divide_error(void);
|
||||
asmlinkage void debug(void);
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
#define DEFINE_VVAR(type, name) \
|
||||
type name \
|
||||
__attribute__((section(".vvar_" #name), aligned(16)))
|
||||
__attribute__((section(".vvar_" #name), aligned(16))) __visible
|
||||
|
||||
#define VVAR(name) (*vvaraddr_ ## name)
|
||||
|
||||
|
||||
@@ -913,7 +913,7 @@ static void local_apic_timer_interrupt(void)
|
||||
* [ if a single-CPU system runs an SMP kernel then we call the local
|
||||
* interrupt as well. Thus we cannot inline the local irq ... ]
|
||||
*/
|
||||
void __irq_entry smp_apic_timer_interrupt(struct pt_regs *regs)
|
||||
__visible void __irq_entry smp_apic_timer_interrupt(struct pt_regs *regs)
|
||||
{
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
|
||||
@@ -932,7 +932,7 @@ void __irq_entry smp_apic_timer_interrupt(struct pt_regs *regs)
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
|
||||
void __irq_entry smp_trace_apic_timer_interrupt(struct pt_regs *regs)
|
||||
__visible void __irq_entry smp_trace_apic_timer_interrupt(struct pt_regs *regs)
|
||||
{
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
|
||||
@@ -1946,14 +1946,14 @@ static inline void __smp_spurious_interrupt(void)
|
||||
"should never happen.\n", smp_processor_id());
|
||||
}
|
||||
|
||||
void smp_spurious_interrupt(struct pt_regs *regs)
|
||||
__visible void smp_spurious_interrupt(struct pt_regs *regs)
|
||||
{
|
||||
entering_irq();
|
||||
__smp_spurious_interrupt();
|
||||
exiting_irq();
|
||||
}
|
||||
|
||||
void smp_trace_spurious_interrupt(struct pt_regs *regs)
|
||||
__visible void smp_trace_spurious_interrupt(struct pt_regs *regs)
|
||||
{
|
||||
entering_irq();
|
||||
trace_spurious_apic_entry(SPURIOUS_APIC_VECTOR);
|
||||
@@ -2002,14 +2002,14 @@ static inline void __smp_error_interrupt(struct pt_regs *regs)
|
||||
|
||||
}
|
||||
|
||||
void smp_error_interrupt(struct pt_regs *regs)
|
||||
__visible void smp_error_interrupt(struct pt_regs *regs)
|
||||
{
|
||||
entering_irq();
|
||||
__smp_error_interrupt(regs);
|
||||
exiting_irq();
|
||||
}
|
||||
|
||||
void smp_trace_error_interrupt(struct pt_regs *regs)
|
||||
__visible void smp_trace_error_interrupt(struct pt_regs *regs)
|
||||
{
|
||||
entering_irq();
|
||||
trace_error_apic_entry(ERROR_APIC_VECTOR);
|
||||
|
||||
@@ -392,7 +392,7 @@ static struct cpuidle_device apm_cpuidle_device;
|
||||
/*
|
||||
* Local variables
|
||||
*/
|
||||
static struct {
|
||||
__visible struct {
|
||||
unsigned long offset;
|
||||
unsigned short segment;
|
||||
} apm_bios_entry;
|
||||
|
||||
@@ -66,8 +66,8 @@ static inline int wrmsrl_amd_safe(unsigned msr, unsigned long long val)
|
||||
* performance at the same time..
|
||||
*/
|
||||
|
||||
extern void vide(void);
|
||||
__asm__(".align 4\nvide: ret");
|
||||
extern __visible void vide(void);
|
||||
__asm__(".globl vide\n\t.align 4\nvide: ret");
|
||||
|
||||
static void init_amd_k5(struct cpuinfo_x86 *c)
|
||||
{
|
||||
|
||||
@@ -1076,7 +1076,7 @@ struct desc_ptr debug_idt_descr = { NR_VECTORS * 16 - 1,
|
||||
(unsigned long) debug_idt_table };
|
||||
|
||||
DEFINE_PER_CPU_FIRST(union irq_stack_union,
|
||||
irq_stack_union) __aligned(PAGE_SIZE);
|
||||
irq_stack_union) __aligned(PAGE_SIZE) __visible;
|
||||
|
||||
/*
|
||||
* The following four percpu variables are hot. Align current_task to
|
||||
@@ -1093,7 +1093,7 @@ EXPORT_PER_CPU_SYMBOL(kernel_stack);
|
||||
DEFINE_PER_CPU(char *, irq_stack_ptr) =
|
||||
init_per_cpu_var(irq_stack_union.irq_stack) + IRQ_STACK_SIZE - 64;
|
||||
|
||||
DEFINE_PER_CPU(unsigned int, irq_count) = -1;
|
||||
DEFINE_PER_CPU(unsigned int, irq_count) __visible = -1;
|
||||
|
||||
DEFINE_PER_CPU(struct task_struct *, fpu_owner_task);
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ static void __init i386_default_early_setup(void)
|
||||
reserve_ebda_region();
|
||||
}
|
||||
|
||||
void __init i386_start_kernel(void)
|
||||
asmlinkage void __init i386_start_kernel(void)
|
||||
{
|
||||
sanitize_boot_params(&boot_params);
|
||||
|
||||
|
||||
@@ -137,7 +137,7 @@ static void __init copy_bootdata(char *real_mode_data)
|
||||
}
|
||||
}
|
||||
|
||||
void __init x86_64_start_kernel(char * real_mode_data)
|
||||
asmlinkage void __init x86_64_start_kernel(char * real_mode_data)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user