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 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