Revision 6f27aba6 target-sparc/cpu.h
b/target-sparc/cpu.h | ||
---|---|---|
98 | 98 |
#define PS_AG (1<<0) |
99 | 99 |
|
100 | 100 |
#define FPRS_FEF (1<<2) |
101 |
|
|
102 |
#define HS_PRIV (1<<2) |
|
101 | 103 |
#endif |
102 | 104 |
|
103 | 105 |
/* Fcc */ |
... | ... | |
166 | 168 |
|
167 | 169 |
typedef struct sparc_def_t sparc_def_t; |
168 | 170 |
|
171 |
#if !defined(TARGET_SPARC64) |
|
169 | 172 |
#define NB_MMU_MODES 2 |
173 |
#else |
|
174 |
#define NB_MMU_MODES 3 |
|
175 |
#endif |
|
170 | 176 |
|
171 | 177 |
typedef struct CPUSPARCState { |
172 | 178 |
target_ulong gregs[8]; /* general registers */ |
... | ... | |
323 | 329 |
#define cpu_list sparc_cpu_list |
324 | 330 |
|
325 | 331 |
/* MMU modes definitions */ |
326 |
#define MMU_MODE0_SUFFIX _kernel |
|
327 |
#define MMU_MODE1_SUFFIX _user |
|
328 |
#define MMU_USER_IDX 1 |
|
332 |
#define MMU_MODE0_SUFFIX _user |
|
333 |
#define MMU_MODE1_SUFFIX _kernel |
|
334 |
#ifdef TARGET_SPARC64 |
|
335 |
#define MMU_MODE2_SUFFIX _hypv |
|
336 |
#endif |
|
337 |
#define MMU_USER_IDX 0 |
|
329 | 338 |
static inline int cpu_mmu_index (CPUState *env) |
330 | 339 |
{ |
331 |
return env->psrs == 0 ? 1 : 0; |
|
340 |
#if defined(CONFIG_USER_ONLY) |
|
341 |
return 0; |
|
342 |
#elif !defined(TARGET_SPARC64) |
|
343 |
return env->psrs; |
|
344 |
#else |
|
345 |
if (!env->psrs) |
|
346 |
return 0; |
|
347 |
else if ((env->hpstate & HS_PRIV) == 0) |
|
348 |
return 1; |
|
349 |
else |
|
350 |
return 2; |
|
351 |
#endif |
|
352 |
} |
|
353 |
|
|
354 |
static inline int cpu_fpu_enabled(CPUState *env) |
|
355 |
{ |
|
356 |
#if defined(CONFIG_USER_ONLY) |
|
357 |
return 1; |
|
358 |
#elif !defined(TARGET_SPARC64) |
|
359 |
return env->psref; |
|
360 |
#else |
|
361 |
return ((env->pstate & PS_PEF) != 0) && ((env->fprs & FPRS_FEF) != 0); |
|
362 |
#endif |
|
332 | 363 |
} |
333 | 364 |
|
334 | 365 |
#include "cpu-all.h" |
Also available in: Unified diff