1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * PA-RISC KGDB support 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (c) 2019 Sven Schnelle <svens@stackframe.org> 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef __PARISC_KGDB_H__ 10*4882a593Smuzhiyun #define __PARISC_KGDB_H__ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #define BREAK_INSTR_SIZE 4 13*4882a593Smuzhiyun #define PARISC_KGDB_COMPILED_BREAK_INSN 0x3ffc01f 14*4882a593Smuzhiyun #define PARISC_KGDB_BREAK_INSN 0x3ffa01f 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #define NUMREGBYTES sizeof(struct parisc_gdb_regs) 18*4882a593Smuzhiyun #define BUFMAX 4096 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #define CACHE_FLUSH_IS_SAFE 1 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun #ifndef __ASSEMBLY__ 23*4882a593Smuzhiyun arch_kgdb_breakpoint(void)24*4882a593Smuzhiyunstatic inline void arch_kgdb_breakpoint(void) 25*4882a593Smuzhiyun { 26*4882a593Smuzhiyun asm(".word %0" : : "i"(PARISC_KGDB_COMPILED_BREAK_INSN) : "memory"); 27*4882a593Smuzhiyun } 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun struct parisc_gdb_regs { 30*4882a593Smuzhiyun unsigned long gpr[32]; 31*4882a593Smuzhiyun unsigned long sar; 32*4882a593Smuzhiyun unsigned long iaoq_f; 33*4882a593Smuzhiyun unsigned long iasq_f; 34*4882a593Smuzhiyun unsigned long iaoq_b; 35*4882a593Smuzhiyun unsigned long iasq_b; 36*4882a593Smuzhiyun unsigned long eiem; 37*4882a593Smuzhiyun unsigned long iir; 38*4882a593Smuzhiyun unsigned long isr; 39*4882a593Smuzhiyun unsigned long ior; 40*4882a593Smuzhiyun unsigned long ipsw; 41*4882a593Smuzhiyun unsigned long __unused0; 42*4882a593Smuzhiyun unsigned long sr4; 43*4882a593Smuzhiyun unsigned long sr0; 44*4882a593Smuzhiyun unsigned long sr1; 45*4882a593Smuzhiyun unsigned long sr2; 46*4882a593Smuzhiyun unsigned long sr3; 47*4882a593Smuzhiyun unsigned long sr5; 48*4882a593Smuzhiyun unsigned long sr6; 49*4882a593Smuzhiyun unsigned long sr7; 50*4882a593Smuzhiyun unsigned long cr0; 51*4882a593Smuzhiyun unsigned long pid1; 52*4882a593Smuzhiyun unsigned long pid2; 53*4882a593Smuzhiyun unsigned long scrccr; 54*4882a593Smuzhiyun unsigned long pid3; 55*4882a593Smuzhiyun unsigned long pid4; 56*4882a593Smuzhiyun unsigned long cr24; 57*4882a593Smuzhiyun unsigned long cr25; 58*4882a593Smuzhiyun unsigned long cr26; 59*4882a593Smuzhiyun unsigned long cr27; 60*4882a593Smuzhiyun unsigned long cr28; 61*4882a593Smuzhiyun unsigned long cr29; 62*4882a593Smuzhiyun unsigned long cr30; 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun u64 fr[32]; 65*4882a593Smuzhiyun }; 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun #endif 68*4882a593Smuzhiyun #endif 69