1217309Snwhitehorn/* SPDX-License-Identifier: GPL-2.0 */
2251843Sbapt/*
3217309Snwhitehorn * PA-RISC KGDB support
4220749Snwhitehorn *
5217309Snwhitehorn * Copyright (c) 2019 Sven Schnelle <svens@stackframe.org>
6251843Sbapt *
7217309Snwhitehorn */
8217309Snwhitehorn
9217309Snwhitehorn#ifndef __PARISC_KGDB_H__
10217309Snwhitehorn#define __PARISC_KGDB_H__
11217309Snwhitehorn
12217309Snwhitehorn#define BREAK_INSTR_SIZE		4
13217309Snwhitehorn#define PARISC_KGDB_COMPILED_BREAK_INSN	0x3ffc01f
14217309Snwhitehorn#define PARISC_KGDB_BREAK_INSN		0x3ffa01f
15217309Snwhitehorn
16217309Snwhitehorn
17217309Snwhitehorn#define NUMREGBYTES			sizeof(struct parisc_gdb_regs)
18217309Snwhitehorn#define BUFMAX				4096
19217309Snwhitehorn
20217309Snwhitehorn#define KGDB_MAX_BREAKPOINTS		40
21217309Snwhitehorn
22217309Snwhitehorn#define CACHE_FLUSH_IS_SAFE		1
23217309Snwhitehorn
24217309Snwhitehorn#ifndef __ASSEMBLY__
25217309Snwhitehorn
26217309Snwhitehornstatic inline void arch_kgdb_breakpoint(void)
27217309Snwhitehorn{
28217309Snwhitehorn	asm(".word %0" : : "i"(PARISC_KGDB_COMPILED_BREAK_INSN) : "memory");
29217309Snwhitehorn}
30217309Snwhitehorn
31251843Sbaptstruct parisc_gdb_regs {
32217309Snwhitehorn	unsigned long gpr[32];
33217309Snwhitehorn	unsigned long sar;
34217309Snwhitehorn	unsigned long iaoq_f;
35217309Snwhitehorn	unsigned long iasq_f;
36217309Snwhitehorn	unsigned long iaoq_b;
37217309Snwhitehorn	unsigned long iasq_b;
38217309Snwhitehorn	unsigned long eiem;
39217309Snwhitehorn	unsigned long iir;
40217309Snwhitehorn	unsigned long isr;
41217309Snwhitehorn	unsigned long ior;
42217309Snwhitehorn	unsigned long ipsw;
43217309Snwhitehorn	unsigned long __unused0;
44217309Snwhitehorn	unsigned long sr4;
45217309Snwhitehorn	unsigned long sr0;
46217309Snwhitehorn	unsigned long sr1;
47217309Snwhitehorn	unsigned long sr2;
48217309Snwhitehorn	unsigned long sr3;
49217309Snwhitehorn	unsigned long sr5;
50217309Snwhitehorn	unsigned long sr6;
51217309Snwhitehorn	unsigned long sr7;
52217309Snwhitehorn	unsigned long cr0;
53217309Snwhitehorn	unsigned long pid1;
54217309Snwhitehorn	unsigned long pid2;
55217309Snwhitehorn	unsigned long scrccr;
56217309Snwhitehorn	unsigned long pid3;
57217309Snwhitehorn	unsigned long pid4;
58217309Snwhitehorn	unsigned long cr24;
59217309Snwhitehorn	unsigned long cr25;
60217309Snwhitehorn	unsigned long cr26;
61217309Snwhitehorn	unsigned long cr27;
62217309Snwhitehorn	unsigned long cr28;
63217309Snwhitehorn	unsigned long cr29;
64217309Snwhitehorn	unsigned long cr30;
65217309Snwhitehorn
66217309Snwhitehorn	u64 fr[32];
67217309Snwhitehorn};
68217309Snwhitehorn
69217309Snwhitehorn#endif
70217309Snwhitehorn#endif
71217309Snwhitehorn