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