user.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:4k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #ifndef __ASM_CRIS_USER_H
  2. #define __ASM_CRIS_USER_H
  3. #include <linux/types.h>
  4. #include <asm/ptrace.h>
  5. #include <asm/page.h>
  6. /*
  7.  * Core file format: The core file is written in such a way that gdb
  8.  * can understand it and provide useful information to the user (under
  9.  * linux we use the `trad-core' bfd).  The file contents are as follows:
  10.  *
  11.  *  upage: 1 page consisting of a user struct that tells gdb
  12.  * what is present in the file.  Directly after this is a
  13.  * copy of the task_struct, which is currently not used by gdb,
  14.  * but it may come in handy at some point.  All of the registers
  15.  * are stored as part of the upage.  The upage should always be
  16.  * only one page long.
  17.  *  data: The data segment follows next.  We use current->end_text to
  18.  * current->brk to pick up all of the user variables, plus any memory
  19.  * that may have been sbrk'ed.  No attempt is made to determine if a
  20.  * page is demand-zero or if a page is totally unused, we just cover
  21.  * the entire range.  All of the addresses are rounded in such a way
  22.  * that an integral number of pages is written.
  23.  *  stack: We need the stack information in order to get a meaningful
  24.  * backtrace.  We need to write the data from usp to
  25.  * current->start_stack, so we round each of these in order to be able
  26.  * to write an integer number of pages.
  27.  */
  28. /* User mode registers, used for core dumps. In order to keep ELF_NGREG
  29.    sensible we let all registers be 32 bits. The csr registers are included
  30.    for future use. */
  31. struct user_regs_struct {
  32.         unsigned long r0;       /* General registers. */
  33.         unsigned long r1;
  34.         unsigned long r2;
  35.         unsigned long r3;
  36.         unsigned long r4;
  37.         unsigned long r5;
  38.         unsigned long r6;
  39.         unsigned long r7;
  40.         unsigned long r8;
  41.         unsigned long r9;
  42.         unsigned long r10;
  43.         unsigned long r11;
  44.         unsigned long r12;
  45.         unsigned long r13;
  46.         unsigned long sp;       /* Stack pointer. */
  47.         unsigned long pc;       /* Program counter. */
  48.         unsigned long p0;       /* Constant zero (only 8 bits). */
  49.         unsigned long vr;       /* Version register (only 8 bits). */
  50.         unsigned long p2;       /* Reserved. */
  51.         unsigned long p3;       /* Reserved. */
  52.         unsigned long p4;       /* Constant zero (only 16 bits). */
  53.         unsigned long ccr;      /* Condition code register (only 16 bits). */
  54.         unsigned long p6;       /* Reserved. */
  55.         unsigned long mof;      /* Multiply overflow register. */
  56.         unsigned long p8;       /* Constant zero. */
  57.         unsigned long ibr;      /* Not accessible. */
  58.         unsigned long irp;      /* Not accessible. */
  59.         unsigned long srp;      /* Subroutine return pointer. */
  60.         unsigned long bar;      /* Not accessible. */
  61.         unsigned long dccr;     /* Dword condition code register. */
  62.         unsigned long brp;      /* Not accessible. */
  63.         unsigned long usp;      /* User-mode stack pointer. Same as sp when 
  64.                                    in user mode. */
  65.         unsigned long csrinstr; /* Internal status registers. */
  66.         unsigned long csraddr;
  67.         unsigned long csrdata;
  68. };
  69.         
  70. struct user {
  71. struct user_regs_struct regs; /* entire machine state */
  72. size_t u_tsize; /* text size (pages) */
  73. size_t u_dsize; /* data size (pages) */
  74. size_t u_ssize; /* stack size (pages) */
  75. unsigned long start_code; /* text starting address */
  76. unsigned long start_data; /* data starting address */
  77. unsigned long start_stack; /* stack starting address */
  78. long int signal; /* signal causing core dump */
  79. struct regs * u_ar0; /* help gdb find registers */
  80. unsigned long magic; /* identifies a core file */
  81. char u_comm[32]; /* user command name */
  82. };
  83. #define NBPG PAGE_SIZE
  84. #define UPAGES 1
  85. #define HOST_TEXT_START_ADDR (u.start_code)
  86. #define HOST_DATA_START_ADDR (u.start_data)
  87. #define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
  88. #endif /* __ASM_CRIS_USER_H */