|
@@ -125,8 +125,11 @@ static inline void fpu_xsave(struct fpu *fpu)
|
|
{
|
|
{
|
|
/* This, however, we can work around by forcing the compiler to select
|
|
/* This, however, we can work around by forcing the compiler to select
|
|
an addressing mode that doesn't require extended registers. */
|
|
an addressing mode that doesn't require extended registers. */
|
|
- __asm__ __volatile__(".byte " REX_PREFIX "0x0f,0xae,0x27"
|
|
|
|
- : : "D" (&(fpu->state->xsave)),
|
|
|
|
- "a" (-1), "d"(-1) : "memory");
|
|
|
|
|
|
+ alternative_input(
|
|
|
|
+ ".byte " REX_PREFIX "0x0f,0xae,0x27",
|
|
|
|
+ ".byte " REX_PREFIX "0x0f,0xae,0x37",
|
|
|
|
+ X86_FEATURE_XSAVEOPT,
|
|
|
|
+ [fx] "D" (&fpu->state->xsave), "a" (-1), "d" (-1) :
|
|
|
|
+ "memory");
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|