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 CACHE_FLUSH_IS_SAFE		1
21 
22 #ifndef __ASSEMBLY__
23 
arch_kgdb_breakpoint(void)24 static inline void arch_kgdb_breakpoint(void)
25 {
26 	asm(".word %0" : : "i"(PARISC_KGDB_COMPILED_BREAK_INSN) : "memory");
27 }
28 
29 struct parisc_gdb_regs {
30 	unsigned long gpr[32];
31 	unsigned long sar;
32 	unsigned long iaoq_f;
33 	unsigned long iasq_f;
34 	unsigned long iaoq_b;
35 	unsigned long iasq_b;
36 	unsigned long eiem;
37 	unsigned long iir;
38 	unsigned long isr;
39 	unsigned long ior;
40 	unsigned long ipsw;
41 	unsigned long __unused0;
42 	unsigned long sr4;
43 	unsigned long sr0;
44 	unsigned long sr1;
45 	unsigned long sr2;
46 	unsigned long sr3;
47 	unsigned long sr5;
48 	unsigned long sr6;
49 	unsigned long sr7;
50 	unsigned long cr0;
51 	unsigned long pid1;
52 	unsigned long pid2;
53 	unsigned long scrccr;
54 	unsigned long pid3;
55 	unsigned long pid4;
56 	unsigned long cr24;
57 	unsigned long cr25;
58 	unsigned long cr26;
59 	unsigned long cr27;
60 	unsigned long cr28;
61 	unsigned long cr29;
62 	unsigned long cr30;
63 
64 	u64 fr[32];
65 };
66 
67 #endif
68 #endif
69