diff options
Diffstat (limited to 'arch/x86/include/asm/alternative.h')
| -rw-r--r-- | arch/x86/include/asm/alternative.h | 12 | 
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/x86/include/asm/alternative.h b/arch/x86/include/asm/alternative.h index 69b74a7b877..f1e253ceba4 100644 --- a/arch/x86/include/asm/alternative.h +++ b/arch/x86/include/asm/alternative.h @@ -65,12 +65,17 @@ extern void alternatives_smp_module_add(struct module *mod, char *name,  					void *text, void *text_end);  extern void alternatives_smp_module_del(struct module *mod);  extern void alternatives_smp_switch(int smp); +extern int alternatives_text_reserved(void *start, void *end);  #else  static inline void alternatives_smp_module_add(struct module *mod, char *name,  					       void *locks, void *locks_end,  					       void *text, void *text_end) {}  static inline void alternatives_smp_module_del(struct module *mod) {}  static inline void alternatives_smp_switch(int smp) {} +static inline int alternatives_text_reserved(void *start, void *end) +{ +	return 0; +}  #endif	/* CONFIG_SMP */  /* alternative assembly primitive: */ @@ -125,11 +130,16 @@ static inline void alternatives_smp_switch(int smp) {}  	asm volatile (ALTERNATIVE(oldinstr, newinstr, feature)		\  		: output : "i" (0), ## input) +/* Like alternative_io, but for replacing a direct call with another one. */ +#define alternative_call(oldfunc, newfunc, feature, output, input...)	\ +	asm volatile (ALTERNATIVE("call %P[old]", "call %P[new]", feature) \ +		: output : [old] "i" (oldfunc), [new] "i" (newfunc), ## input) +  /*   * use this macro(s) if you need more than one output parameter   * in alternative_io   */ -#define ASM_OUTPUT2(a, b) a, b +#define ASM_OUTPUT2(a...) a  struct paravirt_patch_site;  #ifdef CONFIG_PARAVIRT  |