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)26static 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