[Openmcl-cvs-notifications] r11372 - in /trunk/source/lisp-kernel: freebsdx8632/fpu.h x86-exceptions.c x86-exceptions.h

gb at clozure.com gb at clozure.com
Sun Nov 16 07:32:47 EST 2008


Author: gb
Date: Sun Nov 16 07:32:47 2008
New Revision: 11372

Log:
Can't assume that <machine/npx.h> exists (it doesn't on an amd64 FreeBSD
host), so duplicate the relevant structure definitions and add a "ccl_"
prefix to them.

Added:
    trunk/source/lisp-kernel/freebsdx8632/fpu.h
Modified:
    trunk/source/lisp-kernel/x86-exceptions.c
    trunk/source/lisp-kernel/x86-exceptions.h

Added: trunk/source/lisp-kernel/freebsdx8632/fpu.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/freebsdx8632/fpu.h (added)
+++ trunk/source/lisp-kernel/freebsdx8632/fpu.h Sun Nov 16 07:32:47 2008
@@ -1,0 +1,70 @@
+/* These definitions are taken from the file /usr/include/machine/npx.h,
+   which isn't distributed with amd64 versions of FreeBSD */
+
+/*-
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * William Jolitz.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	from: @(#)npx.h	5.3 (Berkeley) 1/18/91
+ * $FreeBSD: src/sys/i386/include/npx.h,v 1.29.2.1 2006/07/01 00:57:55 dav=
idxu Exp $
+ */
+
+struct  ccl_envxmm {
+	u_int16_t	en_cw;		/* control word (16bits) */
+	u_int16_t	en_sw;		/* status word (16bits) */
+	u_int16_t	en_tw;		/* tag word (16bits) */
+	u_int16_t	en_opcode;	/* opcode last executed (11 bits ) */
+	u_int32_t	en_fip;		/* floating point instruction pointer */
+	u_int16_t	en_fcs;		/* floating code segment selector */
+	u_int16_t	en_pad0;	/* padding */
+	u_int32_t	en_foo;		/* floating operand offset */
+	u_int16_t	en_fos;		/* floating operand segment selector */
+	u_int16_t	en_pad1;	/* padding */
+	u_int32_t	en_mxcsr;	/* SSE sontorol/status register */
+	u_int32_t	en_mxcsr_mask;	/* valid bits in mxcsr */
+};
+
+struct  ccl_xmmacc {
+	u_char	xmm_bytes[16];
+};
+
+struct ccl_fpacc87 {
+	u_char	fp_bytes[10];
+};
+
+struct  ccl_savexmm {
+	struct	ccl_envxmm	sv_env;
+	struct {
+		struct ccl_fpacc87	fp_acc;
+		u_char		fp_pad[6];      /* padding */
+	} sv_fp[8];
+	struct ccl_xmmacc	sv_xmm[8];
+	u_char sv_pad[224];
+} __aligned(16);

Modified: trunk/source/lisp-kernel/x86-exceptions.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/x86-exceptions.c (original)
+++ trunk/source/lisp-kernel/x86-exceptions.c Sun Nov 16 07:32:47 2008
@@ -931,7 +931,7 @@
 #ifdef X8664
     struct savefpu *fpu =3D (struct savefpu *) &(xp->uc_mcontext.mc_fpstat=
e);
 #else
-    struct savexmm *fpu =3D (struct savexmm *) &(xp->uc_mcontext.mc_fpstat=
e);
+    struct ccl_savexmm *fpu =3D (struct ccl_savexmm *) &(xp->uc_mcontext.m=
c_fpstate);
 #endif
     uint32_t mxcsr =3D fpu->sv_env.en_mxcsr;
 =


Modified: trunk/source/lisp-kernel/x86-exceptions.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/x86-exceptions.h (original)
+++ trunk/source/lisp-kernel/x86-exceptions.h Sun Nov 16 07:32:47 2008
@@ -55,7 +55,7 @@
 #ifdef X8664
 #include <machine/fpu.h>
 #else
-#include <machine/npx.h>
+#include "freebsdx8632/fpu.h"
 #endif
 #define xpGPRvector(x) ((natural *)(&((x)->uc_mcontext)))
 #define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
@@ -66,8 +66,8 @@
 #define xpMMXreg(x,n) *((natural *)(&(((struct savefpu *)(&(x)->uc_mcontex=
t.mc_fpstate))->sv_fp[n])))
 #define xpXMMregs(x)(&(((struct savefpu *)(&(x)->uc_mcontext.mc_fpstate))-=
>sv_xmm[0]))
 #else
-#define xpMMXreg(x,n) *((natural *)(&(((struct savexmm *)(&(x)->uc_mcontex=
t.mc_fpstate))->sv_fp[n])))
-#define xpXMMregs(x)(&(((struct savexmm *)(&(x)->uc_mcontext.mc_fpstate))-=
>sv_xmm[0]))
+#define xpMMXreg(x,n) *((natural *)(&(((struct ccl_savexmm *)(&(x)->uc_mco=
ntext.mc_fpstate))->sv_fp[n])))
+#define xpXMMregs(x)(&(((struct ccl_savexmm *)(&(x)->uc_mcontext.mc_fpstat=
e))->sv_xmm[0]))
 #endif
 #endif
 =




More information about the Openmcl-cvs-notifications mailing list