Revision 5578ceab target-sparc/cpu.h
b/target-sparc/cpu.h | ||
---|---|---|
187 | 187 |
} trap_state; |
188 | 188 |
#endif |
189 | 189 |
|
190 |
typedef struct sparc_def_t { |
|
191 |
const char *name; |
|
192 |
target_ulong iu_version; |
|
193 |
uint32_t fpu_version; |
|
194 |
uint32_t mmu_version; |
|
195 |
uint32_t mmu_bm; |
|
196 |
uint32_t mmu_ctpr_mask; |
|
197 |
uint32_t mmu_cxr_mask; |
|
198 |
uint32_t mmu_sfsr_mask; |
|
199 |
uint32_t mmu_trcr_mask; |
|
200 |
uint32_t features; |
|
201 |
uint32_t nwindows; |
|
202 |
uint32_t maxtl; |
|
203 |
} sparc_def_t; |
|
204 |
|
|
205 |
#define CPU_FEATURE_FLOAT (1 << 0) |
|
206 |
#define CPU_FEATURE_FLOAT128 (1 << 1) |
|
207 |
#define CPU_FEATURE_SWAP (1 << 2) |
|
208 |
#define CPU_FEATURE_MUL (1 << 3) |
|
209 |
#define CPU_FEATURE_DIV (1 << 4) |
|
210 |
#define CPU_FEATURE_FLUSH (1 << 5) |
|
211 |
#define CPU_FEATURE_FSQRT (1 << 6) |
|
212 |
#define CPU_FEATURE_FMUL (1 << 7) |
|
213 |
#define CPU_FEATURE_VIS1 (1 << 8) |
|
214 |
#define CPU_FEATURE_VIS2 (1 << 9) |
|
215 |
#define CPU_FEATURE_FSMULD (1 << 10) |
|
216 |
#define CPU_FEATURE_HYPV (1 << 11) |
|
217 |
#define CPU_FEATURE_CMT (1 << 12) |
|
218 |
#define CPU_FEATURE_GL (1 << 13) |
|
219 |
#ifndef TARGET_SPARC64 |
|
220 |
#define CPU_DEFAULT_FEATURES (CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP | \ |
|
221 |
CPU_FEATURE_MUL | CPU_FEATURE_DIV | \ |
|
222 |
CPU_FEATURE_FLUSH | CPU_FEATURE_FSQRT | \ |
|
223 |
CPU_FEATURE_FMUL | CPU_FEATURE_FSMULD) |
|
224 |
#else |
|
225 |
#define CPU_DEFAULT_FEATURES (CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP | \ |
|
226 |
CPU_FEATURE_MUL | CPU_FEATURE_DIV | \ |
|
227 |
CPU_FEATURE_FLUSH | CPU_FEATURE_FSQRT | \ |
|
228 |
CPU_FEATURE_FMUL | CPU_FEATURE_VIS1 | \ |
|
229 |
CPU_FEATURE_VIS2 | CPU_FEATURE_FSMULD) |
|
230 |
enum { |
|
231 |
mmu_us_12, // Ultrasparc < III (64 entry TLB) |
|
232 |
mmu_us_3, // Ultrasparc III (512 entry TLB) |
|
233 |
mmu_us_4, // Ultrasparc IV (several TLBs, 32 and 256MB pages) |
|
234 |
mmu_sun4v, // T1, T2 |
|
235 |
}; |
|
236 |
#endif |
|
237 |
|
|
190 | 238 |
typedef struct CPUSPARCState { |
191 | 239 |
target_ulong gregs[8]; /* general registers */ |
192 | 240 |
target_ulong *regwptr; /* pointer to current register window */ |
... | ... | |
217 | 265 |
int psref; /* enable fpu */ |
218 | 266 |
target_ulong version; |
219 | 267 |
int interrupt_index; |
220 |
uint32_t mmu_bm; |
|
221 |
uint32_t mmu_ctpr_mask; |
|
222 |
uint32_t mmu_cxr_mask; |
|
223 |
uint32_t mmu_sfsr_mask; |
|
224 |
uint32_t mmu_trcr_mask; |
|
225 | 268 |
uint32_t nwindows; |
226 | 269 |
/* NOTE: we allow 8 more registers to handle wrapping */ |
227 | 270 |
target_ulong regbase[MAX_NWINDOWS * 16 + 8]; |
... | ... | |
275 | 318 |
uint64_t hpstate, htstate[MAXTL_MAX], hintp, htba, hver, hstick_cmpr, ssr; |
276 | 319 |
void *hstick; // UA 2005 |
277 | 320 |
#endif |
278 |
uint32_t features;
|
|
321 |
sparc_def_t *def;
|
|
279 | 322 |
} CPUSPARCState; |
280 | 323 |
|
281 |
#define CPU_FEATURE_FLOAT (1 << 0) |
|
282 |
#define CPU_FEATURE_FLOAT128 (1 << 1) |
|
283 |
#define CPU_FEATURE_SWAP (1 << 2) |
|
284 |
#define CPU_FEATURE_MUL (1 << 3) |
|
285 |
#define CPU_FEATURE_DIV (1 << 4) |
|
286 |
#define CPU_FEATURE_FLUSH (1 << 5) |
|
287 |
#define CPU_FEATURE_FSQRT (1 << 6) |
|
288 |
#define CPU_FEATURE_FMUL (1 << 7) |
|
289 |
#define CPU_FEATURE_VIS1 (1 << 8) |
|
290 |
#define CPU_FEATURE_VIS2 (1 << 9) |
|
291 |
#define CPU_FEATURE_FSMULD (1 << 10) |
|
292 |
#define CPU_FEATURE_HYPV (1 << 11) |
|
293 |
#define CPU_FEATURE_CMT (1 << 12) |
|
294 |
#define CPU_FEATURE_GL (1 << 13) |
|
295 |
#ifndef TARGET_SPARC64 |
|
296 |
#define CPU_DEFAULT_FEATURES (CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP | \ |
|
297 |
CPU_FEATURE_MUL | CPU_FEATURE_DIV | \ |
|
298 |
CPU_FEATURE_FLUSH | CPU_FEATURE_FSQRT | \ |
|
299 |
CPU_FEATURE_FMUL | CPU_FEATURE_FSMULD) |
|
300 |
#else |
|
301 |
#define CPU_DEFAULT_FEATURES (CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP | \ |
|
302 |
CPU_FEATURE_MUL | CPU_FEATURE_DIV | \ |
|
303 |
CPU_FEATURE_FLUSH | CPU_FEATURE_FSQRT | \ |
|
304 |
CPU_FEATURE_FMUL | CPU_FEATURE_VIS1 | \ |
|
305 |
CPU_FEATURE_VIS2 | CPU_FEATURE_FSMULD) |
|
306 |
enum { |
|
307 |
mmu_us_12, // Ultrasparc < III (64 entry TLB) |
|
308 |
mmu_us_3, // Ultrasparc III (512 entry TLB) |
|
309 |
mmu_us_4, // Ultrasparc IV (several TLBs, 32 and 256MB pages) |
|
310 |
mmu_sun4v, // T1, T2 |
|
311 |
}; |
|
312 |
#endif |
|
313 |
|
|
314 | 324 |
#if defined(TARGET_SPARC64) |
315 | 325 |
#define GET_FSR32(env) (env->fsr & 0xcfc1ffff) |
316 | 326 |
#define PUT_FSR32(env, val) do { uint32_t _tmp = val; \ |
Also available in: Unified diff