1 /* 2 * Copyright (C) 2015 Altera Corporation 3 * Copyright (C) 2011 Tobias Klauser <tklauser@distanz.ch> 4 * 5 * Based on the code posted by Kazuyasu on the Altera Forum at: 6 * http://www.alteraforum.com/forum/showpost.php?p=77003&postcount=20 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program. If not, see <http://www.gnu.org/licenses/>. 20 * 21 */ 22 23 #ifndef _ASM_NIOS2_KGDB_H 24 #define _ASM_NIOS2_KGDB_H 25 26 #define CACHE_FLUSH_IS_SAFE 1 27 #define BUFMAX 2048 28 29 enum regnames { 30 GDB_R0 = 0, 31 GDB_AT, 32 GDB_R2, 33 GDB_R3, 34 GDB_R4, 35 GDB_R5, 36 GDB_R6, 37 GDB_R7, 38 GDB_R8, 39 GDB_R9, 40 GDB_R10, 41 GDB_R11, 42 GDB_R12, 43 GDB_R13, 44 GDB_R14, 45 GDB_R15, 46 GDB_R16, 47 GDB_R17, 48 GDB_R18, 49 GDB_R19, 50 GDB_R20, 51 GDB_R21, 52 GDB_R22, 53 GDB_R23, 54 GDB_ET, 55 GDB_BT, 56 GDB_GP, 57 GDB_SP, 58 GDB_FP, 59 GDB_EA, 60 GDB_BA, 61 GDB_RA, 62 GDB_PC, 63 GDB_STATUS, 64 GDB_ESTATUS, 65 GDB_BSTATUS, 66 GDB_IENABLE, 67 GDB_IPENDING, 68 GDB_CPUID, 69 GDB_CTL6, 70 GDB_EXCEPTION, 71 GDB_PTEADDR, 72 GDB_TLBACC, 73 GDB_TLBMISC, 74 GDB_ECCINJ, 75 GDB_BADADDR, 76 GDB_CONFIG, 77 GDB_MPUBASE, 78 GDB_MPUACC, 79 /* do not change the last entry or anything below! */ 80 GDB_NUMREGBYTES /* number of registers */ 81 }; 82 83 #define GDB_SIZEOF_REG sizeof(u32) 84 #define DBG_MAX_REG_NUM (49) 85 #define NUMREGBYTES (DBG_MAX_REG_NUM * sizeof(GDB_SIZEOF_REG)) 86 87 #define BREAK_INSTR_SIZE 4 88 static inline void arch_kgdb_breakpoint(void) 89 { 90 __asm__ __volatile__("trap 30\n"); 91 } 92 93 #endif /* _ASM_NIOS2_KGDB_H */ 94