home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-cris / arch-v10 / ptrace.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  3.2 KB  |  116 lines

  1. #ifndef _CRIS_ARCH_PTRACE_H
  2. #define _CRIS_ARCH_PTRACE_H
  3.  
  4. /* Frame types */
  5.  
  6. #define CRIS_FRAME_NORMAL   0 /* normal frame without SBFS stacking */
  7. #define CRIS_FRAME_BUSFAULT 1 /* frame stacked using SBFS, need RBF return
  8.                  path */
  9.  
  10. /* Register numbers in the ptrace system call interface */
  11.  
  12. #define PT_FRAMETYPE 0
  13. #define PT_ORIG_R10  1
  14. #define PT_R13       2
  15. #define PT_R12       3
  16. #define PT_R11       4
  17. #define PT_R10       5
  18. #define PT_R9        6
  19. #define PT_R8        7
  20. #define PT_R7        8
  21. #define PT_R6        9
  22. #define PT_R5        10
  23. #define PT_R4        11
  24. #define PT_R3        12
  25. #define PT_R2        13
  26. #define PT_R1        14
  27. #define PT_R0        15
  28. #define PT_MOF       16
  29. #define PT_DCCR      17
  30. #define PT_SRP       18
  31. #define PT_IRP       19    /* This is actually the debugged process' PC */
  32. #define PT_CSRINSTR  20    /* CPU Status record remnants -
  33.                   valid if frametype == busfault */
  34. #define PT_CSRADDR   21
  35. #define PT_CSRDATA   22
  36. #define PT_USP       23    /* special case - USP is not in the pt_regs */
  37. #define PT_MAX       23
  38.  
  39. /* Condition code bit numbers.  The same numbers apply to CCR of course,
  40.    but we use DCCR everywhere else, so let's try and be consistent.  */
  41. #define C_DCCR_BITNR 0
  42. #define V_DCCR_BITNR 1
  43. #define Z_DCCR_BITNR 2
  44. #define N_DCCR_BITNR 3
  45. #define X_DCCR_BITNR 4
  46. #define I_DCCR_BITNR 5
  47. #define B_DCCR_BITNR 6
  48. #define M_DCCR_BITNR 7
  49. #define U_DCCR_BITNR 8
  50. #define P_DCCR_BITNR 9
  51. #define F_DCCR_BITNR 10
  52.  
  53. /* pt_regs not only specifices the format in the user-struct during
  54.  * ptrace but is also the frame format used in the kernel prologue/epilogues 
  55.  * themselves
  56.  */
  57.  
  58. struct pt_regs {
  59.     unsigned long frametype;  /* type of stackframe */
  60.     unsigned long orig_r10;
  61.     /* pushed by movem r13, [sp] in SAVE_ALL, movem pushes backwards */
  62.     unsigned long r13;
  63.     unsigned long r12;
  64.     unsigned long r11;
  65.     unsigned long r10;
  66.     unsigned long r9;
  67.     unsigned long r8;
  68.     unsigned long r7;
  69.     unsigned long r6;
  70.     unsigned long r5;
  71.     unsigned long r4;
  72.     unsigned long r3;
  73.     unsigned long r2;
  74.     unsigned long r1;
  75.     unsigned long r0;
  76.     unsigned long mof;
  77.     unsigned long dccr;
  78.     unsigned long srp;
  79.     unsigned long irp; /* This is actually the debugged process' PC */
  80.     unsigned long csrinstr;
  81.     unsigned long csraddr;
  82.     unsigned long csrdata;
  83. };
  84.  
  85. /* switch_stack is the extra stuff pushed onto the stack in _resume (entry.S)
  86.  * when doing a context-switch. it is used (apart from in resume) when a new
  87.  * thread is made and we need to make _resume (which is starting it for the
  88.  * first time) realise what is going on.
  89.  *
  90.  * Actually, the use is very close to the thread struct (TSS) in that both the
  91.  * switch_stack and the TSS are used to keep thread stuff when switching in
  92.  * _resume.
  93.  */
  94.  
  95. struct switch_stack {
  96.     unsigned long r9;
  97.     unsigned long r8;
  98.     unsigned long r7;
  99.     unsigned long r6;
  100.     unsigned long r5;
  101.     unsigned long r4;
  102.     unsigned long r3;
  103.     unsigned long r2;
  104.     unsigned long r1;
  105.     unsigned long r0;
  106.     unsigned long return_ip; /* ip that _resume will return to */
  107. };
  108.  
  109. /* bit 8 is user-mode flag */
  110. #define user_mode(regs) (((regs)->dccr & 0x100) != 0)
  111. #define instruction_pointer(regs) ((regs)->irp)
  112. #define profile_pc(regs) instruction_pointer(regs)
  113. extern void show_regs(struct pt_regs *);
  114.  
  115. #endif
  116.