diff options
author | Sandra Loosemore <sandra@codesourcery.com> | 2013-05-07 01:09:29 +0000 |
---|---|---|
committer | Sandra Loosemore <sandra@codesourcery.com> | 2013-05-07 01:09:29 +0000 |
commit | a1217d97c4b0449d052fad3d2df2ab58b48f918c (patch) | |
tree | 98066c44279440ecd359a4ed516c02afd22a9eae /gdb/nios2-tdep.h | |
parent | 3b7bacacfd7689e3dc00b8eea809eb7a13010ab9 (diff) | |
download | binutils-gdb-a1217d97c4b0449d052fad3d2df2ab58b48f918c.tar.gz |
2013-05-06 Sandra Loosemore <sandra@codesourcery.com>
Andrew Jenner <andrew@codesourcery.com>
Chung-Lin Tang <cltang@codesourcery.com>
Julian Brown <julian@codesourcery.com>
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.
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 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 <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 */ |