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