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