Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef _ASM_POWERPC_USER_H
0003 #define _ASM_POWERPC_USER_H
0004 
0005 #include <asm/ptrace.h>
0006 #include <asm/page.h>
0007 
0008 /*
0009  * Adapted from <asm-alpha/user.h>
0010  *
0011  * Core file format: The core file is written in such a way that gdb
0012  * can understand it and provide useful information to the user (under
0013  * linux we use the `trad-core' bfd, NOT the osf-core).  The file contents
0014  * are as follows:
0015  *
0016  *  upage: 1 page consisting of a user struct that tells gdb
0017  *  what is present in the file.  Directly after this is a
0018  *  copy of the task_struct, which is currently not used by gdb,
0019  *  but it may come in handy at some point.  All of the registers
0020  *  are stored as part of the upage.  The upage should always be
0021  *  only one page long.
0022  *  data: The data segment follows next.  We use current->end_text to
0023  *  current->brk to pick up all of the user variables, plus any memory
0024  *  that may have been sbrk'ed.  No attempt is made to determine if a
0025  *  page is demand-zero or if a page is totally unused, we just cover
0026  *  the entire range.  All of the addresses are rounded in such a way
0027  *  that an integral number of pages is written.
0028  *  stack: We need the stack information in order to get a meaningful
0029  *  backtrace.  We need to write the data from usp to
0030  *  current->start_stack, so we round each of these in order to be able
0031  *  to write an integer number of pages.
0032  */
0033 struct user {
0034     struct user_pt_regs regs;       /* entire machine state */
0035     size_t      u_tsize;        /* text size (pages) */
0036     size_t      u_dsize;        /* data size (pages) */
0037     size_t      u_ssize;        /* stack size (pages) */
0038     unsigned long   start_code;     /* text starting address */
0039     unsigned long   start_data;     /* data starting address */
0040     unsigned long   start_stack;        /* stack starting address */
0041     long int    signal;         /* signal causing core dump */
0042     unsigned long   u_ar0;          /* help gdb find registers */
0043     unsigned long   magic;          /* identifies a core file */
0044     char        u_comm[32];     /* user command name */
0045 };
0046 
0047 #endif  /* _ASM_POWERPC_USER_H */