Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik

512 byte structure for FPU / MMX / SSE registers corresponds to the layout used by the instructions fxsave and fxrstor. More...

#include <machine/fpu.h>

+ Collaboration diagram for FPU::State:

Classes

struct  ST
 80 bit registers for FPU stack / MMX More...
 
struct  XMM
 128 bit SSE registers More...
 

Public Member Functions

void init ()
 Set structure to the initial FPU state Clears the FPU state (but its not just zeroed!)
 
void save ()
 Save the current FPU (+ MMX + SSE) state into this structure. More...
 
void restore ()
 Restore the saved FPU (+ MMX + SSE) state from this structure. More...
 

Public Attributes

uint16_t fcw
 FPU Control Word.
 
uint16_t fsw
 FPU Status Word.
 
uint8_t ftw
 FPU Tag Word.
 
uint16_t __pad0__: 0
 (16 bit alignment)
 
uint16_t fop
 FPU Opcode.
 
union {
uint64_t ip
 
   struct {
uint32_t ip_off
 
uint32_t ip_seg
 
   } 
 
}; 
 
union {
uint64_t dp
 
   struct {
uint32_t dp_off
 
uint32_t dp_seg
 
   } 
 
}; 
 
uint32_t mxcsr
 
uint32_t mxcsr_mask
 
struct {
ST value
 
uint64_t __pad0__: 48
 
st [8]
 
XMM xmm [16]
 
uint64_t reserved [12]
 (reserved)
 

Detailed Description

512 byte structure for FPU / MMX / SSE registers corresponds to the layout used by the instructions fxsave and fxrstor.

See also
ISDMv1 Chapter 10.5.1 FXSAVE Area

Class Documentation

◆ FPU::State::ST

struct FPU::State::ST

80 bit registers for FPU stack / MMX

Class Members
uint64_t fraction: 63
uint64_t integer: 1
uint16_t exponent: 15
uint16_t sign: 1

◆ FPU::State::XMM

struct FPU::State::XMM

128 bit SSE registers

Class Members
uint64_t low
uint64_t high

Member Function Documentation

◆ save()

void FPU::State::save ( )
inline

Save the current FPU (+ MMX + SSE) state into this structure.

Note
Structure has to be 16 byte aligned

◆ restore()

void FPU::State::restore ( )
inline

Restore the saved FPU (+ MMX + SSE) state from this structure.

Note
Structure has to be 16 byte aligned

The documentation for this struct was generated from the following files:
  • machine/fpu.h
  • machine/fpu.cc