mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-03 20:53:13 +03:00 
			
		
		
		
	(elf_fpxregset_t): New type. (struct elf_prpsinfo): If __WORDSIZE == 32, change pr_[ug]id type to unsigned short int. * sysdeps/unix/sysv/linux/x86_64/sys/user.h (struct user_fpregs_struct): Fix comment. * sysdeps/i386/fpu/bits/mathdef.h (float_t, double_t): If __FLOAT_EVAL_METHOD__ is defined and 0, typedef to float resp. double. * sysdeps/x86_64/fpu/bits/mathdef.h: Include bits/wordsize.h. (float_t, double_t): If -m32 and not -mfpmath=sse, typedef to long double. * sysdeps/x86_64/fpu/bits/fenv.h: Include bits/wordsize.h. (fenv_t): Remove __mxcsr field for -m32.
		
			
				
	
	
		
			176 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			176 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Copyright (C) 2001, 2002, 2004 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_USER_H
 | 
						|
#define _SYS_USER_H	1
 | 
						|
 | 
						|
/* The whole purpose of this file is for GDB and GDB only.  Don't read
 | 
						|
   too much into it.  Don't use it for anything other than GDB unless
 | 
						|
   you know what you are doing.  */
 | 
						|
 | 
						|
#include <bits/wordsize.h>
 | 
						|
 | 
						|
#if __WORDSIZE == 64
 | 
						|
 | 
						|
struct user_fpregs_struct
 | 
						|
{
 | 
						|
  __uint16_t		cwd;
 | 
						|
  __uint16_t		swd;
 | 
						|
  __uint16_t		ftw;
 | 
						|
  __uint16_t		fop;
 | 
						|
  __uint64_t		rip;
 | 
						|
  __uint64_t		rdp;
 | 
						|
  __uint32_t		mxcsr;
 | 
						|
  __uint32_t		mxcr_mask;
 | 
						|
  __uint32_t		st_space[32];   /* 8*16 bytes for each FP-reg = 128 bytes */
 | 
						|
  __uint32_t		xmm_space[64];  /* 16*16 bytes for each XMM-reg = 256 bytes */
 | 
						|
  __uint32_t		padding[24];
 | 
						|
};
 | 
						|
 | 
						|
struct user_regs_struct
 | 
						|
{
 | 
						|
  unsigned long r15;
 | 
						|
  unsigned long r14;
 | 
						|
  unsigned long r13;
 | 
						|
  unsigned long r12;
 | 
						|
  unsigned long rbp;
 | 
						|
  unsigned long rbx;
 | 
						|
  unsigned long r11;
 | 
						|
  unsigned long r10;
 | 
						|
  unsigned long r9;
 | 
						|
  unsigned long r8;
 | 
						|
  unsigned long rax;
 | 
						|
  unsigned long rcx;
 | 
						|
  unsigned long rdx;
 | 
						|
  unsigned long rsi;
 | 
						|
  unsigned long rdi;
 | 
						|
  unsigned long orig_rax;
 | 
						|
  unsigned long rip;
 | 
						|
  unsigned long cs;
 | 
						|
  unsigned long eflags;
 | 
						|
  unsigned long rsp;
 | 
						|
  unsigned long ss;
 | 
						|
  unsigned long fs_base;
 | 
						|
  unsigned long gs_base;
 | 
						|
  unsigned long ds;
 | 
						|
  unsigned long es;
 | 
						|
  unsigned long fs;
 | 
						|
  unsigned long gs;
 | 
						|
};
 | 
						|
 | 
						|
struct user
 | 
						|
{
 | 
						|
  struct user_regs_struct	regs;
 | 
						|
  int				u_fpvalid;
 | 
						|
  struct user_fpregs_struct	i387;
 | 
						|
  unsigned long int		u_tsize;
 | 
						|
  unsigned long int		u_dsize;
 | 
						|
  unsigned long int		u_ssize;
 | 
						|
  unsigned long			start_code;
 | 
						|
  unsigned long			start_stack;
 | 
						|
  long int			signal;
 | 
						|
  int				reserved;
 | 
						|
  struct user_regs_struct*	u_ar0;
 | 
						|
  struct user_fpregs_struct*	u_fpstate;
 | 
						|
  unsigned long int		magic;
 | 
						|
  char				u_comm [32];
 | 
						|
  unsigned long int		u_debugreg [8];
 | 
						|
};
 | 
						|
 | 
						|
#else
 | 
						|
/* These are the 32-bit x86 structures.  */
 | 
						|
struct user_fpregs_struct
 | 
						|
{
 | 
						|
  long int cwd;
 | 
						|
  long int swd;
 | 
						|
  long int twd;
 | 
						|
  long int fip;
 | 
						|
  long int fcs;
 | 
						|
  long int foo;
 | 
						|
  long int fos;
 | 
						|
  long int st_space [20];
 | 
						|
};
 | 
						|
 | 
						|
struct user_fpxregs_struct
 | 
						|
{
 | 
						|
  unsigned short int cwd;
 | 
						|
  unsigned short int swd;
 | 
						|
  unsigned short int twd;
 | 
						|
  unsigned short int fop;
 | 
						|
  long int fip;
 | 
						|
  long int fcs;
 | 
						|
  long int foo;
 | 
						|
  long int fos;
 | 
						|
  long int mxcsr;
 | 
						|
  long int reserved;
 | 
						|
  long int st_space[32];   /* 8*16 bytes for each FP-reg = 128 bytes */
 | 
						|
  long int xmm_space[32];  /* 8*16 bytes for each XMM-reg = 128 bytes */
 | 
						|
  long int padding[56];
 | 
						|
};
 | 
						|
 | 
						|
struct user_regs_struct
 | 
						|
{
 | 
						|
  long int ebx;
 | 
						|
  long int ecx;
 | 
						|
  long int edx;
 | 
						|
  long int esi;
 | 
						|
  long int edi;
 | 
						|
  long int ebp;
 | 
						|
  long int eax;
 | 
						|
  long int xds;
 | 
						|
  long int xes;
 | 
						|
  long int xfs;
 | 
						|
  long int xgs;
 | 
						|
  long int orig_eax;
 | 
						|
  long int eip;
 | 
						|
  long int xcs;
 | 
						|
  long int eflags;
 | 
						|
  long int esp;
 | 
						|
  long int xss;
 | 
						|
};
 | 
						|
 | 
						|
struct user
 | 
						|
{
 | 
						|
  struct user_regs_struct	regs;
 | 
						|
  int				u_fpvalid;
 | 
						|
  struct user_fpregs_struct	i387;
 | 
						|
  unsigned long int		u_tsize;
 | 
						|
  unsigned long int		u_dsize;
 | 
						|
  unsigned long int		u_ssize;
 | 
						|
  unsigned long			start_code;
 | 
						|
  unsigned long			start_stack;
 | 
						|
  long int			signal;
 | 
						|
  int				reserved;
 | 
						|
  struct user_regs_struct*	u_ar0;
 | 
						|
  struct user_fpregs_struct*	u_fpstate;
 | 
						|
  unsigned long int		magic;
 | 
						|
  char				u_comm [32];
 | 
						|
  int				u_debugreg [8];
 | 
						|
};
 | 
						|
#endif  /* __WORDSIZE */
 | 
						|
 | 
						|
#define PAGE_SHIFT		12
 | 
						|
#define PAGE_SIZE		(1UL << PAGE_SHIFT)
 | 
						|
#define PAGE_MASK		(~(PAGE_SIZE-1))
 | 
						|
#define NBPG			PAGE_SIZE
 | 
						|
#define UPAGES			1
 | 
						|
#define HOST_TEXT_START_ADDR	(u.start_code)
 | 
						|
#define HOST_STACK_END_ADDR	(u.start_stack + u.u_ssize * NBPG)
 | 
						|
 | 
						|
#endif	/* _SYS_USER_H */
 |