* without volatile and memory clobber.
  */
 #define alternative(oldinstr, newinstr, feature)                       \
-       asm volatile (ALTERNATIVE(oldinstr, newinstr, feature) : : : "memory")
+       asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) : : : "memory")
 
 #define alternative_2(oldinstr, newinstr1, feature1, newinstr2, feature2) \
-       asm volatile(ALTERNATIVE_2(oldinstr, newinstr1, feature1, newinstr2, feature2) ::: "memory")
+       asm_inline volatile(ALTERNATIVE_2(oldinstr, newinstr1, feature1, newinstr2, feature2) ::: "memory")
 
 /*
  * Alternative inline assembly with input.
  * Leaving an unused argument 0 to keep API compatibility.
  */
 #define alternative_input(oldinstr, newinstr, feature, input...)       \
-       asm volatile (ALTERNATIVE(oldinstr, newinstr, feature)          \
+       asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature)   \
                : : "i" (0), ## input)
 
 /*
  */
 #define alternative_input_2(oldinstr, newinstr1, feature1, newinstr2,       \
                           feature2, input...)                               \
-       asm volatile(ALTERNATIVE_2(oldinstr, newinstr1, feature1,            \
+       asm_inline volatile(ALTERNATIVE_2(oldinstr, newinstr1, feature1,     \
                newinstr2, feature2)                                         \
                : : "i" (0), ## input)
 
 /* Like alternative_input, but with a single output argument */
 #define alternative_io(oldinstr, newinstr, feature, output, input...)  \
-       asm volatile (ALTERNATIVE(oldinstr, newinstr, feature)          \
+       asm_inline 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) \
+       asm_inline volatile (ALTERNATIVE("call %P[old]", "call %P[new]", feature) \
                : output : [old] "i" (oldfunc), [new] "i" (newfunc), ## input)
 
 /*
  */
 #define alternative_call_2(oldfunc, newfunc1, feature1, newfunc2, feature2,   \
                           output, input...)                                  \
-       asm volatile (ALTERNATIVE_2("call %P[old]", "call %P[new1]", feature1,\
+       asm_inline volatile (ALTERNATIVE_2("call %P[old]", "call %P[new1]", feature1,\
                "call %P[new2]", feature2)                                    \
                : output, ASM_CALL_CONSTRAINT                                 \
                : [old] "i" (oldfunc), [new1] "i" (newfunc1),                 \