xref: /openbmc/linux/arch/nios2/include/asm/kgdb.h (revision 58e16d792a6a8c6b750f637a4649967fcac853dc)
1*1ccea77eSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
2d16d2be1SLey Foon Tan /*
3d16d2be1SLey Foon Tan  * Copyright (C) 2015 Altera Corporation
4d16d2be1SLey Foon Tan  * Copyright (C) 2011 Tobias Klauser <tklauser@distanz.ch>
5d16d2be1SLey Foon Tan  *
6d16d2be1SLey Foon Tan  * Based on the code posted by Kazuyasu on the Altera Forum at:
7d16d2be1SLey Foon Tan  * http://www.alteraforum.com/forum/showpost.php?p=77003&postcount=20
8d16d2be1SLey Foon Tan  */
9d16d2be1SLey Foon Tan 
10d16d2be1SLey Foon Tan #ifndef _ASM_NIOS2_KGDB_H
11d16d2be1SLey Foon Tan #define _ASM_NIOS2_KGDB_H
12d16d2be1SLey Foon Tan 
13d16d2be1SLey Foon Tan #define CACHE_FLUSH_IS_SAFE	1
14d16d2be1SLey Foon Tan #define BUFMAX			2048
15d16d2be1SLey Foon Tan 
16d16d2be1SLey Foon Tan enum regnames {
17d16d2be1SLey Foon Tan 	GDB_R0 = 0,
18d16d2be1SLey Foon Tan 	GDB_AT,
19d16d2be1SLey Foon Tan 	GDB_R2,
20d16d2be1SLey Foon Tan 	GDB_R3,
21d16d2be1SLey Foon Tan 	GDB_R4,
22d16d2be1SLey Foon Tan 	GDB_R5,
23d16d2be1SLey Foon Tan 	GDB_R6,
24d16d2be1SLey Foon Tan 	GDB_R7,
25d16d2be1SLey Foon Tan 	GDB_R8,
26d16d2be1SLey Foon Tan 	GDB_R9,
27d16d2be1SLey Foon Tan 	GDB_R10,
28d16d2be1SLey Foon Tan 	GDB_R11,
29d16d2be1SLey Foon Tan 	GDB_R12,
30d16d2be1SLey Foon Tan 	GDB_R13,
31d16d2be1SLey Foon Tan 	GDB_R14,
32d16d2be1SLey Foon Tan 	GDB_R15,
33d16d2be1SLey Foon Tan 	GDB_R16,
34d16d2be1SLey Foon Tan 	GDB_R17,
35d16d2be1SLey Foon Tan 	GDB_R18,
36d16d2be1SLey Foon Tan 	GDB_R19,
37d16d2be1SLey Foon Tan 	GDB_R20,
38d16d2be1SLey Foon Tan 	GDB_R21,
39d16d2be1SLey Foon Tan 	GDB_R22,
40d16d2be1SLey Foon Tan 	GDB_R23,
41d16d2be1SLey Foon Tan 	GDB_ET,
42d16d2be1SLey Foon Tan 	GDB_BT,
43d16d2be1SLey Foon Tan 	GDB_GP,
44d16d2be1SLey Foon Tan 	GDB_SP,
45d16d2be1SLey Foon Tan 	GDB_FP,
46d16d2be1SLey Foon Tan 	GDB_EA,
47d16d2be1SLey Foon Tan 	GDB_BA,
48d16d2be1SLey Foon Tan 	GDB_RA,
49d16d2be1SLey Foon Tan 	GDB_PC,
50d16d2be1SLey Foon Tan 	GDB_STATUS,
51d16d2be1SLey Foon Tan 	GDB_ESTATUS,
52d16d2be1SLey Foon Tan 	GDB_BSTATUS,
53d16d2be1SLey Foon Tan 	GDB_IENABLE,
54d16d2be1SLey Foon Tan 	GDB_IPENDING,
55d16d2be1SLey Foon Tan 	GDB_CPUID,
56d16d2be1SLey Foon Tan 	GDB_CTL6,
57d16d2be1SLey Foon Tan 	GDB_EXCEPTION,
58d16d2be1SLey Foon Tan 	GDB_PTEADDR,
59d16d2be1SLey Foon Tan 	GDB_TLBACC,
60d16d2be1SLey Foon Tan 	GDB_TLBMISC,
61d16d2be1SLey Foon Tan 	GDB_ECCINJ,
62d16d2be1SLey Foon Tan 	GDB_BADADDR,
63d16d2be1SLey Foon Tan 	GDB_CONFIG,
64d16d2be1SLey Foon Tan 	GDB_MPUBASE,
65d16d2be1SLey Foon Tan 	GDB_MPUACC,
66d16d2be1SLey Foon Tan 	/* do not change the last entry or anything below! */
67d16d2be1SLey Foon Tan 	GDB_NUMREGBYTES		/* number of registers */
68d16d2be1SLey Foon Tan };
69d16d2be1SLey Foon Tan 
70d16d2be1SLey Foon Tan #define GDB_SIZEOF_REG		sizeof(u32)
71d16d2be1SLey Foon Tan #define DBG_MAX_REG_NUM	(49)
72d16d2be1SLey Foon Tan #define NUMREGBYTES		(DBG_MAX_REG_NUM * sizeof(GDB_SIZEOF_REG))
73d16d2be1SLey Foon Tan 
74d16d2be1SLey Foon Tan #define BREAK_INSTR_SIZE	4
arch_kgdb_breakpoint(void)75d16d2be1SLey Foon Tan static inline void arch_kgdb_breakpoint(void)
76d16d2be1SLey Foon Tan {
77d16d2be1SLey Foon Tan 	__asm__ __volatile__("trap 30\n");
78d16d2be1SLey Foon Tan }
79d16d2be1SLey Foon Tan 
80d16d2be1SLey Foon Tan #endif /* _ASM_NIOS2_KGDB_H */
81