1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __ASM_KGDB_H_ 3 #define __ASM_KGDB_H_ 4 5 #ifdef __KERNEL__ 6 7 #include <asm/sgidefs.h> 8 9 #if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2) || \ 10 (_MIPS_ISA == _MIPS_ISA_MIPS32) 11 12 #define KGDB_GDB_REG_SIZE 32 13 #define GDB_SIZEOF_REG sizeof(u32) 14 15 #elif (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \ 16 (_MIPS_ISA == _MIPS_ISA_MIPS64) 17 18 #ifdef CONFIG_32BIT 19 #define KGDB_GDB_REG_SIZE 32 20 #define GDB_SIZEOF_REG sizeof(u32) 21 #else /* CONFIG_32BIT */ 22 #define KGDB_GDB_REG_SIZE 64 23 #define GDB_SIZEOF_REG sizeof(u64) 24 #endif 25 #else 26 #error "Need to set KGDB_GDB_REG_SIZE for MIPS ISA" 27 #endif /* _MIPS_ISA */ 28 29 #define BUFMAX 2048 30 #define DBG_MAX_REG_NUM 72 31 #define NUMREGBYTES (DBG_MAX_REG_NUM * sizeof(GDB_SIZEOF_REG)) 32 #define NUMCRITREGBYTES (12 * sizeof(GDB_SIZEOF_REG)) 33 #define BREAK_INSTR_SIZE 4 34 #define CACHE_FLUSH_IS_SAFE 0 35 36 extern void arch_kgdb_breakpoint(void); 37 extern void *saved_vectors[32]; 38 extern void handle_exception(struct pt_regs *regs); 39 extern void breakinst(void); 40 extern int kgdb_ll_trap(int cmd, const char *str, 41 struct pt_regs *regs, long err, int trap, int sig); 42 43 #endif /* __KERNEL__ */ 44 45 #endif /* __ASM_KGDB_H_ */ 46