diff options
Diffstat (limited to 'include/asm-x86/processor.h')
-rw-r--r-- | include/asm-x86/processor.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/include/asm-x86/processor.h b/include/asm-x86/processor.h index 10471cfab145..df03c98e38d4 100644 --- a/include/asm-x86/processor.h +++ b/include/asm-x86/processor.h | |||
@@ -326,7 +326,12 @@ struct i387_fxsave_struct { | |||
326 | /* 16*16 bytes for each XMM-reg = 256 bytes: */ | 326 | /* 16*16 bytes for each XMM-reg = 256 bytes: */ |
327 | u32 xmm_space[64]; | 327 | u32 xmm_space[64]; |
328 | 328 | ||
329 | u32 padding[24]; | 329 | u32 padding[12]; |
330 | |||
331 | union { | ||
332 | u32 padding1[12]; | ||
333 | u32 sw_reserved[12]; | ||
334 | }; | ||
330 | 335 | ||
331 | } __attribute__((aligned(16))); | 336 | } __attribute__((aligned(16))); |
332 | 337 | ||
@@ -350,10 +355,23 @@ struct i387_soft_struct { | |||
350 | u32 entry_eip; | 355 | u32 entry_eip; |
351 | }; | 356 | }; |
352 | 357 | ||
358 | struct xsave_hdr_struct { | ||
359 | u64 xstate_bv; | ||
360 | u64 reserved1[2]; | ||
361 | u64 reserved2[5]; | ||
362 | } __attribute__((packed)); | ||
363 | |||
364 | struct xsave_struct { | ||
365 | struct i387_fxsave_struct i387; | ||
366 | struct xsave_hdr_struct xsave_hdr; | ||
367 | /* new processor state extensions will go here */ | ||
368 | } __attribute__ ((packed, aligned (64))); | ||
369 | |||
353 | union thread_xstate { | 370 | union thread_xstate { |
354 | struct i387_fsave_struct fsave; | 371 | struct i387_fsave_struct fsave; |
355 | struct i387_fxsave_struct fxsave; | 372 | struct i387_fxsave_struct fxsave; |
356 | struct i387_soft_struct soft; | 373 | struct i387_soft_struct soft; |
374 | struct xsave_struct xsave; | ||
357 | }; | 375 | }; |
358 | 376 | ||
359 | #ifdef CONFIG_X86_64 | 377 | #ifdef CONFIG_X86_64 |