^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef _SPARC_KGDB_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define _SPARC_KGDB_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #ifdef CONFIG_SPARC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #define BUFMAX 2048
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #define BUFMAX 4096
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) enum regnames {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) GDB_G0, GDB_G1, GDB_G2, GDB_G3, GDB_G4, GDB_G5, GDB_G6, GDB_G7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) GDB_O0, GDB_O1, GDB_O2, GDB_O3, GDB_O4, GDB_O5, GDB_SP, GDB_O7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) GDB_L0, GDB_L1, GDB_L2, GDB_L3, GDB_L4, GDB_L5, GDB_L6, GDB_L7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) GDB_I0, GDB_I1, GDB_I2, GDB_I3, GDB_I4, GDB_I5, GDB_FP, GDB_I7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) GDB_F0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) GDB_F31 = GDB_F0 + 31,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #ifdef CONFIG_SPARC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) GDB_Y, GDB_PSR, GDB_WIM, GDB_TBR, GDB_PC, GDB_NPC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) GDB_FSR, GDB_CSR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) GDB_F32 = GDB_F0 + 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) GDB_F62 = GDB_F32 + 15,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) GDB_PC, GDB_NPC, GDB_STATE, GDB_FSR, GDB_FPRS, GDB_Y,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #ifdef CONFIG_SPARC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define NUMREGBYTES ((GDB_CSR + 1) * 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define NUMREGBYTES ((GDB_Y + 1) * 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) struct pt_regs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) asmlinkage void kgdb_trap(unsigned long trap_level, struct pt_regs *regs);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) void arch_kgdb_breakpoint(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #define BREAK_INSTR_SIZE 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #define CACHE_FLUSH_IS_SAFE 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #endif /* _SPARC_KGDB_H */