[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