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