diff options
Diffstat (limited to 'sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/bits')
-rw-r--r-- | sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/bits/machtypes.h | 53 | ||||
-rw-r--r-- | sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/bits/regset.h | 139 |
2 files changed, 192 insertions, 0 deletions
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 */ |