1d2201f2fSdrahn /* This file defines the interface between the d10v simulator and gdb. 2d2201f2fSdrahn 3d2201f2fSdrahn Copyright 1999, 2002 Free Software Foundation, Inc. 4d2201f2fSdrahn 5d2201f2fSdrahn This file is part of GDB. 6d2201f2fSdrahn 7d2201f2fSdrahn This program is free software; you can redistribute it and/or modify 8d2201f2fSdrahn it under the terms of the GNU General Public License as published by 9d2201f2fSdrahn the Free Software Foundation; either version 2 of the License, or 10d2201f2fSdrahn (at your option) any later version. 11d2201f2fSdrahn 12d2201f2fSdrahn This program is distributed in the hope that it will be useful, 13d2201f2fSdrahn but WITHOUT ANY WARRANTY; without even the implied warranty of 14d2201f2fSdrahn MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15d2201f2fSdrahn GNU General Public License for more details. 16d2201f2fSdrahn 17d2201f2fSdrahn You should have received a copy of the GNU General Public License 18d2201f2fSdrahn along with this program; if not, write to the Free Software 19d2201f2fSdrahn Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 20d2201f2fSdrahn 21d2201f2fSdrahn #if !defined (SIM_D10V_H) 22d2201f2fSdrahn #define SIM_D10V_H 23d2201f2fSdrahn 24d2201f2fSdrahn #ifdef __cplusplus 25d2201f2fSdrahn extern "C" { // } 26d2201f2fSdrahn #endif 27d2201f2fSdrahn 28d2201f2fSdrahn /* GDB interprets addresses as: 29d2201f2fSdrahn 30d2201f2fSdrahn 0x00xxxxxx: Physical unified memory segment (Unified memory) 31d2201f2fSdrahn 0x01xxxxxx: Physical instruction memory segment (On-chip insn memory) 32d2201f2fSdrahn 0x02xxxxxx: Physical data memory segment (On-chip data memory) 33d2201f2fSdrahn 0x10xxxxxx: Logical data address segment (DMAP translated memory) 34d2201f2fSdrahn 0x11xxxxxx: Logical instruction address segment (IMAP translated memory) 35d2201f2fSdrahn 36d2201f2fSdrahn The remote d10v board interprets addresses as: 37d2201f2fSdrahn 38d2201f2fSdrahn 0x00xxxxxx: Physical unified memory segment (Unified memory) 39d2201f2fSdrahn 0x01xxxxxx: Physical instruction memory segment (On-chip insn memory) 40d2201f2fSdrahn 0x02xxxxxx: Physical data memory segment (On-chip data memory) 41d2201f2fSdrahn 42d2201f2fSdrahn The following translate a virtual DMAP/IMAP offset into a physical 43d2201f2fSdrahn memory segment assigning the translated address to PHYS. Since a 44d2201f2fSdrahn memory access may cross a page boundrary the number of bytes for 45d2201f2fSdrahn which the translation is applicable (or 0 for an invalid virtual 46d2201f2fSdrahn offset) is returned. */ 47d2201f2fSdrahn 48d2201f2fSdrahn enum 49d2201f2fSdrahn { 50d2201f2fSdrahn SIM_D10V_MEMORY_UNIFIED = 0x00000000, 51d2201f2fSdrahn SIM_D10V_MEMORY_INSN = 0x01000000, 52d2201f2fSdrahn SIM_D10V_MEMORY_DATA = 0x02000000, 53d2201f2fSdrahn SIM_D10V_MEMORY_DMAP = 0x10000000, 54d2201f2fSdrahn SIM_D10V_MEMORY_IMAP = 0x11000000 55d2201f2fSdrahn }; 56d2201f2fSdrahn 57d2201f2fSdrahn extern unsigned long sim_d10v_translate_dmap_addr 58d2201f2fSdrahn (unsigned long offset, 59d2201f2fSdrahn int nr_bytes, 60d2201f2fSdrahn unsigned long *phys, 61*b725ae77Skettenis void *regcache, 62*b725ae77Skettenis unsigned long (*dmap_register) (void *regcache, int reg_nr)); 63d2201f2fSdrahn 64d2201f2fSdrahn extern unsigned long sim_d10v_translate_imap_addr 65d2201f2fSdrahn (unsigned long offset, 66d2201f2fSdrahn int nr_bytes, 67d2201f2fSdrahn unsigned long *phys, 68*b725ae77Skettenis void *regcache, 69*b725ae77Skettenis unsigned long (*imap_register) (void *regcache, int reg_nr)); 70d2201f2fSdrahn 71d2201f2fSdrahn extern unsigned long sim_d10v_translate_addr 72d2201f2fSdrahn (unsigned long vaddr, 73d2201f2fSdrahn int nr_bytes, 74d2201f2fSdrahn unsigned long *phys, 75*b725ae77Skettenis void *regcache, 76*b725ae77Skettenis unsigned long (*dmap_register) (void *regcache, int reg_nr), 77*b725ae77Skettenis unsigned long (*imap_register) (void *regcache, int reg_nr)); 78d2201f2fSdrahn 79d2201f2fSdrahn 80d2201f2fSdrahn /* The simulator makes use of the following register information. */ 81d2201f2fSdrahn 82d2201f2fSdrahn enum sim_d10v_regs 83d2201f2fSdrahn { 84d2201f2fSdrahn SIM_D10V_R0_REGNUM, 85d2201f2fSdrahn SIM_D10V_R1_REGNUM, 86d2201f2fSdrahn SIM_D10V_R2_REGNUM, 87d2201f2fSdrahn SIM_D10V_R3_REGNUM, 88d2201f2fSdrahn SIM_D10V_R4_REGNUM, 89d2201f2fSdrahn SIM_D10V_R5_REGNUM, 90d2201f2fSdrahn SIM_D10V_R6_REGNUM, 91d2201f2fSdrahn SIM_D10V_R7_REGNUM, 92d2201f2fSdrahn SIM_D10V_R8_REGNUM, 93d2201f2fSdrahn SIM_D10V_R9_REGNUM, 94d2201f2fSdrahn SIM_D10V_R10_REGNUM, 95d2201f2fSdrahn SIM_D10V_R11_REGNUM, 96d2201f2fSdrahn SIM_D10V_R12_REGNUM, 97d2201f2fSdrahn SIM_D10V_R13_REGNUM, 98d2201f2fSdrahn SIM_D10V_R14_REGNUM, 99d2201f2fSdrahn SIM_D10V_R15_REGNUM, 100d2201f2fSdrahn SIM_D10V_CR0_REGNUM, 101d2201f2fSdrahn SIM_D10V_CR1_REGNUM, 102d2201f2fSdrahn SIM_D10V_CR2_REGNUM, 103d2201f2fSdrahn SIM_D10V_CR3_REGNUM, 104d2201f2fSdrahn SIM_D10V_CR4_REGNUM, 105d2201f2fSdrahn SIM_D10V_CR5_REGNUM, 106d2201f2fSdrahn SIM_D10V_CR6_REGNUM, 107d2201f2fSdrahn SIM_D10V_CR7_REGNUM, 108d2201f2fSdrahn SIM_D10V_CR8_REGNUM, 109d2201f2fSdrahn SIM_D10V_CR9_REGNUM, 110d2201f2fSdrahn SIM_D10V_CR10_REGNUM, 111d2201f2fSdrahn SIM_D10V_CR11_REGNUM, 112d2201f2fSdrahn SIM_D10V_CR12_REGNUM, 113d2201f2fSdrahn SIM_D10V_CR13_REGNUM, 114d2201f2fSdrahn SIM_D10V_CR14_REGNUM, 115d2201f2fSdrahn SIM_D10V_CR15_REGNUM, 116d2201f2fSdrahn SIM_D10V_A0_REGNUM, 117d2201f2fSdrahn SIM_D10V_A1_REGNUM, 118d2201f2fSdrahn SIM_D10V_SPI_REGNUM, 119d2201f2fSdrahn SIM_D10V_SPU_REGNUM, 120d2201f2fSdrahn SIM_D10V_IMAP0_REGNUM, 121d2201f2fSdrahn SIM_D10V_IMAP1_REGNUM, 122d2201f2fSdrahn SIM_D10V_DMAP0_REGNUM, 123d2201f2fSdrahn SIM_D10V_DMAP1_REGNUM, 124d2201f2fSdrahn SIM_D10V_DMAP2_REGNUM, 125d2201f2fSdrahn SIM_D10V_DMAP3_REGNUM, 126d2201f2fSdrahn SIM_D10V_TS2_DMAP_REGNUM 127d2201f2fSdrahn }; 128d2201f2fSdrahn 129d2201f2fSdrahn enum 130d2201f2fSdrahn { 131d2201f2fSdrahn SIM_D10V_NR_R_REGS = 16, 132d2201f2fSdrahn SIM_D10V_NR_A_REGS = 2, 133d2201f2fSdrahn SIM_D10V_NR_IMAP_REGS = 2, 134d2201f2fSdrahn SIM_D10V_NR_DMAP_REGS = 4, 135d2201f2fSdrahn SIM_D10V_NR_CR_REGS = 16 136d2201f2fSdrahn }; 137d2201f2fSdrahn 138d2201f2fSdrahn #ifdef __cplusplus 139d2201f2fSdrahn } 140d2201f2fSdrahn #endif 141d2201f2fSdrahn 142d2201f2fSdrahn #endif 143