diff options
Diffstat (limited to 'gdb/nios2-tdep.h')
-rw-r--r-- | gdb/nios2-tdep.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/gdb/nios2-tdep.h b/gdb/nios2-tdep.h new file mode 100644 index 0000000..5346b9a --- /dev/null +++ b/gdb/nios2-tdep.h @@ -0,0 +1,80 @@ +/* Target-dependent header for the Nios II architecture, for GDB. + Copyright (C) 2012-2013 Free Software Foundation, Inc. + Contributed by Mentor Graphics, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#ifndef NIOS2_TDEP_H +#define NIOS2_TDEP_H + +/* Registers. */ +#define NIOS2_Z_REGNUM 0 /* Zero */ +#define NIOS2_R2_REGNUM 2 /* used for return value */ +#define NIOS2_R3_REGNUM 3 /* used for return value */ +/* Used for hidden zero argument to store ptr to struct return value. */ +#define NIOS2_R4_REGNUM 4 +#define NIOS2_R7_REGNUM 7 +#define NIOS2_GP_REGNUM 26 /* Global Pointer */ +#define NIOS2_SP_REGNUM 27 /* Stack Pointer */ +#define NIOS2_FP_REGNUM 28 /* Frame Pointer */ +#define NIOS2_EA_REGNUM 29 /* Exception address */ +#define NIOS2_BA_REGNUM 30 /* Breakpoint return address */ +#define NIOS2_RA_REGNUM 31 /* Return address */ +#define NIOS2_PC_REGNUM 32 + +/* Control registers. */ +#define NIOS2_STATUS_REGNUM 33 +#define NIOS2_ESTATUS_REGNUM 34 +#define NIOS2_BSTATUS_REGNUM 35 +#define NIOS2_IENABLE_REGNUM 36 +#define NIOS2_IPENDING_REGNUM 37 +#define NIOS2_CPUID_REGNUM 38 +#define NIOS2_EXCEPTION_REGNUM 40 +#define NIOS2_PTEADDR_REGNUM 41 +#define NIOS2_TLBACC_REGNUM 42 +#define NIOS2_TLBMISC_REGNUM 43 +#define NIOS2_ECCINJ_REGNUM 44 +#define NIOS2_BADADDR_REGNUM 45 +#define NIOS2_CONFIG_REGNUM 46 +#define NIOS2_MPUBASE_REGNUM 47 +#define NIOS2_MPUACC_REGNUM 48 + +/* R4-R7 are used for argument passing. */ +#define NIOS2_FIRST_ARGREG NIOS2_R4_REGNUM +#define NIOS2_LAST_ARGREG NIOS2_R7_REGNUM + +/* Number of all registers. */ +#define NIOS2_NUM_REGS 49 + +/* Size of an instruction, in bytes. */ +#define NIOS2_OPCODE_SIZE 4 + +/* Target-dependent structure in gdbarch. */ +struct gdbarch_tdep +{ + /* Assumes FRAME is stopped at a syscall (trap) instruction; returns + the expected next PC. */ + CORE_ADDR (*syscall_next_pc) (struct frame_info *frame); + + /* Offset to PC value in jump buffer. + If this is negative, longjmp support will be disabled. */ + int jb_pc; +}; + +extern struct target_desc *tdesc_nios2_linux; +extern struct target_desc *tdesc_nios2; + +#endif /* NIOS2_TDEP_H */ |