Commit e57448f11cb29c9b36acd117349070fe290465fa
1 parent
d63001d1
More cache tuning fixes:
* fix the tunable cache line size probe for PowerPC 970. * initialize HID5 so cache line is 32 bytes long when running in user-mode only git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3322 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
23 additions
and
3 deletions
target-ppc/op_helper_mem.h
... | ... | @@ -324,7 +324,7 @@ void glue(do_dcbz_64, MEMSUFFIX) (void) |
324 | 324 | int dcache_line_size = env->dcache_line_size; |
325 | 325 | |
326 | 326 | /* XXX: should be 970 specific (?) */ |
327 | - if (((env->spr[SPR_970_HID5] >> 7) & 0x3) == 1) | |
327 | + if (((env->spr[SPR_970_HID5] >> 6) & 0x3) == 0x2) | |
328 | 328 | dcache_line_size = 32; |
329 | 329 | glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x00), 0); |
330 | 330 | glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x04), 0); | ... | ... |
target-ppc/translate_init.c
... | ... | @@ -4063,6 +4063,16 @@ static void init_proc_970 (CPUPPCState *env) |
4063 | 4063 | SPR_NOACCESS, SPR_NOACCESS, |
4064 | 4064 | &spr_read_generic, &spr_write_generic, |
4065 | 4065 | 0x00000000); |
4066 | + /* XXX : not implemented */ | |
4067 | + spr_register(env, SPR_970_HID5, "HID5", | |
4068 | + SPR_NOACCESS, SPR_NOACCESS, | |
4069 | + &spr_read_generic, &spr_write_generic, | |
4070 | +#if defined(CONFIG_USER_ONLY) | |
4071 | + 0x00000080 | |
4072 | +#else | |
4073 | + 0x00000000 | |
4074 | +#endif | |
4075 | + ); | |
4066 | 4076 | /* Memory management */ |
4067 | 4077 | /* XXX: not correct */ |
4068 | 4078 | gen_low_BATs(env); |
... | ... | @@ -4116,7 +4126,12 @@ static void init_proc_970FX (CPUPPCState *env) |
4116 | 4126 | spr_register(env, SPR_970_HID5, "HID5", |
4117 | 4127 | SPR_NOACCESS, SPR_NOACCESS, |
4118 | 4128 | &spr_read_generic, &spr_write_generic, |
4119 | - 0x00000000); | |
4129 | +#if defined(CONFIG_USER_ONLY) | |
4130 | + 0x00000080 | |
4131 | +#else | |
4132 | + 0x00000000 | |
4133 | +#endif | |
4134 | + ); | |
4120 | 4135 | /* Memory management */ |
4121 | 4136 | /* XXX: not correct */ |
4122 | 4137 | gen_low_BATs(env); |
... | ... | @@ -4170,7 +4185,12 @@ static void init_proc_970GX (CPUPPCState *env) |
4170 | 4185 | spr_register(env, SPR_970_HID5, "HID5", |
4171 | 4186 | SPR_NOACCESS, SPR_NOACCESS, |
4172 | 4187 | &spr_read_generic, &spr_write_generic, |
4173 | - 0x00000000); | |
4188 | +#if defined(CONFIG_USER_ONLY) | |
4189 | + 0x00000080 | |
4190 | +#else | |
4191 | + 0x00000000 | |
4192 | +#endif | |
4193 | + ); | |
4174 | 4194 | /* Memory management */ |
4175 | 4195 | /* XXX: not correct */ |
4176 | 4196 | gen_low_BATs(env); | ... | ... |