x86, asmlinkage, paravirt: Add __visible/asmlinkage to xen paravirt ops

Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Link: http://lkml.kernel.org/r/1375740170-7446-13-git-send-email-andi@firstfloor.org
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
This commit is contained in:
Andi Kleen 2013-08-05 15:02:46 -07:00 committed by H. Peter Anvin
parent 54c2f3fdb9
commit 9a55fdbe94
3 changed files with 12 additions and 11 deletions

View File

@ -387,7 +387,8 @@ extern struct pv_lock_ops pv_lock_ops;
/* Simple instruction patching code. */ /* Simple instruction patching code. */
#define DEF_NATIVE(ops, name, 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 ":") asm("start_" #ops "_" #name ": " code "; end_" #ops "_" #name ":")
unsigned paravirt_patch_nop(void); unsigned paravirt_patch_nop(void);

View File

@ -324,7 +324,7 @@ struct pv_time_ops pv_time_ops = {
.steal_clock = native_steal_clock, .steal_clock = native_steal_clock,
}; };
struct pv_irq_ops pv_irq_ops = { __visible struct pv_irq_ops pv_irq_ops = {
.save_fl = __PV_IS_CALLEE_SAVE(native_save_fl), .save_fl = __PV_IS_CALLEE_SAVE(native_save_fl),
.restore_fl = __PV_IS_CALLEE_SAVE(native_restore_fl), .restore_fl = __PV_IS_CALLEE_SAVE(native_restore_fl),
.irq_disable = __PV_IS_CALLEE_SAVE(native_irq_disable), .irq_disable = __PV_IS_CALLEE_SAVE(native_irq_disable),
@ -336,7 +336,7 @@ struct pv_irq_ops pv_irq_ops = {
#endif #endif
}; };
struct pv_cpu_ops pv_cpu_ops = { __visible struct pv_cpu_ops pv_cpu_ops = {
.cpuid = native_cpuid, .cpuid = native_cpuid,
.get_debugreg = native_get_debugreg, .get_debugreg = native_get_debugreg,
.set_debugreg = native_set_debugreg, .set_debugreg = native_set_debugreg,

View File

@ -105,9 +105,9 @@ static inline void __init xen_init_apic(void)
/* Declare an asm function, along with symbols needed to make it /* Declare an asm function, along with symbols needed to make it
inlineable */ inlineable */
#define DECL_ASM(ret, name, ...) \ #define DECL_ASM(ret, name, ...) \
ret name(__VA_ARGS__); \ asmlinkage ret name(__VA_ARGS__); \
extern char name##_end[]; \ extern char name##_end[] __visible; \
extern char name##_reloc[] \ extern char name##_reloc[] __visible
DECL_ASM(void, xen_irq_enable_direct, void); DECL_ASM(void, xen_irq_enable_direct, void);
DECL_ASM(void, xen_irq_disable_direct, void); DECL_ASM(void, xen_irq_disable_direct, void);
@ -115,11 +115,11 @@ DECL_ASM(unsigned long, xen_save_fl_direct, void);
DECL_ASM(void, xen_restore_fl_direct, unsigned long); DECL_ASM(void, xen_restore_fl_direct, unsigned long);
/* These are not functions, and cannot be called normally */ /* These are not functions, and cannot be called normally */
void xen_iret(void); asmlinkage void xen_iret(void);
void xen_sysexit(void); asmlinkage void xen_sysexit(void);
void xen_sysret32(void); asmlinkage void xen_sysret32(void);
void xen_sysret64(void); asmlinkage void xen_sysret64(void);
void xen_adjust_exception_frame(void); asmlinkage void xen_adjust_exception_frame(void);
extern int xen_panic_handler_init(void); extern int xen_panic_handler_init(void);