diff options
Diffstat (limited to 'include/gdb/sim-cr16.h')
-rw-r--r-- | include/gdb/sim-cr16.h | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/include/gdb/sim-cr16.h b/include/gdb/sim-cr16.h new file mode 100644 index 0000000..9ea2731 --- /dev/null +++ b/include/gdb/sim-cr16.h @@ -0,0 +1,106 @@ +/* This file defines the interface between the cr16 simulator and gdb. + + Copyright 2008 Free Software Foundation, 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/>. */ + +#if !defined (SIM_CR16_H) +#define SIM_CR16_H + +#ifdef __cplusplus +extern "C" { // } +#endif + +enum + { + SIM_CR16_MEMORY_UNIFIED = 0x00000000, + SIM_CR16_MEMORY_INSN = 0x10000000, + SIM_CR16_MEMORY_DATA = 0x10000000, + SIM_CR16_MEMORY_DMAP = 0x10000000, + SIM_CR16_MEMORY_IMAP = 0x10000000 + }; + +extern unsigned long sim_cr16_translate_dmap_addr + (unsigned long offset, + int nr_bytes, + unsigned long *phys, + void *regcache, + unsigned long (*dmap_register) (void *regcache, int reg_nr)); + +extern unsigned long sim_cr16_translate_imap_addr + (unsigned long offset, + int nr_bytes, + unsigned long *phys, + void *regcache, + unsigned long (*imap_register) (void *regcache, int reg_nr)); + +extern unsigned long sim_cr16_translate_addr + (unsigned long vaddr, + int nr_bytes, + unsigned long *phys, + void *regcache, + unsigned long (*dmap_register) (void *regcache, int reg_nr), + unsigned long (*imap_register) (void *regcache, int reg_nr)); + + +/* The simulator makes use of the following register information. */ + +enum sim_cr16_regs +{ + SIM_CR16_R0_REGNUM, + SIM_CR16_R1_REGNUM, + SIM_CR16_R2_REGNUM, + SIM_CR16_R3_REGNUM, + SIM_CR16_R4_REGNUM, + SIM_CR16_R5_REGNUM, + SIM_CR16_R6_REGNUM, + SIM_CR16_R7_REGNUM, + SIM_CR16_R8_REGNUM, + SIM_CR16_R9_REGNUM, + SIM_CR16_R10_REGNUM, + SIM_CR16_R11_REGNUM, + SIM_CR16_R12_REGNUM, + SIM_CR16_R13_REGNUM, + SIM_CR16_R14_REGNUM, + SIM_CR16_R15_REGNUM, + + SIM_CR16_PC_REGNUM, + SIM_CR16_ISP_REGNUM, + SIM_CR16_USP_REGNUM, + SIM_CR16_INTBASE_REGNUM, + SIM_CR16_PSR_REGNUM, + SIM_CR16_CFG_REGNUM, + SIM_CR16_DBS_REGNUM, + SIM_CR16_DCR_REGNUM, + SIM_CR16_DSR_REGNUM, + SIM_CR16_CAR0_REGNUM, + SIM_CR16_CAR1_REGNUM +}; + +enum +{ + SIM_CR16_NR_R_REGS = 16, + SIM_CR16_NR_A_REGS = 2, + SIM_CR16_NR_IMAP_REGS = 2, + SIM_CR16_NR_DMAP_REGS = 4, + SIM_CR16_NR_CR_REGS = 11 +}; + +#ifdef __cplusplus +} +#endif + +#endif |