root/arch/sparc/include/asm/kdebug_32.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. sp_enter_debugger

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * kdebug.h:  Defines and definitions for debugging the Linux kernel
   4  *            under various kernel debuggers.
   5  *
   6  * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
   7  */
   8 #ifndef _SPARC_KDEBUG_H
   9 #define _SPARC_KDEBUG_H
  10 
  11 #include <asm/openprom.h>
  12 #include <asm/vaddrs.h>
  13 
  14 /* Breakpoints are enter through trap table entry 126.  So in sparc assembly
  15  * if you want to drop into the debugger you do:
  16  *
  17  * t DEBUG_BP_TRAP
  18  */
  19 
  20 #define DEBUG_BP_TRAP     126
  21 
  22 #ifndef __ASSEMBLY__
  23 /* The debug vector is passed in %o1 at boot time.  It is a pointer to
  24  * a structure in the debuggers address space.  Here is its format.
  25  */
  26 
  27 typedef unsigned int (*debugger_funct)(void);
  28 
  29 struct kernel_debug {
  30         /* First the entry point into the debugger.  You jump here
  31          * to give control over to the debugger.
  32          */
  33         unsigned long kdebug_entry;
  34         unsigned long kdebug_trapme;   /* Figure out later... */
  35         /* The following is the number of pages that the debugger has
  36          * taken from to total pool.
  37          */
  38         unsigned long *kdebug_stolen_pages;
  39         /* Ok, after you remap yourself and/or change the trap table
  40          * from what you were left with at boot time you have to call
  41          * this synchronization function so the debugger can check out
  42          * what you have done.
  43          */
  44         debugger_funct teach_debugger;
  45 }; /* I think that is it... */
  46 
  47 extern struct kernel_debug *linux_dbvec;
  48 
  49 /* Use this macro in C-code to enter the debugger. */
  50 static inline void sp_enter_debugger(void)
  51 {
  52         __asm__ __volatile__("jmpl %0, %%o7\n\t"
  53                              "nop\n\t" : :
  54                              "r" (linux_dbvec) : "o7", "memory");
  55 }
  56 
  57 #define SP_ENTER_DEBUGGER do { \
  58              if((linux_dbvec!=0) && ((*(short *)linux_dbvec)!=-1)) \
  59                sp_enter_debugger(); \
  60                        } while(0)
  61 
  62 enum die_val {
  63         DIE_UNUSED,
  64         DIE_OOPS,
  65 };
  66 
  67 #endif /* !(__ASSEMBLY__) */
  68 
  69 /* Some nice offset defines for assembler code. */
  70 #define KDEBUG_ENTRY_OFF    0x0
  71 #define KDEBUG_DUNNO_OFF    0x4
  72 #define KDEBUG_DUNNO2_OFF   0x8
  73 #define KDEBUG_TEACH_OFF    0xc
  74 
  75 #endif /* !(_SPARC_KDEBUG_H) */

/* [<][>][^][v][top][bottom][index][help] */