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