1130803Smarcel/* This file defines the interface between the d10v simulator and gdb. 2130803Smarcel 3130803Smarcel Copyright 1999, 2002 Free Software Foundation, Inc. 4130803Smarcel 5130803SmarcelThis file is part of GDB. 6130803Smarcel 7130803SmarcelThis program is free software; you can redistribute it and/or modify 8130803Smarcelit under the terms of the GNU General Public License as published by 9130803Smarcelthe Free Software Foundation; either version 2 of the License, or 10130803Smarcel(at your option) any later version. 11130803Smarcel 12130803SmarcelThis program is distributed in the hope that it will be useful, 13130803Smarcelbut WITHOUT ANY WARRANTY; without even the implied warranty of 14130803SmarcelMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15130803SmarcelGNU General Public License for more details. 16130803Smarcel 17130803SmarcelYou should have received a copy of the GNU General Public License 18130803Smarcelalong with this program; if not, write to the Free Software 19130803SmarcelFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 20130803Smarcel 21130803Smarcel#if !defined (SIM_D10V_H) 22130803Smarcel#define SIM_D10V_H 23130803Smarcel 24130803Smarcel#ifdef __cplusplus 25130803Smarcelextern "C" { // } 26130803Smarcel#endif 27130803Smarcel 28130803Smarcel/* GDB interprets addresses as: 29130803Smarcel 30130803Smarcel 0x00xxxxxx: Physical unified memory segment (Unified memory) 31130803Smarcel 0x01xxxxxx: Physical instruction memory segment (On-chip insn memory) 32130803Smarcel 0x02xxxxxx: Physical data memory segment (On-chip data memory) 33130803Smarcel 0x10xxxxxx: Logical data address segment (DMAP translated memory) 34130803Smarcel 0x11xxxxxx: Logical instruction address segment (IMAP translated memory) 35130803Smarcel 36130803Smarcel The remote d10v board interprets addresses as: 37130803Smarcel 38130803Smarcel 0x00xxxxxx: Physical unified memory segment (Unified memory) 39130803Smarcel 0x01xxxxxx: Physical instruction memory segment (On-chip insn memory) 40130803Smarcel 0x02xxxxxx: Physical data memory segment (On-chip data memory) 41130803Smarcel 42130803Smarcel The following translate a virtual DMAP/IMAP offset into a physical 43130803Smarcel memory segment assigning the translated address to PHYS. Since a 44130803Smarcel memory access may cross a page boundrary the number of bytes for 45130803Smarcel which the translation is applicable (or 0 for an invalid virtual 46130803Smarcel offset) is returned. */ 47130803Smarcel 48130803Smarcelenum 49130803Smarcel { 50130803Smarcel SIM_D10V_MEMORY_UNIFIED = 0x00000000, 51130803Smarcel SIM_D10V_MEMORY_INSN = 0x01000000, 52130803Smarcel SIM_D10V_MEMORY_DATA = 0x02000000, 53130803Smarcel SIM_D10V_MEMORY_DMAP = 0x10000000, 54130803Smarcel SIM_D10V_MEMORY_IMAP = 0x11000000 55130803Smarcel }; 56130803Smarcel 57130803Smarcelextern unsigned long sim_d10v_translate_dmap_addr 58130803Smarcel (unsigned long offset, 59130803Smarcel int nr_bytes, 60130803Smarcel unsigned long *phys, 61130803Smarcel void *regcache, 62130803Smarcel unsigned long (*dmap_register) (void *regcache, int reg_nr)); 63130803Smarcel 64130803Smarcelextern unsigned long sim_d10v_translate_imap_addr 65130803Smarcel (unsigned long offset, 66130803Smarcel int nr_bytes, 67130803Smarcel unsigned long *phys, 68130803Smarcel void *regcache, 69130803Smarcel unsigned long (*imap_register) (void *regcache, int reg_nr)); 70130803Smarcel 71130803Smarcelextern unsigned long sim_d10v_translate_addr 72130803Smarcel (unsigned long vaddr, 73130803Smarcel int nr_bytes, 74130803Smarcel unsigned long *phys, 75130803Smarcel void *regcache, 76130803Smarcel unsigned long (*dmap_register) (void *regcache, int reg_nr), 77130803Smarcel unsigned long (*imap_register) (void *regcache, int reg_nr)); 78130803Smarcel 79130803Smarcel 80130803Smarcel/* The simulator makes use of the following register information. */ 81130803Smarcel 82130803Smarcelenum sim_d10v_regs 83130803Smarcel{ 84130803Smarcel SIM_D10V_R0_REGNUM, 85130803Smarcel SIM_D10V_R1_REGNUM, 86130803Smarcel SIM_D10V_R2_REGNUM, 87130803Smarcel SIM_D10V_R3_REGNUM, 88130803Smarcel SIM_D10V_R4_REGNUM, 89130803Smarcel SIM_D10V_R5_REGNUM, 90130803Smarcel SIM_D10V_R6_REGNUM, 91130803Smarcel SIM_D10V_R7_REGNUM, 92130803Smarcel SIM_D10V_R8_REGNUM, 93130803Smarcel SIM_D10V_R9_REGNUM, 94130803Smarcel SIM_D10V_R10_REGNUM, 95130803Smarcel SIM_D10V_R11_REGNUM, 96130803Smarcel SIM_D10V_R12_REGNUM, 97130803Smarcel SIM_D10V_R13_REGNUM, 98130803Smarcel SIM_D10V_R14_REGNUM, 99130803Smarcel SIM_D10V_R15_REGNUM, 100130803Smarcel SIM_D10V_CR0_REGNUM, 101130803Smarcel SIM_D10V_CR1_REGNUM, 102130803Smarcel SIM_D10V_CR2_REGNUM, 103130803Smarcel SIM_D10V_CR3_REGNUM, 104130803Smarcel SIM_D10V_CR4_REGNUM, 105130803Smarcel SIM_D10V_CR5_REGNUM, 106130803Smarcel SIM_D10V_CR6_REGNUM, 107130803Smarcel SIM_D10V_CR7_REGNUM, 108130803Smarcel SIM_D10V_CR8_REGNUM, 109130803Smarcel SIM_D10V_CR9_REGNUM, 110130803Smarcel SIM_D10V_CR10_REGNUM, 111130803Smarcel SIM_D10V_CR11_REGNUM, 112130803Smarcel SIM_D10V_CR12_REGNUM, 113130803Smarcel SIM_D10V_CR13_REGNUM, 114130803Smarcel SIM_D10V_CR14_REGNUM, 115130803Smarcel SIM_D10V_CR15_REGNUM, 116130803Smarcel SIM_D10V_A0_REGNUM, 117130803Smarcel SIM_D10V_A1_REGNUM, 118130803Smarcel SIM_D10V_SPI_REGNUM, 119130803Smarcel SIM_D10V_SPU_REGNUM, 120130803Smarcel SIM_D10V_IMAP0_REGNUM, 121130803Smarcel SIM_D10V_IMAP1_REGNUM, 122130803Smarcel SIM_D10V_DMAP0_REGNUM, 123130803Smarcel SIM_D10V_DMAP1_REGNUM, 124130803Smarcel SIM_D10V_DMAP2_REGNUM, 125130803Smarcel SIM_D10V_DMAP3_REGNUM, 126130803Smarcel SIM_D10V_TS2_DMAP_REGNUM 127130803Smarcel}; 128130803Smarcel 129130803Smarcelenum 130130803Smarcel{ 131130803Smarcel SIM_D10V_NR_R_REGS = 16, 132130803Smarcel SIM_D10V_NR_A_REGS = 2, 133130803Smarcel SIM_D10V_NR_IMAP_REGS = 2, 134130803Smarcel SIM_D10V_NR_DMAP_REGS = 4, 135130803Smarcel SIM_D10V_NR_CR_REGS = 16 136130803Smarcel}; 137130803Smarcel 138130803Smarcel#ifdef __cplusplus 139130803Smarcel} 140130803Smarcel#endif 141130803Smarcel 142130803Smarcel#endif 143