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 26static inline void arch_kgdb_breakpoint(void) 27{ 28 asm(".word %0" : : "i"(PARISC_KGDB_COMPILED_BREAK_INSN) : "memory"); 29} 30 31struct 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