|
@@ -218,13 +218,11 @@ static inline int alternatives_text_reserved(void *start, void *end)
|
|
*/
|
|
*/
|
|
#define alternative_call_2(oldfunc, newfunc1, feature1, newfunc2, feature2, \
|
|
#define alternative_call_2(oldfunc, newfunc1, feature1, newfunc2, feature2, \
|
|
output, input...) \
|
|
output, input...) \
|
|
-{ \
|
|
|
|
asm volatile (ALTERNATIVE_2("call %P[old]", "call %P[new1]", feature1,\
|
|
asm volatile (ALTERNATIVE_2("call %P[old]", "call %P[new1]", feature1,\
|
|
"call %P[new2]", feature2) \
|
|
"call %P[new2]", feature2) \
|
|
: output, ASM_CALL_CONSTRAINT \
|
|
: output, ASM_CALL_CONSTRAINT \
|
|
: [old] "i" (oldfunc), [new1] "i" (newfunc1), \
|
|
: [old] "i" (oldfunc), [new1] "i" (newfunc1), \
|
|
- [new2] "i" (newfunc2), ## input); \
|
|
|
|
-}
|
|
|
|
|
|
+ [new2] "i" (newfunc2), ## input)
|
|
|
|
|
|
/*
|
|
/*
|
|
* use this macro(s) if you need more than one output parameter
|
|
* use this macro(s) if you need more than one output parameter
|