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