summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2012-06-05 02:09:04 +0400
committerIgor Pashev <pashev.igor@gmail.com>2012-06-05 02:09:04 +0400
commit415ee7d6e47dcb3e0906a7bebc6d52ab8ed899da (patch)
treef7773ad82023c8616b339d84faa4bb7643af0311 /sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86
parent3cc0cd4c5b3bed6f7d9aff26322d505785e11aa9 (diff)
downloadglibc-415ee7d6e47dcb3e0906a7bebc6d52ab8ed899da.tar.gz
Merged changes from kopensolaris-gnu project
http://git.csclub.uwaterloo.ca/?p=kopensolaris-gnu/glibc.git Commits from 9157319 to bad8ac8. This is only partial patch, some changes to not apply and will be resovled and committed next.
Diffstat (limited to 'sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86')
-rw-r--r--sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/Makefile6
-rw-r--r--sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/Versions5
-rw-r--r--sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/bits/machtypes.h53
-rw-r--r--sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/bits/regset.h139
-rw-r--r--sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/door-offsets.sym6
-rw-r--r--sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/isa_defs.h73
-rw-r--r--sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/procfs_isa.h81
-rw-r--r--sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/regset.h97
-rw-r--r--sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/stack.h27
-rw-r--r--sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/syscalls.list3
10 files changed, 490 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/Makefile b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/Makefile
new file mode 100644
index 0000000000..943714d531
--- /dev/null
+++ b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/Makefile
@@ -0,0 +1,6 @@
+ifeq ($(subdir),misc)
+sysdep_routines += sysi86
+endif
+ifeq ($(subdir),misc)
+gen-as-const-headers += door-offsets.sym
+endif
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/Versions b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/Versions
new file mode 100644
index 0000000000..967d374fea
--- /dev/null
+++ b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/Versions
@@ -0,0 +1,5 @@
+libc {
+ GLIBC_2.7 {
+ sysi86;
+ }
+}
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/bits/machtypes.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/bits/machtypes.h
new file mode 100644
index 0000000000..307fb79292
--- /dev/null
+++ b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/bits/machtypes.h
@@ -0,0 +1,53 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _BITS_MACHTYPES_H
+#define _BITS_MACHTYPES_H
+
+#include <features.h>
+
+#ifdef __USE_MISC
+
+#define REG_LABEL_PC 0
+#define REG_LABEL_SP 1
+#define REG_LABEL_BP 2
+#ifdef __i386__
+# define REG_LABEL_EBX 3
+# define REG_LABEL_ESI 4
+# define REG_LABEL_EDI 5
+# define REG_LABEL_MAX 6
+#else
+# define REG_LABEL_RBX 3
+# define REG_LABEL_R12 4
+# define REG_LABEL_R13 5
+# define REG_LABEL_R14 6
+# define REG_LABEL_R15 7
+# define REG_LABEL_MAX 8
+#endif
+
+typedef struct _label_t
+ {
+ long val[REG_LABEL_MAX];
+ } label_t;
+
+#endif /* __USE_MISC */
+
+typedef unsigned char lock_t;
+
+#endif /* _BITS_MACHTYPES_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/bits/regset.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/bits/regset.h
new file mode 100644
index 0000000000..d8ab9029a3
--- /dev/null
+++ b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/bits/regset.h
@@ -0,0 +1,139 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _BITS_REGSET_H
+#define _BITS_REGSET_H
+
+#include <features.h>
+
+typedef struct __fpu
+ {
+ union
+ {
+ struct __fpchip_state
+ {
+ __uint32_t __state[27];
+ __uint32_t __status;
+ __uint32_t __mxcsr;
+ __uint32_t __xstatus;
+ __uint32_t __pad[2];
+ __uint32_t __xmm[4][8];
+ } __fpchip_state;
+ struct __fp_emul_space
+ {
+ __uint8_t __fp_emul[246];
+ __uint8_t __fp_epad[2];
+ } __fp_emul_space;
+ __uint32_t __f_fpregs[95];
+ } __fp_reg_set;
+ } fpregset_t;
+
+#ifdef __amd64
+# define _NGREG 28
+#else
+# define _NGREG 19
+#endif
+#define NGREG _NGREG
+
+typedef int greg_t;
+
+#if defined (_SYSCALL32)
+typedef int32_t greg32_t;
+typedef int64_t greg64_t;
+#endif
+
+typedef greg_t gregset_t[_NGREG];
+
+typedef struct
+ {
+ gregset_t gregs;
+ fpregset_t fpregs;
+ } mcontext_t;
+
+#ifdef __USE_MISC
+
+struct fxsave_state
+ {
+ __uint16_t fx_fcw;
+ __uint16_t fx_fsw;
+ __uint16_t fx_fctw;
+ __uint16_t fx_fop;
+#ifdef __amd64__
+ __uint64_t fx_rip;
+ __uint64_t fx_rdp;
+#else
+ __uint32_t fx_eip;
+ __uint16_t fx_cs;
+ __uint16_t __fx_ign0;
+ __uint32_t fx_dp;
+ __uint16_t fx_ds;
+ __uint16_t __fx_ign1;
+#endif
+ __uint32_t fx_mxcsr;
+ __uint32_t fx_mxcsr_mask;
+ union
+ {
+ __uint16_t fpr_16[5];
+ unsigned long long fpr_mmx;
+ __uint32_t __fpr_pad[4];
+ } fx_st[8];
+#if defined(__amd64)
+ upad128_t fx_xmm[16]; /* 128-bit registers */
+ upad128_t __fx_ign2[6];
+#else
+ upad128_t fx_xmm[8]; /* 128-bit registers */
+ upad128_t __fx_ign2[14];
+#endif
+ };
+
+struct fnsave_state
+ {
+ __uint16_t f_fcw;
+ __uint16_t __f_ign0;
+ __uint16_t f_fsw;
+ __uint16_t __f_ign1;
+ __uint16_t f_ftw;
+ __uint16_t __f_ign2;
+ __uint32_t f_eip;
+ __uint16_t f_cs;
+ __uint16_t f_fop;
+ __uint32_t f_dp;
+ __uint16_t f_ds;
+ __uint16_t __f_ign3;
+ union
+ {
+ __uint16_t fpr_16[5];
+ } f_st[8];
+ };
+
+typedef struct
+ {
+ union _kfpu_u
+ {
+ struct fxsave_state kfpu_fx;
+#ifdef __i386__
+ struct fnsave_state kfpu_fn;
+#endif
+ } kfpu_u;
+ __uint32_t kfpu_status;
+ __uint32_t kfpu_xstatus;
+ } kfpu_t;
+
+#endif /* __USE_MISC */
+
+#endif /* _BITS_REGSET_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/door-offsets.sym b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/door-offsets.sym
new file mode 100644
index 0000000000..325a4dd6f7
--- /dev/null
+++ b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/door-offsets.sym
@@ -0,0 +1,6 @@
+#include <sysdep.h>
+#include <sys/door.h>
+
+oDOOR_RESULTS_PC offsetof (struct door_results, pc)
+oDOOR_RESULTS_NSERVERS offsetof (struct door_results, nservers)
+oDOOR_RESULTS_DOOR_INFO offsetof (struct door_results, door_info)
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/isa_defs.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/isa_defs.h
new file mode 100644
index 0000000000..6fc89e2c25
--- /dev/null
+++ b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/isa_defs.h
@@ -0,0 +1,73 @@
+/* Declarations of x86 (i386 and amd64) macros.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SYS_ISA_DEFS_H
+#define _SYS_ISA_DEFS_H
+
+#define __x86
+
+#define _LITTLE_ENDIAN
+#define _STACK_GROWS_DOWNWARD
+#define _LONG_LONG_LTOH
+#define _BIT_FIELDS_LTOH
+#define _IEEE_754
+#define _CHAR_IS_SIGNED
+#define _BOOL_ALIGNMENT 1
+#define _CHAR_ALIGNMENT 1
+#define _SHORT_ALIGNMENT 2
+#define _INT_ALIGNMENT 4
+#define _FLOAT_ALIGNMENT 4
+#define _FLOAT_COMPLEX_ALIGNMENT 4
+
+#ifdef __amd64__
+# define _LONG_ALIGNMENT 8
+# define _LONG_LONG_ALIGNMENT 8
+# define _DOUBLE_ALIGNMENT 8
+# define _DOUBLE_COMPLEX_ALIGNMENT 8
+# define _LONG_DOUBLE_ALIGNMENT 16
+# define _LONG_DOUBLE_COMPLEX_ALIGNMENT 16
+# define _POINTER_ALIGNMENT 8
+# define _MAX_ALIGNMENT 16
+# define _ALIGNMENT_REQUIRED 1
+# define _LP64
+# define _MULTI_DATAMODEL
+# define __i386_COMPAT
+#else /* __i386__ */
+# define _LONG_ALIGNMENT 4
+# define _LONG_LONG_ALIGNMENT 4
+# define _DOUBLE_ALIGNMENT 4
+# define _DOUBLE_COMPLEX_ALIGNMENT 4
+# define _LONG_DOUBLE_ALIGNMENT 4
+# define _LONG_DOUBLE_COMPLEX_ALIGNMENT 4
+# define _POINTER_ALIGNMENT 4
+# define _MAX_ALIGNMENT 4
+# define _ALIGNMENT_REQUIRED 0
+# define _ILP32
+#endif /* __amd64__ */
+
+#define _LONG_LONG_ALIGNMENT_32 4
+#define _SUNOS_VTOC_16
+#define _DMA_USES_PHYSADDR
+#define _FIRMWARE_NEEDS_FDISK
+#define _PSM_MODULES
+#define _RTC_CONFIG
+#define _DONT_USE_1275_GENERIC_NAMES
+#define _HAVE_CPUID_INSN
+
+#endif /* _SYS_ISA_DEFS_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/procfs_isa.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/procfs_isa.h
new file mode 100644
index 0000000000..1b038915e1
--- /dev/null
+++ b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/procfs_isa.h
@@ -0,0 +1,81 @@
+/* Declarations of x86 (i386 and amd64) procfs structs and macros.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SYS_PROCFS_ISA_H
+#define _SYS_PROCFS_ISA_H
+
+#include <sys/regset.h>
+#include <sys/isa_defs.h>
+
+#define PR_MODEL_UNKNOWN 0
+#define PR_MODEL_ILP32 1
+#define PR_MODEL_LP64 2
+
+#ifdef _LP64
+# define PR_MODEL_NATIVE PR_MODEL_LP64
+#else
+# define PR_MODEL_NATIVE PR_MODEL_ILP32
+#endif
+
+typedef unsigned char instr_t;
+
+#define prgregset_t gregset_t
+#define prfpregset_t fpregset_t
+#define prgreg_t greg_t
+#define prfpregset fpu
+
+#define NPRGREG _NGREG
+
+#ifdef _SYSCALL32
+
+typedef unsigned char instr32_t;
+
+# if defined(__amd64)
+# define NPRGREG32 _NGREG32
+# define prgreg32_t greg32_t
+# define prgregset32_t gregset32_t
+# define prfpregset32 fpu32
+# define prfpregset32_t fpregset32_t
+# else
+# define NPRGREG32 _NGREG
+# define prgreg32_t greg_t
+# define prgregset32_t gregset_t
+# define prfpregset32 fpu
+# define prfpregset32_t fpregset_t
+# endif
+
+#endif /* _SYSCALL32 */
+
+#ifdef __amd64__
+# define R_PC REG_RIP
+# define R_PS REG_RFL
+# define R_SP REG_RSP
+# define R_FP REG_RBP
+# define R_R0 REG_RAX
+# define R_R1 REG_RDX
+#else
+# define R_PC EIP
+# define R_PS EFL
+# define R_SP UESP
+# define R_FP EBP
+# define R_R0 EAX
+# define R_R1 EDX
+#endif
+
+#endif /* _SYS_PROCFS_ISA_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/regset.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/regset.h
new file mode 100644
index 0000000000..080ac02930
--- /dev/null
+++ b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/regset.h
@@ -0,0 +1,97 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SYS_REGSET_H
+#define _SYS_REGSET_H 1
+
+#include <features.h>
+#include <bits/types.h>
+#include <bits/regset.h>
+
+#ifdef __USE_MISC
+
+# define REG_R15 0
+# define REG_R14 1
+# define REG_R13 2
+# define REG_R12 3
+# define REG_R11 4
+# define REG_R10 5
+# define REG_R9 6
+# define REG_R8 7
+# define REG_RDI 8
+# define REG_RSI 9
+# define REG_RBP 10
+# define REG_RBX 11
+# define REG_RDX 12
+# define REG_RCX 13
+# define REG_RAX 14
+# define REG_TRAPNO 15
+# define REG_ERR 16
+# define REG_RIP 17
+# define REG_CS 18
+# define REG_RFL 19
+# define REG_RSP 20
+# define REG_SS 21
+# define REG_FS 22
+# define REG_GS 23
+# define REG_ES 24
+# define REG_DS 25
+# define REG_FSBASE 26
+# define REG_GSBASE 27
+
+# define GS 0
+# define FS 1
+# define ES 2
+# define DS 3
+# define EDI 4
+# define ESI 5
+# define EBP 6
+# define ESP 7
+# define EBX 8
+# define EDX 9
+# define ECX 10
+# define EAX 11
+# define TRAPNO 12
+# ifndef ERR
+# define ERR 13
+# endif
+# define EIP 14
+# define CS 15
+# define EFL 16
+# define UESP 17
+# define SS 18
+
+# ifdef __amd64__
+# define REG_PC REG_RIP
+# define REG_FP REG_RBP
+# define REG_SP REG_RSP
+# define REG_PS REG_RFL
+# define REG_R0 REG_RAX
+# define REG_R1 REG_RDX
+# else /* __i386__ */
+# define REG_PC 14
+# define REG_FP 6
+# define REG_SP 17
+# define REG_PS 16
+# define REG_R0 11
+# define REG_R1 9
+# endif /* __amd64__ */
+
+#endif /* __USE_MISC */
+
+#endif /* _SYS_REGSET_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/stack.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/stack.h
new file mode 100644
index 0000000000..1bc90b7301
--- /dev/null
+++ b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/sys/stack.h
@@ -0,0 +1,27 @@
+/* Declarations of stack macros.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _STACK_STACK_H
+#define _STACK_STACK_H
+
+#define STACK_ALIGN 16
+#define STACK_BIAS 0
+#define SA(x) (((x) + (STACK_ALIGN - 1)) & ~(STACK_ALIGN - 1))
+
+#endif /* _STACK_STACK_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/syscalls.list b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/syscalls.list
new file mode 100644
index 0000000000..5f1da8c23a
--- /dev/null
+++ b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/syscalls.list
@@ -0,0 +1,3 @@
+# File name Caller Syscall name Args Strong name Weak names
+
+sysi86 - sysi86 i:ip sysi86