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