1 #ifndef _ASM_X86_ALTERNATIVE_ASM_H
2 #define _ASM_X86_ALTERNATIVE_ASM_H
11 .pushsection .smp_locks,"a"
21 .macro altinstruction_entry orig alt feature orig_len alt_len pad_len
30 .macro ALTERNATIVE oldinstr, newinstr, feature
34 .skip -(((144f-143f)-(141b-140b)) > 0) * ((144f-143f)-(141b-140b)),0x90
37 .pushsection .altinstructions,"a"
38 altinstruction_entry 140b,143f,\feature,142b-140b,144f-143f,142b-141b
41 .pushsection .altinstr_replacement,"ax"
48 .macro ALTERNATIVE_2 oldinstr, newinstr1, feature1, newinstr2, feature2
52 .skip -(((144f-143f)-(141b-140b)) > 0) * ((144f-143f)-(141b-140b)),0x90
53 .skip -(((145f-144f)-(144f-143f)-(141b-140b)) > 0) * ((145f-144f)-(144f-143f)-(141b-140b)),0x90
56 .pushsection .altinstructions,"a"
57 altinstruction_entry 140b,143f,\feature1,142b-140b,144f-143f,142b-141b
58 altinstruction_entry 140b,144f,\feature2,142b-140b,145f-144f,142b-141b
61 .pushsection .altinstr_replacement,"ax"
70 #endif /* __ASSEMBLY__ */
72 #endif /* _ASM_X86_ALTERNATIVE_ASM_H */