[][src]Struct x86_64_xsave::fxsave::FXSaveArea

#[repr(C)]
pub struct FXSaveArea { pub x87_state_part_1: X87StatePart1, pub sse_state_part_1: SseStatePart1, pub x87_state_part_2: X87StatePart2, pub sse_state_part_2: SseStatePart2, pub unused: [u64; 6], // some fields omitted }

Used to save and restore the state of the FPU. Must be 16-byte aligned (enforced).

Always 512 bytes in size.

Documented in Table 10-2 of the Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 1 and repeated in the documentation of the XSAVE area in Section 13.4.

The legacy instructions FSAVE and FNSAVE (save FPU state) and FRSTOR (restore FPU state) also work with with this layout. The legacy instructions FSTENV and FNSTENV (save FPU environment) and FLDENV (restore FPU environment) also work with the layout in x87_state_part_1.

Fields

x87_state_part_1: X87StatePart1

The x87 state exists in two, non-contiguous areas ('parts').

This is part 1.

sse_state_part_1: SseStatePart1

The SSE state exists in two, non-contiguous areas ('parts').

This is part 1.

x87_state_part_2: X87StatePart2

The x87 state exists in two, non-contiguous areas ('parts').

This is part 2.

sse_state_part_2: SseStatePart2

The SSE state exists in two, non-contiguous areas ('parts').

This is part 2.

unused: [u64; 6]

These bytes are unused are never written to or read from.

(Not restored (read) when restoring processor state).

Methods

impl FXSaveArea[src]

pub fn save() -> Self[src]

Saves this FXSAVE area.

Used to save and restore the state of the FPU (x87) and MMX (SSE).

Unlike the legacy instructions FSAVE and FNSAVE, this does not change the state of the FPU (x87) and MMX (SSE) units, registers and associated data.

pub fn restore(&self)[src]

Restores this FXSAVE area.

If any reserved bits are set in sse_state().0.mxcsr_register_value, then a restore of this value will cause a general-protection fault (#GP).

pub fn x87_state(&self) -> (&X87StatePart1, &X87StatePart2)[src]

x87 state.

The x87 state is in two non-contiguous areas ('parts').

pub fn x87_state_mut(&mut self) -> (&mut X87StatePart1, &mut X87StatePart2)[src]

x87 state.

The x87 state is in two non-contiguous areas ('parts').

pub fn sse_state(&self) -> (&SseStatePart1, &SseStatePart2)[src]

SSE state.

The SSE state is in two non-contiguous areas ('parts').

pub fn sse_state_mut(&mut self) -> (&mut SseStatePart1, &mut SseStatePart2)[src]

SSE state.

The SSE state is in two non-contiguous areas ('parts').

Trait Implementations

impl Clone for FXSaveArea[src]

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl Default for FXSaveArea[src]

impl Debug for FXSaveArea[src]

Auto Trait Implementations

impl Send for FXSaveArea

impl Sync for FXSaveArea

Blanket Implementations

impl<T> From for T[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.