2 // Copyright (C) 2000 Red Hat
10 #include <sidcomputil.h>
11 #include <sidattrutil.h>
12 #include <sidpinutil.h>
13 #include <sidbusutil.h>
14 #include <sidcpuutil.h>
15 #include <sidwatchutil.h>
16 #include <sidmiscutil.h>
17 #include <sidpinattrutil.h>
19 #include "cgen-types.h"
21 #include "cgen-engine.h"
32 using namespace sidutil;
37 // Mix-in class for cgen cpus.
38 // For simplicity, assume they are all bi-endian.
39 class cgen_bi_endian_cpu: public basic_bi_endian_cpu
42 // Types of supported engines. Not all cpus support all engines.
44 ENGINE_UNKNOWN, ENGINE_SIMPLE, ENGINE_SCACHE, ENGINE_PBB
46 engine_type engine_type;
47 virtual string get_engine_type ();
48 virtual component::status set_engine_type (const string& s);
51 // true -> print execution debugging messages
52 // [what it is is at the programmer's whim]
55 // Print messages here.
56 // XXX: Should be a pointer or somesuch, so it can be changed during a run.
57 ostream& trace_stream;
58 // Cover fns to start/end insn tracing.
59 void begin_trace (PCADDR pc, const char* insn_name);
64 ~cgen_bi_endian_cpu();
67 // rtl memory access methods
69 GETMEMQI(PCADDR pc, ADDR addr) const
71 return this->read_data_memory_1 (pc, addr);
74 SETMEMQI(PCADDR pc, ADDR addr, QI value) const
76 return this->write_data_memory_1 (pc, addr, value);
79 GETMEMHI(PCADDR pc, ADDR addr) const
81 return this->read_data_memory_2 (pc, addr);
84 SETMEMHI(PCADDR pc, ADDR addr, HI value) const
86 return this->write_data_memory_2 (pc, addr, value);
89 GETMEMSI(PCADDR pc, ADDR addr) const
91 return this->read_data_memory_4 (pc, addr);
94 SETMEMSI(PCADDR pc, ADDR addr, SI value) const
96 return this->write_data_memory_4 (pc, addr, value);
99 GETMEMUSI(PCADDR pc, ADDR addr) const
101 return this->read_data_memory_4 (pc, addr);
104 SETMEMUSI(PCADDR pc, ADDR addr, USI value) const
106 return this->write_data_memory_4 (pc, addr, value);
109 GETMEMDI(PCADDR pc, ADDR addr) const
111 return this->read_data_memory_8 (pc, addr);
114 SETMEMDI(PCADDR pc, ADDR addr, DI value) const
116 return this->write_data_memory_8 (pc, addr, value);
119 GETIMEMQI(PCADDR pc, IADDR addr) const
121 return this->read_insn_memory_1 (pc, addr);
124 SETIMEMQI(PCADDR pc, ADDR addr, QI value) const
126 return this->write_insn_memory_1 (pc, addr, value);
129 GETIMEMUQI(PCADDR pc, IADDR addr) const
131 return this->read_insn_memory_1 (pc, addr);
134 SETIMEMUQI(PCADDR pc, ADDR addr, UQI value) const
136 return this->write_insn_memory_1 (pc, addr, value);
139 GETIMEMHI(PCADDR pc, IADDR addr) const
141 return this->read_insn_memory_2 (pc, addr);
144 SETIMEMHI(PCADDR pc, ADDR addr, HI value) const
146 return this->write_insn_memory_2 (pc, addr, value);
149 GETIMEMUHI(PCADDR pc, IADDR addr) const
151 return this->read_insn_memory_2 (pc, addr);
154 SETIMEMUHI(PCADDR pc, ADDR addr, UHI value) const
156 return this->write_insn_memory_2 (pc, addr, value);
159 GETIMEMSI(PCADDR pc, IADDR addr) const
161 return this->read_insn_memory_4 (pc, addr);
164 SETIMEMSI(PCADDR pc, ADDR addr, SI value) const
166 return this->write_insn_memory_4 (pc, addr, value);
169 GETIMEMUSI(PCADDR pc, IADDR addr) const
171 return this->read_insn_memory_4 (pc, addr);
174 SETIMEMUSI(PCADDR pc, ADDR addr, USI value) const
176 return this->write_insn_memory_4 (pc, addr, value);
179 GETIMEMDI(PCADDR pc, IADDR addr) const
181 return this->read_insn_memory_8 (pc, addr);
184 SETIMEMDI(PCADDR pc, ADDR addr, DI value) const
186 return this->write_insn_memory_8 (pc, addr, value);
189 GETIMEMUDI(PCADDR pc, IADDR addr) const
191 return this->read_insn_memory_8 (pc, addr);
194 SETIMEMUDI(PCADDR pc, ADDR addr, UDI value) const
196 return this->write_insn_memory_8 (pc, addr, value);
201 // Virtual insn support.
203 // Canonical ids of virtual insns.
204 enum virtual_insn_type {
205 VIRTUAL_INSN_INVALID,
208 VIRTUAL_INSN_CHAIN, VIRTUAL_INSN_CTI_CHAIN,
209 VIRTUAL_INSN_BEFORE, VIRTUAL_INSN_AFTER,
214 #endif /* CGEN_CPU_H */