Revision 0402f767 target-m68k/helper.c

b/target-m68k/helper.c
20 20
 */
21 21

  
22 22
#include <stdio.h>
23
#include <string.h>
23 24

  
24 25
#include "config.h"
25 26
#include "cpu.h"
26 27
#include "exec-all.h"
27 28

  
29
enum m68k_cpuid {
30
    M68K_CPUID_M5206,
31
    M68K_CPUID_CFV4E,
32
    M68K_CPUID_ANY,
33
};
34

  
35
struct m68k_def_t {
36
    const char * name;
37
    enum m68k_cpuid id;
38
};
39

  
40
static m68k_def_t m68k_cpu_defs[] = {
41
    {"m5206", M68K_CPUID_M5206}, 
42
    {"cfv4e", M68K_CPUID_CFV4E},
43
    {"any", M68K_CPUID_ANY},
44
    {NULL, 0}, 
45
};
46

  
47
static void m68k_set_feature(CPUM68KState *env, int feature)
48
{
49
    env->features |= (1u << feature);
50
}
51

  
52
int cpu_m68k_set_model(CPUM68KState *env, const char * name)
53
{
54
    m68k_def_t *def;
55

  
56
    for (def = m68k_cpu_defs; def->name; def++) {
57
        if (strcmp(def->name, name) == 0)
58
            break;
59
    }
60
    if (!def->name)
61
        return 1;
62

  
63
    switch (def->id) {
64
    case M68K_CPUID_M5206:
65
        m68k_set_feature(env, M68K_FEATURE_CF_ISA_A);
66
        break;
67
    case M68K_CPUID_CFV4E:
68
        m68k_set_feature(env, M68K_FEATURE_CF_ISA_A);
69
        m68k_set_feature(env, M68K_FEATURE_CF_ISA_B);
70
        m68k_set_feature(env, M68K_FEATURE_CF_ISA_C);
71
        m68k_set_feature(env, M68K_FEATURE_CF_FPU);
72
        m68k_set_feature(env, M68K_FEATURE_CF_MAC);
73
        m68k_set_feature(env, M68K_FEATURE_CF_EMAC);
74
        break;
75
    case M68K_CPUID_ANY:
76
        m68k_set_feature(env, M68K_FEATURE_CF_ISA_A);
77
        m68k_set_feature(env, M68K_FEATURE_CF_ISA_B);
78
        m68k_set_feature(env, M68K_FEATURE_CF_ISA_C);
79
        m68k_set_feature(env, M68K_FEATURE_CF_FPU);
80
        m68k_set_feature(env, M68K_FEATURE_CF_MAC);
81
        m68k_set_feature(env, M68K_FEATURE_CF_EMAC);
82
        m68k_set_feature(env, M68K_FEATURE_EXT_FULL);
83
        break;
84
    }
85

  
86
    register_m68k_insns(env);
87

  
88
    return 0;
89
}
90

  
28 91
void cpu_m68k_flush_flags(CPUM68KState *env, int cc_op)
29 92
{
30 93
    int flags;

Also available in: Unified diff