From d11968d37d20ed65dc9432822b83e948d95b46fe Mon Sep 17 00:00:00 2001 From: Sandra Loosemore Date: Tue, 7 May 2013 01:09:27 +0000 Subject: 2013-05-06 Sandra Loosemore Andrew Jenner Chung-Lin Tang Julian Brown Based on the nios2-elf port from Altera Corporation. gdb/ * Makefile.in (ALL_TARGET_OBS): Add nios2-tdep.o and nios2-linux-tdep.o. (HFILES_NO_SRCDIR): Add nios2-tdep.h. (ALLDEPFILES): Add nios2-tdep.c and nios2-linux-tdep.c. * configure.tgt: Add nios2*-*-linux* and nios2*-*-* targets. * nios2-tdep.h: New. * nios2-tdep.c: New. * nios2-linux-tdep.c: New. * features/Makefile (WHICH): Add nios2-linux. (nios2-linux-expedite): Set. * features/nios2-cpu.xml: New. * features/nios2.xml: New. * features/nios2-linux.xml: New. * features/nios2.c: New (autogenerated). * features/nios2-linux.c: New (autogenerated). * regformats/nios2-linux.dat: New (autogenerated). * NEWS (Changes since GDB 7.6): Add new Nios II targets and commands. gdb/doc/ * gdb.texinfo (Nios II): New section. (Nios II Features): New section. --- gdb/nios2-tdep.h | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 gdb/nios2-tdep.h (limited to 'gdb/nios2-tdep.h') diff --git a/gdb/nios2-tdep.h b/gdb/nios2-tdep.h new file mode 100644 index 00000000000..5346b9a41c6 --- /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 . */ + +#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 */ -- cgit v1.2.1