kgdb.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* $Id: kgdb.h,v 1.8 1998/01/07 06:33:44 baccala Exp $
  2.  * kgdb.h: Defines and declarations for serial line source level
  3.  *         remote debugging of the Linux kernel using gdb.
  4.  *
  5.  * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
  6.  */
  7. #ifndef _SPARC_KGDB_H
  8. #define _SPARC_KGDB_H
  9. #ifndef __ASSEMBLY__
  10. /* To init the kgdb engine. */
  11. extern void set_debug_traps(void);
  12. /* To enter the debugger explicitly. */
  13. extern void breakpoint(void);
  14. /* For convenience we define the format of a kgdb trap breakpoint
  15.  * frame here also.
  16.  */
  17. struct kgdb_frame {
  18. unsigned long globals[8];
  19. unsigned long outs[8];
  20. unsigned long locals[8];
  21. unsigned long ins[8];
  22. unsigned long fpregs[32];
  23. unsigned long y;
  24. unsigned long psr;
  25. unsigned long wim;
  26. unsigned long tbr;
  27. unsigned long pc;
  28. unsigned long npc;
  29. unsigned long fpsr;
  30. unsigned long cpsr;
  31. };
  32. #endif /* !(__ASSEMBLY__) */
  33. /* Macros for assembly usage of the kgdb breakpoint frame. */
  34. #define KGDB_G0     0x000
  35. #define KGDB_G1     0x004
  36. #define KGDB_G2     0x008
  37. #define KGDB_G4     0x010
  38. #define KGDB_G6     0x018
  39. #define KGDB_I0     0x020
  40. #define KGDB_I2     0x028
  41. #define KGDB_I4     0x030
  42. #define KGDB_I6     0x038
  43. #define KGDB_Y      0x100
  44. #define KGDB_PSR    0x104
  45. #define KGDB_WIM    0x108
  46. #define KGDB_TBR    0x10c
  47. #define KGDB_PC     0x110
  48. #define KGDB_NPC    0x114
  49. #define SAVE_KGDB_GLOBALS(reg) 
  50.         std     %g0, [%reg + REGWIN_SZ + KGDB_G0]; 
  51.         std     %g2, [%reg + REGWIN_SZ + KGDB_G2]; 
  52.         std     %g4, [%reg + REGWIN_SZ + KGDB_G4]; 
  53.         std     %g6, [%reg + REGWIN_SZ + KGDB_G6];
  54. #define SAVE_KGDB_INS(reg) 
  55.         std     %i0, [%reg + REGWIN_SZ + KGDB_I0]; 
  56.         std     %i2, [%reg + REGWIN_SZ + KGDB_I2]; 
  57.         std     %i4, [%reg + REGWIN_SZ + KGDB_I4]; 
  58.         std     %i6, [%reg + REGWIN_SZ + KGDB_I6];
  59. #define SAVE_KGDB_SREGS(reg, reg_y, reg_psr, reg_wim, reg_tbr, reg_pc, reg_npc) 
  60.         st      %reg_y, [%reg + REGWIN_SZ + KGDB_Y]; 
  61.         st      %reg_psr, [%reg + REGWIN_SZ + KGDB_PSR]; 
  62.         st      %reg_wim, [%reg + REGWIN_SZ + KGDB_WIM]; 
  63.         st      %reg_tbr, [%reg + REGWIN_SZ + KGDB_TBR]; 
  64.         st      %reg_pc, [%reg + REGWIN_SZ + KGDB_PC]; 
  65.         st      %reg_npc, [%reg + REGWIN_SZ + KGDB_NPC];
  66. #define LOAD_KGDB_GLOBALS(reg) 
  67.         ld      [%reg + REGWIN_SZ + KGDB_G1], %g1; 
  68.         ldd     [%reg + REGWIN_SZ + KGDB_G2], %g2; 
  69.         ldd     [%reg + REGWIN_SZ + KGDB_G4], %g4; 
  70.         ldd     [%reg + REGWIN_SZ + KGDB_G6], %g6;
  71. #define LOAD_KGDB_INS(reg) 
  72.         ldd     [%reg + REGWIN_SZ + KGDB_I0], %i0; 
  73.         ldd     [%reg + REGWIN_SZ + KGDB_I2], %i2; 
  74.         ldd     [%reg + REGWIN_SZ + KGDB_I4], %i4; 
  75.         ldd     [%reg + REGWIN_SZ + KGDB_I6], %i6;
  76. #define LOAD_KGDB_SREGS(reg, reg_y, reg_psr, reg_wim, reg_tbr, reg_pc, reg_npc) 
  77. ld [%reg + REGWIN_SZ + KGDB_Y], %reg_y; 
  78. ld [%reg + REGWIN_SZ + KGDB_PSR], %reg_psr; 
  79. ld [%reg + REGWIN_SZ + KGDB_WIM], %reg_wim; 
  80. ld [%reg + REGWIN_SZ + KGDB_TBR], %reg_tbr; 
  81. ld [%reg + REGWIN_SZ + KGDB_PC], %reg_pc; 
  82. ld [%reg + REGWIN_SZ + KGDB_NPC], %reg_npc;
  83. #endif /* !(_SPARC_KGDB_H) */