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