user.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef _SYS_USER_H
  2. #define _SYS_USER_H
  3. struct user_bfinfp_struct {
  4. };
  5. /* This is the old layout of "struct pt_regs" as of Linux 1.x, and
  6. is still the layout used by user (the new pt_regs doesn't have
  7. all registers). */
  8. struct user_regs_struct {
  9. long r0, r1, r2, r3, r4, r5, r6, r7;
  10. long p0, p1, p2, p3, p4, p5, usp, fp;
  11. long i0, i1, i2, i3;
  12. long l0, l1, l2, l3;
  13. long b0, b1, b2, b3;
  14. long m0, m1, m2, m3;
  15. long a0w, a1w;
  16. long a0x, a1x;
  17. unsigned long rets;
  18. unsigned long astat;
  19. unsigned long pc;
  20. unsigned long orig_p0;
  21. };
  22. /* When the kernel dumps core, it starts by dumping the user struct -
  23. this will be used by gdb to figure out where the data and stack segments
  24. are within the file, and what virtual addresses to use. */
  25. struct user {
  26. /* We start with the registers, to mimic the way that "memory" is returned
  27. from the ptrace(3,...) function. */
  28. struct user_regs_struct regs; /* Where the registers are actually stored */
  29. /* The rest of this junk is to help gdb figure out what goes where */
  30. unsigned long int u_tsize; /* Text segment size (pages). */
  31. unsigned long int u_dsize; /* Data segment size (pages). */
  32. unsigned long int u_ssize; /* Stack segment size (pages). */
  33. unsigned long start_code; /* Starting virtual address of text. */
  34. unsigned long start_stack; /* Starting virtual address of stack area.
  35. This is actually the bottom of the stack,
  36. the top of the stack is always found in the
  37. esp register. */
  38. long int signal; /* Signal that caused the core dump. */
  39. int reserved; /* No longer used */
  40. unsigned long u_ar0;
  41. /* Used by gdb to help find the values for */
  42. /* the registers. */
  43. unsigned long magic; /* To uniquely identify a core file */
  44. char u_comm[32]; /* User command that was responsible */
  45. };
  46. #define NBPG PAGE_SIZE
  47. #define UPAGES 1
  48. #define HOST_TEXT_START_ADDR (u.start_code)
  49. #define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
  50. #endif