diff options
Diffstat (limited to 'libc/sysdeps/linux/sparc/sys')
| -rw-r--r-- | libc/sysdeps/linux/sparc/sys/procfs.h | 69 | ||||
| -rw-r--r-- | libc/sysdeps/linux/sparc/sys/user.h | 85 | 
2 files changed, 153 insertions, 1 deletions
| diff --git a/libc/sysdeps/linux/sparc/sys/procfs.h b/libc/sysdeps/linux/sparc/sys/procfs.h index e5d35f524..2827b1ec3 100644 --- a/libc/sysdeps/linux/sparc/sys/procfs.h +++ b/libc/sysdeps/linux/sparc/sys/procfs.h @@ -35,7 +35,7 @@ __BEGIN_DECLS  #if __WORDSIZE == 64 -#define ELF_NGREG		20 +#define ELF_NGREG		36  typedef struct    { @@ -139,6 +139,73 @@ typedef __pid_t lwpid_t;  typedef struct elf_prstatus prstatus_t;  typedef struct elf_prpsinfo prpsinfo_t; +#if __WORDSIZE == 64 + +/* Provide 32-bit variants so that BFD can read 32-bit +   core files.  */ +#define ELF_NGREG32		38 +typedef struct +  { +    union +      { +	unsigned int	pr_regs[32]; +	double		pr_dregs[16]; +      }			pr_fr; +    unsigned int	__unused; +    unsigned int	pr_fsr; +    unsigned char	pr_qcnt; +    unsigned char	pr_q_entrysize; +    unsigned char	pr_en; +    unsigned int	pr_q[64]; +  } elf_fpregset_t32; + +typedef unsigned int elf_greg_t32; +typedef elf_greg_t32 elf_gregset_t32[ELF_NGREG32]; + +struct elf_prstatus32 +  { +    struct elf_siginfo pr_info;		/* Info associated with signal.  */ +    short int pr_cursig;		/* Current signal.  */ +    unsigned int pr_sigpend;	/* Set of pending signals.  */ +    unsigned int pr_sighold;	/* Set of held signals.  */ +    __pid_t pr_pid; +    __pid_t pr_ppid; +    __pid_t pr_pgrp; +    __pid_t pr_sid; +    struct +      { +	int tv_sec, tv_usec; +      } pr_utime,			/* User time.  */ +        pr_stime,			/* System time.  */ +        pr_cutime,			/* Cumulative user time.  */ +        pr_cstime;			/* Cumulative system time.  */ +    elf_gregset_t32 pr_reg;		/* GP registers.  */ +    int pr_fpvalid;			/* True if math copro being used.  */ +  }; + +struct elf_prpsinfo32 +  { +    char pr_state;			/* Numeric process state.  */ +    char pr_sname;			/* Char for pr_state.  */ +    char pr_zomb;			/* Zombie.  */ +    char pr_nice;			/* Nice val.  */ +    unsigned int pr_flag;		/* Flags.  */ +    unsigned short int pr_uid; +    unsigned short int pr_gid; +    int pr_pid, pr_ppid, pr_pgrp, pr_sid; +    /* Lots missing */ +    char pr_fname[16];			/* Filename of executable.  */ +    char pr_psargs[ELF_PRARGSZ];	/* Initial part of arg list.  */ +  }; + +typedef elf_gregset_t32 prgregset32_t; +typedef elf_fpregset_t32 prfpregset32_t; + +typedef struct elf_prstatus32 prstatus32_t; +typedef struct elf_prpsinfo32 prpsinfo32_t; + +#endif  /* sparc64 */ +  __END_DECLS  #endif	/* sys/procfs.h */ diff --git a/libc/sysdeps/linux/sparc/sys/user.h b/libc/sysdeps/linux/sparc/sys/user.h new file mode 100644 index 000000000..2aad01b0f --- /dev/null +++ b/libc/sysdeps/linux/sparc/sys/user.h @@ -0,0 +1,85 @@ +/* Copyright (C) 2003 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 + +struct sunos_regs +{ +  unsigned int psr, pc, npc, y; +  unsigned int regs[15]; +}; + +struct sunos_fpqueue +{ +  unsigned int *addr; +  unsigned int inst; +}; + +struct sunos_fp +{ +  union +    { +      unsigned int regs[32]; +      double reg_dbls[16]; +    } fregs; +  unsigned int fsr; +  unsigned int flags; +  unsigned int extra; +  unsigned int fpq_count; +  struct sunos_fpqueue fpq[16]; +}; + +struct sunos_fpu +{ +  struct sunos_fp fpstatus; +}; + +/* The SunOS core file header layout. */ +struct user { +  unsigned int magic; +  unsigned int len; +  struct sunos_regs regs; +  struct +    { +      unsigned char a_dynamic :1; +      unsigned char a_toolversion :7; +      unsigned char a_machtype; +      unsigned short a_info; +      unsigned int a_text; +      unsigned int a_data; +      unsigned int a_bss; +      unsigned int a_syms; +      unsigned int a_entry; +      unsigned int a_trsize; +      unsigned int a_drsize; +    } uexec; +  int           signal; +  size_t        u_tsize; +  size_t        u_dsize; +  size_t        u_ssize; +  char          u_comm[17]; +  struct sunos_fpu fpu; +  unsigned int  sigcode; +}; + +#define NBPG			0x2000 +#define UPAGES			1 +#define SUNOS_CORE_MAGIC	0x080456 + +#endif | 
