xref: /openbmc/linux/arch/mips/include/asm/kgdb.h (revision 03ab8e6297acd1bc0eedaa050e2a1635c576fd11)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2384740dcSRalf Baechle #ifndef __ASM_KGDB_H_
3384740dcSRalf Baechle #define __ASM_KGDB_H_
4384740dcSRalf Baechle 
5384740dcSRalf Baechle #ifdef __KERNEL__
6384740dcSRalf Baechle 
7384740dcSRalf Baechle #include <asm/sgidefs.h>
8384740dcSRalf Baechle 
9384740dcSRalf Baechle #if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2) || \
10384740dcSRalf Baechle 	(_MIPS_ISA == _MIPS_ISA_MIPS32)
11384740dcSRalf Baechle 
12384740dcSRalf Baechle #define KGDB_GDB_REG_SIZE	32
130896a9beSJason Wessel #define GDB_SIZEOF_REG		sizeof(u32)
14384740dcSRalf Baechle 
15384740dcSRalf Baechle #elif (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
16384740dcSRalf Baechle 	(_MIPS_ISA == _MIPS_ISA_MIPS64)
17384740dcSRalf Baechle 
18384740dcSRalf Baechle #ifdef CONFIG_32BIT
19384740dcSRalf Baechle #define KGDB_GDB_REG_SIZE	32
200896a9beSJason Wessel #define GDB_SIZEOF_REG		sizeof(u32)
21*301e4999SLukas Bulwahn #else /* CONFIG_32BIT */
22384740dcSRalf Baechle #define KGDB_GDB_REG_SIZE	64
230896a9beSJason Wessel #define GDB_SIZEOF_REG		sizeof(u64)
24384740dcSRalf Baechle #endif
25384740dcSRalf Baechle #else
26384740dcSRalf Baechle #error "Need to set KGDB_GDB_REG_SIZE for MIPS ISA"
27384740dcSRalf Baechle #endif /* _MIPS_ISA */
28384740dcSRalf Baechle 
29384740dcSRalf Baechle #define BUFMAX			2048
300896a9beSJason Wessel #define DBG_MAX_REG_NUM		72
310896a9beSJason Wessel #define NUMREGBYTES		(DBG_MAX_REG_NUM * sizeof(GDB_SIZEOF_REG))
320896a9beSJason Wessel #define NUMCRITREGBYTES		(12 * sizeof(GDB_SIZEOF_REG))
33384740dcSRalf Baechle #define BREAK_INSTR_SIZE	4
34384740dcSRalf Baechle #define CACHE_FLUSH_IS_SAFE	0
35384740dcSRalf Baechle 
36384740dcSRalf Baechle extern void arch_kgdb_breakpoint(void);
37384740dcSRalf Baechle extern void *saved_vectors[32];
38384740dcSRalf Baechle extern void handle_exception(struct pt_regs *regs);
39384740dcSRalf Baechle extern void breakinst(void);
405dd11d5dSJason Wessel extern int kgdb_ll_trap(int cmd, const char *str,
415dd11d5dSJason Wessel 			struct pt_regs *regs, long err, int trap, int sig);
42384740dcSRalf Baechle 
43384740dcSRalf Baechle #endif				/* __KERNEL__ */
44384740dcSRalf Baechle 
45384740dcSRalf Baechle #endif /* __ASM_KGDB_H_ */
46