Blame sysdeps/unix/sysv/linux/x86/sys/user.h

Packit 6c4009
/* Copyright (C) 2001-2018 Free Software Foundation, Inc.
Packit 6c4009
   This file is part of the GNU C Library.
Packit 6c4009
Packit 6c4009
   The GNU C Library is free software; you can redistribute it and/or
Packit 6c4009
   modify it under the terms of the GNU Lesser General Public
Packit 6c4009
   License as published by the Free Software Foundation; either
Packit 6c4009
   version 2.1 of the License, or (at your option) any later version.
Packit 6c4009
Packit 6c4009
   The GNU C Library is distributed in the hope that it will be useful,
Packit 6c4009
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 6c4009
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 6c4009
   Lesser General Public License for more details.
Packit 6c4009
Packit 6c4009
   You should have received a copy of the GNU Lesser General Public
Packit 6c4009
   License along with the GNU C Library; if not, see
Packit 6c4009
   <http://www.gnu.org/licenses/>.  */
Packit 6c4009
Packit 6c4009
#ifndef _SYS_USER_H
Packit 6c4009
#define _SYS_USER_H	1
Packit 6c4009
Packit 6c4009
/* The whole purpose of this file is for GDB and GDB only.  Don't read
Packit 6c4009
   too much into it.  Don't use it for anything other than GDB unless
Packit 6c4009
   you know what you are doing.  */
Packit 6c4009
Packit 6c4009
#ifdef __x86_64__
Packit 6c4009
Packit 6c4009
struct user_fpregs_struct
Packit 6c4009
{
Packit 6c4009
  unsigned short int	cwd;
Packit 6c4009
  unsigned short int	swd;
Packit 6c4009
  unsigned short int	ftw;
Packit 6c4009
  unsigned short int	fop;
Packit 6c4009
  __extension__ unsigned long long int rip;
Packit 6c4009
  __extension__ unsigned long long int rdp;
Packit 6c4009
  unsigned int		mxcsr;
Packit 6c4009
  unsigned int		mxcr_mask;
Packit 6c4009
  unsigned int		st_space[32];   /* 8*16 bytes for each FP-reg = 128 bytes */
Packit 6c4009
  unsigned int		xmm_space[64];  /* 16*16 bytes for each XMM-reg = 256 bytes */
Packit 6c4009
  unsigned int		padding[24];
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
struct user_regs_struct
Packit 6c4009
{
Packit 6c4009
  __extension__ unsigned long long int r15;
Packit 6c4009
  __extension__ unsigned long long int r14;
Packit 6c4009
  __extension__ unsigned long long int r13;
Packit 6c4009
  __extension__ unsigned long long int r12;
Packit 6c4009
  __extension__ unsigned long long int rbp;
Packit 6c4009
  __extension__ unsigned long long int rbx;
Packit 6c4009
  __extension__ unsigned long long int r11;
Packit 6c4009
  __extension__ unsigned long long int r10;
Packit 6c4009
  __extension__ unsigned long long int r9;
Packit 6c4009
  __extension__ unsigned long long int r8;
Packit 6c4009
  __extension__ unsigned long long int rax;
Packit 6c4009
  __extension__ unsigned long long int rcx;
Packit 6c4009
  __extension__ unsigned long long int rdx;
Packit 6c4009
  __extension__ unsigned long long int rsi;
Packit 6c4009
  __extension__ unsigned long long int rdi;
Packit 6c4009
  __extension__ unsigned long long int orig_rax;
Packit 6c4009
  __extension__ unsigned long long int rip;
Packit 6c4009
  __extension__ unsigned long long int cs;
Packit 6c4009
  __extension__ unsigned long long int eflags;
Packit 6c4009
  __extension__ unsigned long long int rsp;
Packit 6c4009
  __extension__ unsigned long long int ss;
Packit 6c4009
  __extension__ unsigned long long int fs_base;
Packit 6c4009
  __extension__ unsigned long long int gs_base;
Packit 6c4009
  __extension__ unsigned long long int ds;
Packit 6c4009
  __extension__ unsigned long long int es;
Packit 6c4009
  __extension__ unsigned long long int fs;
Packit 6c4009
  __extension__ unsigned long long int gs;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
struct user
Packit 6c4009
{
Packit 6c4009
  struct user_regs_struct	regs;
Packit 6c4009
  int				u_fpvalid;
Packit 6c4009
  struct user_fpregs_struct	i387;
Packit 6c4009
  __extension__ unsigned long long int	u_tsize;
Packit 6c4009
  __extension__ unsigned long long int	u_dsize;
Packit 6c4009
  __extension__ unsigned long long int	u_ssize;
Packit 6c4009
  __extension__ unsigned long long int	start_code;
Packit 6c4009
  __extension__ unsigned long long int	start_stack;
Packit 6c4009
  __extension__ long long int		signal;
Packit 6c4009
  int				reserved;
Packit 6c4009
  __extension__ union
Packit 6c4009
    {
Packit 6c4009
      struct user_regs_struct*	u_ar0;
Packit 6c4009
      __extension__ unsigned long long int	__u_ar0_word;
Packit 6c4009
    };
Packit 6c4009
  __extension__ union
Packit 6c4009
    {
Packit 6c4009
      struct user_fpregs_struct*	u_fpstate;
Packit 6c4009
      __extension__ unsigned long long int	__u_fpstate_word;
Packit 6c4009
    };
Packit 6c4009
  __extension__ unsigned long long int	magic;
Packit 6c4009
  char				u_comm [32];
Packit 6c4009
  __extension__ unsigned long long int	u_debugreg [8];
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
#else
Packit 6c4009
/* These are the 32-bit x86 structures.  */
Packit 6c4009
struct user_fpregs_struct
Packit 6c4009
{
Packit 6c4009
  long int cwd;
Packit 6c4009
  long int swd;
Packit 6c4009
  long int twd;
Packit 6c4009
  long int fip;
Packit 6c4009
  long int fcs;
Packit 6c4009
  long int foo;
Packit 6c4009
  long int fos;
Packit 6c4009
  long int st_space [20];
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
struct user_fpxregs_struct
Packit 6c4009
{
Packit 6c4009
  unsigned short int cwd;
Packit 6c4009
  unsigned short int swd;
Packit 6c4009
  unsigned short int twd;
Packit 6c4009
  unsigned short int fop;
Packit 6c4009
  long int fip;
Packit 6c4009
  long int fcs;
Packit 6c4009
  long int foo;
Packit 6c4009
  long int fos;
Packit 6c4009
  long int mxcsr;
Packit 6c4009
  long int reserved;
Packit 6c4009
  long int st_space[32];   /* 8*16 bytes for each FP-reg = 128 bytes */
Packit 6c4009
  long int xmm_space[32];  /* 8*16 bytes for each XMM-reg = 128 bytes */
Packit 6c4009
  long int padding[56];
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
struct user_regs_struct
Packit 6c4009
{
Packit 6c4009
  long int ebx;
Packit 6c4009
  long int ecx;
Packit 6c4009
  long int edx;
Packit 6c4009
  long int esi;
Packit 6c4009
  long int edi;
Packit 6c4009
  long int ebp;
Packit 6c4009
  long int eax;
Packit 6c4009
  long int xds;
Packit 6c4009
  long int xes;
Packit 6c4009
  long int xfs;
Packit 6c4009
  long int xgs;
Packit 6c4009
  long int orig_eax;
Packit 6c4009
  long int eip;
Packit 6c4009
  long int xcs;
Packit 6c4009
  long int eflags;
Packit 6c4009
  long int esp;
Packit 6c4009
  long int xss;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
struct user
Packit 6c4009
{
Packit 6c4009
  struct user_regs_struct	regs;
Packit 6c4009
  int				u_fpvalid;
Packit 6c4009
  struct user_fpregs_struct	i387;
Packit 6c4009
  unsigned long int		u_tsize;
Packit 6c4009
  unsigned long int		u_dsize;
Packit 6c4009
  unsigned long int		u_ssize;
Packit 6c4009
  unsigned long int		start_code;
Packit 6c4009
  unsigned long int		start_stack;
Packit 6c4009
  long int			signal;
Packit 6c4009
  int				reserved;
Packit 6c4009
  struct user_regs_struct*	u_ar0;
Packit 6c4009
  struct user_fpregs_struct*	u_fpstate;
Packit 6c4009
  unsigned long int		magic;
Packit 6c4009
  char				u_comm [32];
Packit 6c4009
  int				u_debugreg [8];
Packit 6c4009
};
Packit 6c4009
#endif  /* __x86_64__ */
Packit 6c4009
Packit 6c4009
#define PAGE_SHIFT		12
Packit 6c4009
#define PAGE_SIZE		(1UL << PAGE_SHIFT)
Packit 6c4009
#define PAGE_MASK		(~(PAGE_SIZE-1))
Packit 6c4009
#define NBPG			PAGE_SIZE
Packit 6c4009
#define UPAGES			1
Packit 6c4009
#define HOST_TEXT_START_ADDR	(u.start_code)
Packit 6c4009
#define HOST_STACK_END_ADDR	(u.start_stack + u.u_ssize * NBPG)
Packit 6c4009
Packit 6c4009
#endif	/* _SYS_USER_H */