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