diff options
author | kib <kib@FreeBSD.org> | 2012-01-17 17:07:13 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2012-01-17 17:07:13 +0000 |
commit | 69f3e63a09d0bf9cf5040a94480ab69a27962f72 (patch) | |
tree | 44dda2232a798ac1a0f380e2d7f719b24fb94aa7 /sys/i386/include/npx.h | |
parent | 8999bd2861cb515c00c0dd3f8273f7e761e0bce4 (diff) | |
download | FreeBSD-src-69f3e63a09d0bf9cf5040a94480ab69a27962f72.zip FreeBSD-src-69f3e63a09d0bf9cf5040a94480ab69a27962f72.tar.gz |
Add definitions for the FPU extended state header, legacy extended
state and AVX state.
MFC after: 1 week
Diffstat (limited to 'sys/i386/include/npx.h')
-rw-r--r-- | sys/i386/include/npx.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/sys/i386/include/npx.h b/sys/i386/include/npx.h index 6b56bb4..d7ead54 100644 --- a/sys/i386/include/npx.h +++ b/sys/i386/include/npx.h @@ -101,6 +101,11 @@ struct xmmacc { u_char xmm_bytes[16]; }; +/* Contents of the upper 16 bytes of each AVX extended accumulator */ +struct ymmacc { + uint8_t ymm_bytes[16]; +}; + struct savexmm { struct envxmm sv_env; struct { @@ -116,6 +121,28 @@ union savefpu { struct savexmm sv_xmm; }; +struct xstate_hdr { + uint64_t xstate_bv; + uint8_t xstate_rsrv0[16]; + uint8_t xstate_rsrv[40]; +}; + +struct savexmm_xstate { + struct xstate_hdr sx_hd; + struct ymmacc sx_ymm[16]; +}; + +struct savexmm_ymm { + struct envxmm sv_env; + struct { + struct fpacc87 fp_acc; + int8_t fp_pad[6]; /* padding */ + } sv_fp[8]; + struct xmmacc sv_xmm[16]; + uint8_t sv_pad[96]; + struct savexmm_xstate sv_xstate; +} __aligned(64); + /* * The hardware default control word for i387's and later coprocessors is * 0x37F, giving: |