^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright (C) 2015 Altera Corporation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Copyright (C) 2011 Tobias Klauser <tklauser@distanz.ch>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Based on the code posted by Kazuyasu on the Altera Forum at:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * http://www.alteraforum.com/forum/showpost.php?p=77003&postcount=20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #ifndef _ASM_NIOS2_KGDB_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define _ASM_NIOS2_KGDB_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #define CACHE_FLUSH_IS_SAFE 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #define BUFMAX 2048
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) enum regnames {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) GDB_R0 = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) GDB_AT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) GDB_R2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) GDB_R3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) GDB_R4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) GDB_R5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) GDB_R6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) GDB_R7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) GDB_R8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) GDB_R9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) GDB_R10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) GDB_R11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) GDB_R12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) GDB_R13,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) GDB_R14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) GDB_R15,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) GDB_R16,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) GDB_R17,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) GDB_R18,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) GDB_R19,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) GDB_R20,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) GDB_R21,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) GDB_R22,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) GDB_R23,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) GDB_ET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) GDB_BT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) GDB_GP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) GDB_SP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) GDB_FP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) GDB_EA,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) GDB_BA,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) GDB_RA,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) GDB_PC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) GDB_STATUS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) GDB_ESTATUS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) GDB_BSTATUS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) GDB_IENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) GDB_IPENDING,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) GDB_CPUID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) GDB_CTL6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) GDB_EXCEPTION,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) GDB_PTEADDR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) GDB_TLBACC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) GDB_TLBMISC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) GDB_ECCINJ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) GDB_BADADDR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) GDB_CONFIG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) GDB_MPUBASE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) GDB_MPUACC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) /* do not change the last entry or anything below! */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) GDB_NUMREGBYTES /* number of registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) #define GDB_SIZEOF_REG sizeof(u32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) #define DBG_MAX_REG_NUM (49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) #define NUMREGBYTES (DBG_MAX_REG_NUM * sizeof(GDB_SIZEOF_REG))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) #define BREAK_INSTR_SIZE 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) static inline void arch_kgdb_breakpoint(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) __asm__ __volatile__("trap 30\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) #endif /* _ASM_NIOS2_KGDB_H */