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