[Glibc-bsd-commits] r1998 - in trunk/glibc-ports/kfreebsd: i386/bits x86_64/bits

aurel32 at alioth.debian.org aurel32 at alioth.debian.org
Sun Sep 9 17:29:33 UTC 2007


Author: aurel32
Date: 2007-09-09 17:29:33 +0000 (Sun, 09 Sep 2007)
New Revision: 1998

Modified:
   trunk/glibc-ports/kfreebsd/i386/bits/mcontext.h
   trunk/glibc-ports/kfreebsd/i386/bits/sigcontext.h
   trunk/glibc-ports/kfreebsd/x86_64/bits/mcontext.h
   trunk/glibc-ports/kfreebsd/x86_64/bits/sigcontext.h
Log:
Make x86_64 headers bi-arch compatible


Modified: trunk/glibc-ports/kfreebsd/i386/bits/mcontext.h
===================================================================
--- trunk/glibc-ports/kfreebsd/i386/bits/mcontext.h	2007-09-09 16:57:12 UTC (rev 1997)
+++ trunk/glibc-ports/kfreebsd/i386/bits/mcontext.h	2007-09-09 17:29:33 UTC (rev 1998)
@@ -1,6 +1,6 @@
-/* Machine-dependent processor state structure for FreeBSD.  i386 version.
+/* Machine-dependent processor state structure for FreeBSD.
    Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
+   This file is part of the GNU C Library.  i386 version.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -51,15 +51,15 @@
  * based on $FreeBSD: src/sys/i386/include/ucontext.h,v 1.10 2002/12/02 19:58:55 deischen Exp $
  */
 
-	/*
-	 * The first 20 fields must match the definition of
-	 * sigcontext. So that we can support sigcontext
-	 * and ucontext_t at the same time.
-	 */
-
 /* Whole processor state.  */
 typedef struct
   {
+    /*
+     * The first 20 fields must match the definition of
+     * sigcontext. So that we can support sigcontext
+     * and ucontext_t at the same time.
+     */
+
     int mc_onstack;		/* Nonzero if running on sigstack.  */
 
     /* Segment registers.  */

Modified: trunk/glibc-ports/kfreebsd/i386/bits/sigcontext.h
===================================================================
--- trunk/glibc-ports/kfreebsd/i386/bits/sigcontext.h	2007-09-09 16:57:12 UTC (rev 1997)
+++ trunk/glibc-ports/kfreebsd/i386/bits/sigcontext.h	2007-09-09 17:29:33 UTC (rev 1998)
@@ -24,59 +24,13 @@
 #ifndef _BITS_SIGCONTEXT_H
 #define _BITS_SIGCONTEXT_H  1
 
-#ifdef __x86_64__
-struct sigcontext {
-	__sigset_t sc_mask;	/* signal mask to restore */
-	long	sc_onstack;	/* sigstack state to restore */
-	union { long	sc_rdi;       long  rdi;};
-	union { long	sc_rsi;	      long  rsi;};
-	union { long	sc_rdx;	      long  rdx;};
-	union { long	sc_rcx;	      long  rcx;};
-	union { long	sc_r8;	      long  r8;};
-	union { long	sc_r9;	      long  r9;};
-	union { long	sc_rax;	      long  rax;};
-	union { long	sc_rbx;	      long  rbx;};
-	union { long	sc_rbp;	      long  rbp;};
-	union { long	sc_r10;	      long  r10;};
-	union { long	sc_r11;	      long  r11;};
-	union { long	sc_r12;	      long  r12;};
-	union { long	sc_r13;	      long  r13;};
-	union { long	sc_r14;	      long  r14;};
-	union { long	sc_r15;	      long  r15;};
-	union { long	sc_trapno;    long  trapno;};
-	union { long	sc_addr;      long  addr;};
-	union { long	sc_flags;     long  flags;};
-	union { long	sc_err;	      long  err;};
-	union { long	sc_rip;	      long  rip;};
-	union { long	sc_cs;	      long  cs;};
-	union { long	sc_rflags;    long  rflags;};
-	union { long	sc_rsp;	      long  rsp;};
-	union { long	sc_ss;	      long  ss;};
-	long	sc_len;		/* sizeof(mcontext_t) */
-	/*
-	 * XXX - See <machine/ucontext.h> and <machine/fpu.h> for
-	 *       the following fields.
-	 */
-	long	sc_fpformat;
-	long	sc_ownedfp;
-	long	sc_fpstate[64] __attribute__((aligned(16)));
-	long	sc_spare[8];
-};
-
-/* Traditional BSD names for some members.  */
-#define sc_sp           sc_rsp          /* Stack pointer.  */
-#define sc_fp           sc_rbp          /* Frame pointer.  */
-#define sc_pc           sc_rip          /* Process counter.  */
-
-#else
-
 /* State of this thread when the signal was taken.
    The unions below are for compatibility with Linux (whose sigcontext
    components don't have sc_ prefix) */
 struct sigcontext
   {
-    __sigset_t sc_mask;		/* Blocked signals to restore.  */
-    int sc_onstack;		/* Nonzero if running on sigstack.  */
+    __sigset_t 	sc_mask;		/* Blocked signals to restore.  */
+    int 	sc_onstack;		/* Nonzero if running on sigstack.  */
 
     /* Segment registers.  */
     union { int sc_gs; int gs; };
@@ -140,6 +94,4 @@
 
 #endif
 
-#endif
-
 #endif /* _BITS_SIGCONTEXT_H */

Modified: trunk/glibc-ports/kfreebsd/x86_64/bits/mcontext.h
===================================================================
--- trunk/glibc-ports/kfreebsd/x86_64/bits/mcontext.h	2007-09-09 16:57:12 UTC (rev 1997)
+++ trunk/glibc-ports/kfreebsd/x86_64/bits/mcontext.h	2007-09-09 17:29:33 UTC (rev 1998)
@@ -1,6 +1,6 @@
 /* Machine-dependent processor state structure for FreeBSD.
    Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
+   This file is part of the GNU C Library.  x86_64 version.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -52,50 +52,116 @@
  * based on $FreeBSD: src/sys/amd64/include/ucontext.h,v 1.18 2003/11/08 04:39:22 peter Exp $
  */
 
-typedef struct {
-	/*
-	 * The first 20 fields must match the definition of
-	 * sigcontext. So that we can support sigcontext
-	 * and ucontext_t at the same time.
-	 */
-	long	mc_onstack;		/* XXX - sigcontext compat. */
-	long	mc_rdi;			/* machine state (struct trapframe) */
-	long	mc_rsi;
-	long	mc_rdx;
-	long	mc_rcx;
-	long	mc_r8;
-	long	mc_r9;
-	long	mc_rax;
-	long	mc_rbx;
-	long	mc_rbp;
-	long	mc_r10;
-	long	mc_r11;
-	long	mc_r12;
-	long	mc_r13;
-	long	mc_r14;
-	long	mc_r15;
-	long	mc_trapno;
-	long	mc_addr;
-	long	mc_flags;
-	long	mc_err;
-	long	mc_rip;
-	long	mc_cs;
-	long	mc_rflags;
-	long	mc_rsp;
-	long	mc_ss;
+#ifdef __i386__
 
-	long	mc_len;			/* sizeof(mcontext_t) */
+/* Whole processor state.  */
+typedef struct
+  {
+    /*
+     * The first 20 fields must match the definition of
+     * sigcontext. So that we can support sigcontext
+     * and ucontext_t at the same time.
+     */
+
+    int mc_onstack;		/* Nonzero if running on sigstack.  */
+
+    /* Segment registers.  */
+    int mc_gs;
+    int mc_fs;
+    int mc_es;
+    int mc_ds;
+
+    /* "General" registers.  These members are in the order that the i386
+       `pusha' and `popa' instructions use (`popa' ignores %esp).  */
+    int mc_edi;
+    int mc_esi;
+    int mc_ebp;
+    int mc_isp;			/* Not used; sc_esp is used instead.  */
+    int mc_ebx;
+    int mc_edx;
+    int mc_ecx;
+    int mc_eax;
+
+    int mc_trapno;
+    int mc_err;
+
+    int mc_eip;			/* Instruction pointer.  */
+    int mc_cs;			/* Code segment register.  */
+
+    int mc_efl;			/* Processor flags.  */
+
+    int mc_esp;			/* This stack pointer is used.  */
+    int mc_ss;			/* Stack segment register.  */
+
+    int mc_len;			/* sizeof(mcontext_t) */
 #define	_MC_FPFMT_NODEV		0x10000	/* device not present or configured */
+#define	_MC_FPFMT_387		0x10001
 #define	_MC_FPFMT_XMM		0x10002
-	long	mc_fpformat;
+    int mc_fpformat;
 #define	_MC_FPOWNED_NONE	0x20000	/* FP state not used */
 #define	_MC_FPOWNED_FPU		0x20001	/* FP state came from FPU */
 #define	_MC_FPOWNED_PCB		0x20002	/* FP state came from PCB */
-	long	mc_ownedfp;
-	/*
-	 * See <machine/fpu.h> for the internals of mc_fpstate[].
-	 */
-	long	mc_fpstate[64] __attribute__((aligned(16)));
-	long	mc_spare[8];
+    int mc_ownedfp;
+    int mc_spare1[1];		/* align next field to 16 bytes */
+    /*
+     * See <machine/npx.h> for the internals of mc_fpstate[].
+     */
+    int mc_fpstate[128] __attribute__((aligned(16)));
+    int mc_spare2[8];
+  } mcontext_t;
+
+#else
+
+/* Whole processor state.  */
+typedef struct
+  {
+    /*
+     * The first 20 fields must match the definition of
+     * sigcontext. So that we can support sigcontext
+     * and ucontext_t at the same time.
+     */
+    long mc_onstack;		/* XXX - sigcontext compat. */
+    long mc_rdi;			/* machine state (struct trapframe) */
+    long mc_rsi;
+    long mc_rdx;
+    long mc_rcx;
+    long mc_r8;
+    long mc_r9;
+    long mc_rax;
+    long mc_rbx;
+    long mc_rbp;
+    long mc_r10;
+    long mc_r11;
+    long mc_r12;
+    long mc_r13;
+    long mc_r14;
+    long mc_r15;
+    long mc_trapno;
+    long mc_addr;
+    long mc_flags;
+    long mc_err;
+    long mc_rip;
+    long mc_cs;
+    long mc_rflags;
+    long mc_rsp;
+    long mc_ss;
+
+    long mc_len;			/* sizeof(mcontext_t) */
+#define	_MC_FPFMT_NODEV		0x10000	/* device not present or configured */
+#define	_MC_FPFMT_XMM		0x10002
+    long mc_fpformat;
+#define	_MC_FPOWNED_NONE	0x20000	/* FP state not used */
+#define	_MC_FPOWNED_FPU		0x20001	/* FP state came from FPU */
+#define	_MC_FPOWNED_PCB		0x20002	/* FP state came from PCB */
+    long mc_ownedfp;
+     /*
+      * See <machine/fpu.h> for the internals of mc_fpstate[].
+      */
+    long mc_fpstate[64] __attribute__((aligned(16)));
+    long mc_spare[8];
 } mcontext_t;
 
+#endif
+
+/* Traditional BSD names for some members.  */
+#define mc_eflags	mc_efl

Modified: trunk/glibc-ports/kfreebsd/x86_64/bits/sigcontext.h
===================================================================
--- trunk/glibc-ports/kfreebsd/x86_64/bits/sigcontext.h	2007-09-09 16:57:12 UTC (rev 1997)
+++ trunk/glibc-ports/kfreebsd/x86_64/bits/sigcontext.h	2007-09-09 17:29:33 UTC (rev 1998)
@@ -31,8 +31,8 @@
    components don't have sc_ prefix) */
 struct sigcontext
   {
-    __sigset_t sc_mask;		/* Blocked signals to restore.  */
-    int sc_onstack;		/* Nonzero if running on sigstack.  */
+    __sigset_t 	sc_mask;		/* Blocked signals to restore.  */
+    int 	sc_onstack;		/* Nonzero if running on sigstack.  */
 
     /* Segment registers.  */
     union { int sc_gs; int gs; };
@@ -57,7 +57,7 @@
     union { int sc_eip; int eip; };		/* Instruction pointer.  */
     union { int sc_cs; int cs; };		/* Code segment register.  */
 
-    union { int sc_efl; int eflags; };		/* Processor flags.  */
+    union { int sc_efl; int eflags; }; 		/* Processor flags.  */
 
     union { int sc_esp; int esp; };		/* This stack pointer is used.  */
     union { int sc_ss; int ss; };		/* Stack segment register.  */
@@ -98,43 +98,44 @@
 
 #else
 
-struct sigcontext {
-	__sigset_t sc_mask;	/* signal mask to restore */
-	long	sc_onstack;	/* sigstack state to restore */
-	union { long	sc_rdi;       long  rdi;};
-	union { long	sc_rsi;	      long  rsi;};
-	union { long	sc_rdx;	      long  rdx;};
-	union { long	sc_rcx;	      long  rcx;};
-	union { long	sc_r8;	      long  r8;};
-	union { long	sc_r9;	      long  r9;};
-	union { long	sc_rax;	      long  rax;};
-	union { long	sc_rbx;	      long  rbx;};
-	union { long	sc_rbp;	      long  rbp;};
-	union { long	sc_r10;	      long  r10;};
-	union { long	sc_r11;	      long  r11;};
-	union { long	sc_r12;	      long  r12;};
-	union { long	sc_r13;	      long  r13;};
-	union { long	sc_r14;	      long  r14;};
-	union { long	sc_r15;	      long  r15;};
-	union { long	sc_trapno;    long  trapno;};
-	union { long	sc_addr;      long  addr;};
-	union { long	sc_flags;     long  flags;};
-	union { long	sc_err;	      long  err;};
-	union { long	sc_rip;	      long  rip;};
-	union { long	sc_cs;	      long  cs;};
-	union { long	sc_rflags;    long  rflags;};
-	union { long	sc_rsp;	      long  rsp;};
-	union { long	sc_ss;	      long  ss;};
-	long	sc_len;		/* sizeof(mcontext_t) */
-	/*
-	 * XXX - See <machine/ucontext.h> and <machine/fpu.h> for
-	 *       the following fields.
-	 */
-	long	sc_fpformat;
-	long	sc_ownedfp;
-	long	sc_fpstate[64] __attribute__((aligned(16)));
-	long	sc_spare[8];
-};
+struct sigcontext
+  {
+    __sigset_t 	sc_mask;		/* Blocked signals to restore.  */
+    long 	sc_onstack;		/* Nonzero if running on sigstack.  */
+    union { long sc_rdi; long rdi;};
+    union { long sc_rsi; long rsi;};
+    union { long sc_rdx; long rdx;};
+    union { long sc_rcx; long rcx;};
+    union { long sc_r8; long r8;};
+    union { long sc_r9; long r9;};
+    union { long sc_rax; long rax;};
+    union { long sc_rbx; long rbx;};
+    union { long sc_rbp; long rbp;};
+    union { long sc_r10; long r10;};
+    union { long sc_r11; long r11;};
+    union { long sc_r12; long r12;};
+    union { long sc_r13; long r13;};
+    union { long sc_r14; long r14;};
+    union { long sc_r15; long r15;};
+    union { long sc_trapno; long trapno;};
+    union { long sc_addr; long addr;};
+    union { long sc_flags; long flags;};
+    union { long sc_err; long err;};
+    union { long sc_rip; long rip;};
+    union { long sc_cs; long cs;};
+    union { long sc_rflags; long rflags;};
+    union { long sc_rsp; long rsp;};
+    union { long sc_ss; long ss;};
+    long	sc_len;        /* sizeof(mcontext_t) */
+    /*
+     * XXX - See <machine/ucontext.h> and <machine/fpu.h> for
+     *       the following fields.
+     */
+    long	sc_fpformat;
+    long	sc_ownedfp;
+    long	sc_fpstate[64] __attribute__((aligned(16)));
+    long	sc_spare[8];
+  };
 
 /* Traditional BSD names for some members.  */
 #define sc_sp           sc_rsp          /* Stack pointer.  */




More information about the Glibc-bsd-commits mailing list