@@ -445,34 +445,6 @@ struct alignas(8) ArithFlags final {
445445
446446static_assert (16 == sizeof (ArithFlags ), "Invalid packing of `ArithFlags`." );
447447
448- union XCR0 {
449- uint64_t flat ;
450-
451- struct {
452- uint32_t eax ;
453- uint32_t edx ;
454- } __attribute__((packed ));
455-
456- // Bits specify what process states should be saved.
457- struct {
458- uint64_t x87_fpu_mmx : 1 ; // Must be 1; bit 0.
459- uint64_t xmm : 1 ; // SSE.
460- uint64_t ymm : 1 ; // AVX and AVX2.
461- uint64_t bndreg : 1 ; // Part of MPX.
462- uint64_t bndcsr : 1 ; // Part of MPX.
463- uint64_t opmask : 1 ; // Registers k0 through k7, AVX512-only.
464- uint64_t
465- zmm_hi256 : 1 ; // High 256 bits of ZMM0 through ZMM15, AVX512-only.
466- uint64_t hi16_zmm : 1 ; // ZMM16 through ZMM31, AVX512-only.
467- uint64_t pkru : 1 ; // Protected key stuff.
468- uint64_t _reserved0 : 53 ;
469- uint64_t lwp : 1 ; // AMD lightweight profiling.
470- uint64_t _reserved1 : 1 ;
471- } __attribute__((packed ));
472- } __attribute__((packed ));
473-
474- static_assert (8 == sizeof (XCR0 ), "Invalid packing of `XCR0`." );
475-
476448struct alignas (8 ) Segments final {
477449 volatile uint16_t _0 ;
478450 SegmentSelector ss ;
@@ -794,7 +766,7 @@ struct alignas(16) X86State : public ArchState {
794766 X87Stack st ; // 128 bytes.
795767 MMX mmx ; // 128 bytes.
796768 FPUStatusFlags sw ; // 24 bytes
797- XCR0 xcr0 ; // 8 bytes.
769+ uint8_t _padding [ 8 ]; // 8 bytes
798770 FPU x87 ; // 512 bytes
799771 SegmentCaches seg_caches ; // 96 bytes
800772 K_REG k_reg ; // 128 bytes.
0 commit comments