1  /* Copyright (C) 1999-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library.  If not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  #ifndef _SYS_USER_H
      19  #define _SYS_USER_H	1
      20  
      21  /* The whole purpose of this file is for gdb/strace and gdb/strace
      22     only. Don't read too much into it. Don't use it for anything other
      23     than gdb/strace unless you know what you are doing. */
      24  
      25  #include <asm/reg.h>
      26  #include <stddef.h>
      27  
      28  struct user
      29  {
      30    unsigned long	int regs[EF_SIZE / 8 + 32];	/* integer and fp regs */
      31    size_t u_tsize;				/* text size (pages) */
      32    size_t u_dsize;				/* data size (pages) */
      33    size_t u_ssize;				/* stack size (pages) */
      34    unsigned long	int start_code;			/* text starting address */
      35    unsigned long	int start_data;			/* data starting address */
      36    unsigned long	int start_stack;		/* stack starting address */
      37    long int signal;				/* signal causing core dump */
      38    struct regs *u_ar0;				/* help gdb find registers */
      39    unsigned long	int magic;			/* identifies a core file */
      40    char u_comm[32];				/* user command name */
      41  };
      42  
      43  #define PAGE_SHIFT		13
      44  #define PAGE_SIZE		(1UL << PAGE_SHIFT)
      45  #define PAGE_MASK		(~(PAGE_SIZE-1))
      46  #define NBPG			PAGE_SIZE
      47  #define UPAGES			1
      48  #define HOST_TEXT_START_ADDR	(u.start_code)
      49  #define HOST_DATA_START_ADDR	(u.start_data)
      50  #define HOST_STACK_END_ADDR	(u.start_stack + u.u_ssize * NBPG)
      51  
      52  #endif	/* sys/user.h */