Revision 12de9a39 target-ppc/translate_init.c

b/target-ppc/translate_init.c
3095 3095
/* Non-embedded PowerPC                                                      */
3096 3096
/* Base instructions set for all 6xx/7xx/74xx/970 PowerPC                    */
3097 3097
#define POWERPC_INSNS_6xx    (PPC_INSNS_BASE | PPC_FLOAT | PPC_MEM_SYNC |     \
3098
                              PPC_MEM_EIEIO | PPC_SEGMENT | PPC_MEM_TLBIE)
3098
                              PPC_MEM_EIEIO | PPC_MEM_TLBIE)
3099 3099
/* Instructions common to all 6xx/7xx/74xx/970 PowerPC except 601 & 602      */
3100 3100
#define POWERPC_INSNS_WORKS  (POWERPC_INSNS_6xx | PPC_FLOAT_FSQRT |           \
3101 3101
                              PPC_FLOAT_FRES | PPC_FLOAT_FRSQRTE |            \
3102 3102
                              PPC_FLOAT_FSEL | PPC_FLOAT_STFIWX |             \
3103
                              PPC_MEM_TLBSYNC | PPC_CACHE_DCBZ | PPC_MFTB)
3103
                              PPC_MEM_TLBSYNC | PPC_CACHE_DCBZ | PPC_MFTB |   \
3104
                              PPC_SEGMENT)
3104 3105

  
3105 3106
/* POWER : same as 601, without mfmsr, mfsr                                  */
3106 3107
#if defined(TODO)
......
3111 3112

  
3112 3113
/* PowerPC 601                                                               */
3113 3114
#define POWERPC_INSNS_601    (POWERPC_INSNS_6xx | PPC_CACHE_DCBZ |            \
3114
                              PPC_EXTERN | PPC_POWER_BR)
3115
                              PPC_SEGMENT | PPC_EXTERN | PPC_POWER_BR)
3115 3116
#define POWERPC_MSRM_601     (0x000000000000FE70ULL)
3116 3117
//#define POWERPC_MMU_601      (POWERPC_MMU_601)
3117 3118
//#define POWERPC_EXCP_601     (POWERPC_EXCP_601)
......
3164 3165
                              PPC_FLOAT_FRES | PPC_FLOAT_FRSQRTE |            \
3165 3166
                              PPC_FLOAT_FSEL | PPC_FLOAT_STFIWX |             \
3166 3167
                              PPC_6xx_TLB | PPC_MEM_TLBSYNC | PPC_CACHE_DCBZ |\
3167
                              PPC_602_SPEC)
3168
                              PPC_SEGMENT | PPC_602_SPEC)
3168 3169
#define POWERPC_MSRM_602     (0x000000000033FF73ULL)
3169 3170
#define POWERPC_MMU_602      (POWERPC_MMU_SOFT_6xx)
3170 3171
//#define POWERPC_EXCP_602     (POWERPC_EXCP_602)
......
3942 3943

  
3943 3944
#if defined (TARGET_PPC64)
3944 3945
#define POWERPC_INSNS_WORK64  (POWERPC_INSNS_6xx | PPC_FLOAT_FSQRT |          \
3945
                              PPC_FLOAT_FRES | PPC_FLOAT_FRSQRTE |            \
3946
                              PPC_FLOAT_FSEL | PPC_FLOAT_STFIWX |             \
3947
                              PPC_MEM_TLBSYNC | PPC_CACHE_DCBZT | PPC_MFTB)
3946
                               PPC_FLOAT_FRES | PPC_FLOAT_FRSQRTE |           \
3947
                               PPC_FLOAT_FSEL | PPC_FLOAT_STFIWX |            \
3948
                               PPC_MEM_TLBSYNC | PPC_CACHE_DCBZT | PPC_MFTB)
3948 3949
/* PowerPC 970                                                               */
3949 3950
#define POWERPC_INSNS_970    (POWERPC_INSNS_WORK64 | PPC_FLOAT_FSQRT |        \
3950 3951
                              PPC_64B | PPC_ALTIVEC |                         \
3951
                              PPC_64_BRIDGE | PPC_SLBI)
3952
                              PPC_SEGMENT_64B | PPC_SLBI)
3952 3953
#define POWERPC_MSRM_970     (0x900000000204FF36ULL)
3953
#define POWERPC_MMU_970      (POWERPC_MMU_64BRIDGE)
3954
#define POWERPC_MMU_970      (POWERPC_MMU_64B)
3954 3955
//#define POWERPC_EXCP_970     (POWERPC_EXCP_970)
3955 3956
#define POWERPC_INPUT_970    (PPC_FLAGS_INPUT_970)
3956 3957
#define POWERPC_BFDM_970     (bfd_mach_ppc64)
......
3990 3991
    /* Memory management */
3991 3992
    /* XXX: not correct */
3992 3993
    gen_low_BATs(env);
3993
#if 0 // TODO
3994
    env->slb_nr = 32;
3994
    /* XXX : not implemented */
3995
    spr_register(env, SPR_MMUCFG, "MMUCFG",
3996
                 SPR_NOACCESS, SPR_NOACCESS,
3997
                 &spr_read_generic, SPR_NOACCESS,
3998
                 0x00000000); /* TOFIX */
3999
    /* XXX : not implemented */
4000
    spr_register(env, SPR_MMUCSR0, "MMUCSR0",
4001
                 SPR_NOACCESS, SPR_NOACCESS,
4002
                 &spr_read_generic, &spr_write_generic,
4003
                 0x00000000); /* TOFIX */
4004
    spr_register(env, SPR_HIOR, "SPR_HIOR",
4005
                 SPR_NOACCESS, SPR_NOACCESS,
4006
                 &spr_read_generic, &spr_write_generic,
4007
                 0xFFF00000); /* XXX: This is a hack */
4008
#if !defined(CONFIG_USER_ONLY)
4009
    env->excp_prefix = 0xFFF00000;
3995 4010
#endif
4011
    env->slb_nr = 32;
3996 4012
    init_excp_970(env);
3997 4013
    env->dcache_line_size = 128;
3998 4014
    env->icache_line_size = 128;
......
4003 4019
/* PowerPC 970FX (aka G5)                                                    */
4004 4020
#define POWERPC_INSNS_970FX  (POWERPC_INSNS_WORK64 | PPC_FLOAT_FSQRT |        \
4005 4021
                              PPC_64B | PPC_ALTIVEC |                         \
4006
                              PPC_64_BRIDGE | PPC_SLBI)
4022
                              PPC_SEGMENT_64B | PPC_SLBI)
4007 4023
#define POWERPC_MSRM_970FX   (0x800000000204FF36ULL)
4008
#define POWERPC_MMU_970FX    (POWERPC_MMU_64BRIDGE)
4024
#define POWERPC_MMU_970FX    (POWERPC_MMU_64B)
4009 4025
#define POWERPC_EXCP_970FX   (POWERPC_EXCP_970)
4010 4026
#define POWERPC_INPUT_970FX  (PPC_FLAGS_INPUT_970)
4011 4027
#define POWERPC_BFDM_970FX   (bfd_mach_ppc64)
......
4045 4061
    /* Memory management */
4046 4062
    /* XXX: not correct */
4047 4063
    gen_low_BATs(env);
4048
#if 0 // TODO
4049
    env->slb_nr = 32;
4064
    /* XXX : not implemented */
4065
    spr_register(env, SPR_MMUCFG, "MMUCFG",
4066
                 SPR_NOACCESS, SPR_NOACCESS,
4067
                 &spr_read_generic, SPR_NOACCESS,
4068
                 0x00000000); /* TOFIX */
4069
    /* XXX : not implemented */
4070
    spr_register(env, SPR_MMUCSR0, "MMUCSR0",
4071
                 SPR_NOACCESS, SPR_NOACCESS,
4072
                 &spr_read_generic, &spr_write_generic,
4073
                 0x00000000); /* TOFIX */
4074
    spr_register(env, SPR_HIOR, "SPR_HIOR",
4075
                 SPR_NOACCESS, SPR_NOACCESS,
4076
                 &spr_read_generic, &spr_write_generic,
4077
                 0xFFF00000); /* XXX: This is a hack */
4078
#if !defined(CONFIG_USER_ONLY)
4079
    env->excp_prefix = 0xFFF00000;
4050 4080
#endif
4081
    env->slb_nr = 32;
4051 4082
    init_excp_970(env);
4052 4083
    env->dcache_line_size = 128;
4053 4084
    env->icache_line_size = 128;
......
4058 4089
/* PowerPC 970 GX                                                            */
4059 4090
#define POWERPC_INSNS_970GX  (POWERPC_INSNS_WORK64 | PPC_FLOAT_FSQRT |        \
4060 4091
                              PPC_64B | PPC_ALTIVEC |                         \
4061
                              PPC_64_BRIDGE | PPC_SLBI)
4092
                              PPC_SEGMENT_64B | PPC_SLBI)
4062 4093
#define POWERPC_MSRM_970GX   (0x800000000204FF36ULL)
4063
#define POWERPC_MMU_970GX    (POWERPC_MMU_64BRIDGE)
4094
#define POWERPC_MMU_970GX    (POWERPC_MMU_64B)
4064 4095
#define POWERPC_EXCP_970GX   (POWERPC_EXCP_970)
4065 4096
#define POWERPC_INPUT_970GX  (PPC_FLAGS_INPUT_970)
4066 4097
#define POWERPC_BFDM_970GX   (bfd_mach_ppc64)
......
4100 4131
    /* Memory management */
4101 4132
    /* XXX: not correct */
4102 4133
    gen_low_BATs(env);
4103
#if 0 // TODO
4104
    env->slb_nr = 32;
4134
    /* XXX : not implemented */
4135
    spr_register(env, SPR_MMUCFG, "MMUCFG",
4136
                 SPR_NOACCESS, SPR_NOACCESS,
4137
                 &spr_read_generic, SPR_NOACCESS,
4138
                 0x00000000); /* TOFIX */
4139
    /* XXX : not implemented */
4140
    spr_register(env, SPR_MMUCSR0, "MMUCSR0",
4141
                 SPR_NOACCESS, SPR_NOACCESS,
4142
                 &spr_read_generic, &spr_write_generic,
4143
                 0x00000000); /* TOFIX */
4144
    spr_register(env, SPR_HIOR, "SPR_HIOR",
4145
                 SPR_NOACCESS, SPR_NOACCESS,
4146
                 &spr_read_generic, &spr_write_generic,
4147
                 0xFFF00000); /* XXX: This is a hack */
4148
#if !defined(CONFIG_USER_ONLY)
4149
    env->excp_prefix = 0xFFF00000;
4105 4150
#endif
4151
    env->slb_nr = 32;
4106 4152
    init_excp_970(env);
4107 4153
    env->dcache_line_size = 128;
4108 4154
    env->icache_line_size = 128;
......
6010 6056
        case POWERPC_MMU_64B:
6011 6057
            mmu_model = "PowerPC 64";
6012 6058
            break;
6013
        case POWERPC_MMU_64BRIDGE:
6014
            mmu_model = "PowerPC 64 bridge";
6015
            break;
6016 6059
#endif
6017 6060
        default:
6018 6061
            mmu_model = "Unknown or invalid";

Also available in: Unified diff