| /* SPDX-License-Identifier: GPL-2.0 */ | 
 | /* | 
 |  * PA-RISC KGDB support | 
 |  * | 
 |  * Copyright (c) 2019 Sven Schnelle <svens@stackframe.org> | 
 |  * | 
 |  */ | 
 |  | 
 | #ifndef __PARISC_KGDB_H__ | 
 | #define __PARISC_KGDB_H__ | 
 |  | 
 | #define BREAK_INSTR_SIZE		4 | 
 | #define PARISC_KGDB_COMPILED_BREAK_INSN	0x3ffc01f | 
 | #define PARISC_KGDB_BREAK_INSN		0x3ffa01f | 
 |  | 
 |  | 
 | #define NUMREGBYTES			sizeof(struct parisc_gdb_regs) | 
 | #define BUFMAX				4096 | 
 |  | 
 | #define CACHE_FLUSH_IS_SAFE		1 | 
 |  | 
 | #ifndef __ASSEMBLY__ | 
 |  | 
 | static inline void arch_kgdb_breakpoint(void) | 
 | { | 
 | 	asm(".word %0" : : "i"(PARISC_KGDB_COMPILED_BREAK_INSN) : "memory"); | 
 | } | 
 |  | 
 | struct parisc_gdb_regs { | 
 | 	unsigned long gpr[32]; | 
 | 	unsigned long sar; | 
 | 	unsigned long iaoq_f; | 
 | 	unsigned long iasq_f; | 
 | 	unsigned long iaoq_b; | 
 | 	unsigned long iasq_b; | 
 | 	unsigned long eiem; | 
 | 	unsigned long iir; | 
 | 	unsigned long isr; | 
 | 	unsigned long ior; | 
 | 	unsigned long ipsw; | 
 | 	unsigned long __unused0; | 
 | 	unsigned long sr4; | 
 | 	unsigned long sr0; | 
 | 	unsigned long sr1; | 
 | 	unsigned long sr2; | 
 | 	unsigned long sr3; | 
 | 	unsigned long sr5; | 
 | 	unsigned long sr6; | 
 | 	unsigned long sr7; | 
 | 	unsigned long cr0; | 
 | 	unsigned long pid1; | 
 | 	unsigned long pid2; | 
 | 	unsigned long scrccr; | 
 | 	unsigned long pid3; | 
 | 	unsigned long pid4; | 
 | 	unsigned long cr24; | 
 | 	unsigned long cr25; | 
 | 	unsigned long cr26; | 
 | 	unsigned long cr27; | 
 | 	unsigned long cr28; | 
 | 	unsigned long cr29; | 
 | 	unsigned long cr30; | 
 |  | 
 | 	u64 fr[32]; | 
 | }; | 
 |  | 
 | #endif | 
 | #endif |