xref: /openbmc/linux/arch/parisc/include/asm/kgdb.h (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1eacbfce1SSven Schnelle /* SPDX-License-Identifier: GPL-2.0 */
2eacbfce1SSven Schnelle /*
3eacbfce1SSven Schnelle  * PA-RISC KGDB support
4eacbfce1SSven Schnelle  *
5eacbfce1SSven Schnelle  * Copyright (c) 2019 Sven Schnelle <svens@stackframe.org>
6eacbfce1SSven Schnelle  *
7eacbfce1SSven Schnelle  */
8eacbfce1SSven Schnelle 
9eacbfce1SSven Schnelle #ifndef __PARISC_KGDB_H__
10eacbfce1SSven Schnelle #define __PARISC_KGDB_H__
11eacbfce1SSven Schnelle 
12eacbfce1SSven Schnelle #define BREAK_INSTR_SIZE		4
13eacbfce1SSven Schnelle #define PARISC_KGDB_COMPILED_BREAK_INSN	0x3ffc01f
14eacbfce1SSven Schnelle #define PARISC_KGDB_BREAK_INSN		0x3ffa01f
15eacbfce1SSven Schnelle 
16eacbfce1SSven Schnelle 
17eacbfce1SSven Schnelle #define NUMREGBYTES			sizeof(struct parisc_gdb_regs)
18eacbfce1SSven Schnelle #define BUFMAX				4096
19eacbfce1SSven Schnelle 
20*82da62abSHelge Deller #define KGDB_MAX_BREAKPOINTS		40
21*82da62abSHelge Deller 
22eacbfce1SSven Schnelle #define CACHE_FLUSH_IS_SAFE		1
23eacbfce1SSven Schnelle 
24eacbfce1SSven Schnelle #ifndef __ASSEMBLY__
25eacbfce1SSven Schnelle 
arch_kgdb_breakpoint(void)26eacbfce1SSven Schnelle static inline void arch_kgdb_breakpoint(void)
27eacbfce1SSven Schnelle {
28eacbfce1SSven Schnelle 	asm(".word %0" : : "i"(PARISC_KGDB_COMPILED_BREAK_INSN) : "memory");
29eacbfce1SSven Schnelle }
30eacbfce1SSven Schnelle 
31eacbfce1SSven Schnelle struct parisc_gdb_regs {
32eacbfce1SSven Schnelle 	unsigned long gpr[32];
33eacbfce1SSven Schnelle 	unsigned long sar;
34eacbfce1SSven Schnelle 	unsigned long iaoq_f;
35eacbfce1SSven Schnelle 	unsigned long iasq_f;
36eacbfce1SSven Schnelle 	unsigned long iaoq_b;
37eacbfce1SSven Schnelle 	unsigned long iasq_b;
38eacbfce1SSven Schnelle 	unsigned long eiem;
39eacbfce1SSven Schnelle 	unsigned long iir;
40eacbfce1SSven Schnelle 	unsigned long isr;
41eacbfce1SSven Schnelle 	unsigned long ior;
42eacbfce1SSven Schnelle 	unsigned long ipsw;
43eacbfce1SSven Schnelle 	unsigned long __unused0;
44eacbfce1SSven Schnelle 	unsigned long sr4;
45eacbfce1SSven Schnelle 	unsigned long sr0;
46eacbfce1SSven Schnelle 	unsigned long sr1;
47eacbfce1SSven Schnelle 	unsigned long sr2;
48eacbfce1SSven Schnelle 	unsigned long sr3;
49eacbfce1SSven Schnelle 	unsigned long sr5;
50eacbfce1SSven Schnelle 	unsigned long sr6;
51eacbfce1SSven Schnelle 	unsigned long sr7;
52eacbfce1SSven Schnelle 	unsigned long cr0;
53eacbfce1SSven Schnelle 	unsigned long pid1;
54eacbfce1SSven Schnelle 	unsigned long pid2;
55eacbfce1SSven Schnelle 	unsigned long scrccr;
56eacbfce1SSven Schnelle 	unsigned long pid3;
57eacbfce1SSven Schnelle 	unsigned long pid4;
58eacbfce1SSven Schnelle 	unsigned long cr24;
59eacbfce1SSven Schnelle 	unsigned long cr25;
60eacbfce1SSven Schnelle 	unsigned long cr26;
61eacbfce1SSven Schnelle 	unsigned long cr27;
62eacbfce1SSven Schnelle 	unsigned long cr28;
63eacbfce1SSven Schnelle 	unsigned long cr29;
64eacbfce1SSven Schnelle 	unsigned long cr30;
65eacbfce1SSven Schnelle 
66eacbfce1SSven Schnelle 	u64 fr[32];
67eacbfce1SSven Schnelle };
68eacbfce1SSven Schnelle 
69eacbfce1SSven Schnelle #endif
70eacbfce1SSven Schnelle #endif
71