Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.23 103 lines 2.7 kB view raw
1/* 2 * May be copied or modified under the terms of the GNU General Public 3 * License. See linux/COPYING for more information. 4 * 5 * Based on original code by Glenn Engel, Jim Kingdon, 6 * David Grothe <dave@gcom.com>, Tigran Aivazian, <tigran@sco.com> and 7 * Amit S. Kale <akale@veritas.com> 8 * 9 * Super-H port based on sh-stub.c (Ben Lee and Steve Chamberlain) by 10 * Henry Bell <henry.bell@st.com> 11 * 12 * Header file for low-level support for remote debug using GDB. 13 * 14 */ 15 16#ifndef __KGDB_H 17#define __KGDB_H 18 19#include <asm/ptrace.h> 20#include <asm/cacheflush.h> 21 22struct console; 23 24/* Same as pt_regs but has vbr in place of syscall_nr */ 25struct kgdb_regs { 26 unsigned long regs[16]; 27 unsigned long pc; 28 unsigned long pr; 29 unsigned long sr; 30 unsigned long gbr; 31 unsigned long mach; 32 unsigned long macl; 33 unsigned long vbr; 34}; 35 36/* State info */ 37extern char kgdb_in_gdb_mode; 38extern int kgdb_done_init; 39extern int kgdb_enabled; 40extern int kgdb_nofault; /* Ignore bus errors (in gdb mem access) */ 41extern int kgdb_halt; /* Execute initial breakpoint at startup */ 42extern char in_nmi; /* Debounce flag to prevent NMI reentry*/ 43 44/* SCI */ 45extern int kgdb_portnum; 46extern int kgdb_baud; 47extern char kgdb_parity; 48extern char kgdb_bits; 49 50/* Init and interface stuff */ 51extern int kgdb_init(void); 52extern int (*kgdb_getchar)(void); 53extern void (*kgdb_putchar)(int); 54 55/* Trap functions */ 56typedef void (kgdb_debug_hook_t)(struct pt_regs *regs); 57typedef void (kgdb_bus_error_hook_t)(void); 58extern kgdb_debug_hook_t *kgdb_debug_hook; 59extern kgdb_bus_error_hook_t *kgdb_bus_err_hook; 60 61/* Console */ 62void kgdb_console_write(struct console *co, const char *s, unsigned count); 63extern int kgdb_console_setup(struct console *, char *); 64 65/* Prototypes for jmp fns */ 66#define _JBLEN 9 67typedef int jmp_buf[_JBLEN]; 68extern void longjmp(jmp_buf __jmpb, int __retval); 69extern int setjmp(jmp_buf __jmpb); 70 71/* Forced breakpoint */ 72#define breakpoint() \ 73do { \ 74 if (kgdb_enabled) \ 75 __asm__ __volatile__("trapa #0x3c"); \ 76} while (0) 77 78/* KGDB should be able to flush all kernel text space */ 79#if defined(CONFIG_CPU_SH4) 80#define kgdb_flush_icache_range(start, end) \ 81{ \ 82 __flush_purge_region((void*)(start), (int)(end) - (int)(start));\ 83 flush_icache_range((start), (end)); \ 84} 85#else 86#define kgdb_flush_icache_range(start, end) do { } while (0) 87#endif 88 89/* Taken from sh-stub.c of GDB 4.18 */ 90static const char hexchars[] = "0123456789abcdef"; 91 92/* Get high hex bits */ 93static inline char highhex(const int x) 94{ 95 return hexchars[(x >> 4) & 0xf]; 96} 97 98/* Get low hex bits */ 99static inline char lowhex(const int x) 100{ 101 return hexchars[x & 0xf]; 102} 103#endif