xref: /openbsd-src/gnu/usr.bin/binutils/include/gdb/sim-d10v.h (revision b725ae7711052a2233e31a66fefb8a752c388d7a)
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