patch-2.4.0-test2 linux/include/asm-i386/sigcontext.h

Next file: linux/include/asm-i386/socket.h
Previous file: linux/include/asm-i386/semaphore.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test1/linux/include/asm-i386/sigcontext.h linux/include/asm-i386/sigcontext.h
@@ -1,35 +1,58 @@
 #ifndef _ASMi386_SIGCONTEXT_H
 #define _ASMi386_SIGCONTEXT_H
 
-#include <linux/config.h>
 /*
  * As documented in the iBCS2 standard..
  *
- * The first part of "struct _fpstate" is just the
- * normal i387 hardware setup, the extra "status"
- * word is used to save the coprocessor status word
- * before entering the handler.
+ * The first part of "struct _fpstate" is just the normal i387
+ * hardware setup, the extra "status" word is used to save the
+ * coprocessor status word before entering the handler.
+ *
+ * Pentium III FXSR, SSE support
+ *	Gareth Hughes <gareth@valinux.com>, May 2000
+ *
+ * The FPU state data structure has had to grow to accomodate the
+ * extended FPU state required by the Streaming SIMD Extensions.
+ * There is no documented standard to accomplish this at the moment.
  */
 struct _fpreg {
 	unsigned short significand[4];
 	unsigned short exponent;
 };
 
+struct _fpxreg {
+	unsigned short significand[4];
+	unsigned short exponent;
+	unsigned short padding[3];
+};
+
+struct _xmmreg {
+	unsigned long element[4];
+};
+
 struct _fpstate {
-	unsigned long 	cw,
-			sw,
-			tag,
-			ipoff,
-			cssel,
-			dataoff,
-			datasel;
+	/* Regular FPU environment */
+	unsigned long 	cw;
+	unsigned long	sw;
+	unsigned long	tag;
+	unsigned long	ipoff;
+	unsigned long	cssel;
+	unsigned long	dataoff;
+	unsigned long	datasel;
 	struct _fpreg	_st[8];
-	unsigned long	status;
-#ifdef CONFIG_X86_FX
+	unsigned short	status;
+	unsigned short	magic;		/* 0xffff = regular FPU data only */
+
+	/* FXSR FPU environment */
+	unsigned long	_fxsr_env[6];	/* FXSR FPU env is ignored */
 	unsigned long	mxcsr;
-	unsigned long   _xmm[4*22];
-#endif
+	unsigned long	reserved;
+	struct _fpxreg	_fxsr_st[8];	/* FXSR FPU reg data is ignored */
+	struct _xmmreg	_xmm[8];
+	unsigned long	padding[56];
 };
+
+#define X86_FXSR_MAGIC		0x0000
 
 struct sigcontext {
 	unsigned short gs, __gsh;

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)