mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 09:13:55 -06:00
target/microblaze: Move setting of float rounding mode to reset
Although the floating point rounding mode for Microblaze is always nearest-even, we cannot set it just once in the CPU initfn. This is because env->fp_status is in the part of the CPU state struct that is zeroed on reset. Move the call to set_float_rounding_mode() into the reset fn. (This had no guest-visible effects because it happens that the float_round_nearest_even enum value is 0, so when the struct was zeroed it didn't corrupt the setting.) Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20241025141254.2141506-18-peter.maydell@linaro.org
This commit is contained in:
parent
8403a5015c
commit
c18a13edce
1 changed files with 2 additions and 3 deletions
|
@ -201,6 +201,8 @@ static void mb_cpu_reset_hold(Object *obj, ResetType type)
|
||||||
|
|
||||||
env->pc = cpu->cfg.base_vectors;
|
env->pc = cpu->cfg.base_vectors;
|
||||||
|
|
||||||
|
set_float_rounding_mode(float_round_nearest_even, &env->fp_status);
|
||||||
|
|
||||||
#if defined(CONFIG_USER_ONLY)
|
#if defined(CONFIG_USER_ONLY)
|
||||||
/* start in user mode with interrupts enabled. */
|
/* start in user mode with interrupts enabled. */
|
||||||
mb_cpu_write_msr(env, MSR_EE | MSR_IE | MSR_VM | MSR_UM);
|
mb_cpu_write_msr(env, MSR_EE | MSR_IE | MSR_VM | MSR_UM);
|
||||||
|
@ -311,15 +313,12 @@ static void mb_cpu_realizefn(DeviceState *dev, Error **errp)
|
||||||
static void mb_cpu_initfn(Object *obj)
|
static void mb_cpu_initfn(Object *obj)
|
||||||
{
|
{
|
||||||
MicroBlazeCPU *cpu = MICROBLAZE_CPU(obj);
|
MicroBlazeCPU *cpu = MICROBLAZE_CPU(obj);
|
||||||
CPUMBState *env = &cpu->env;
|
|
||||||
|
|
||||||
gdb_register_coprocessor(CPU(cpu), mb_cpu_gdb_read_stack_protect,
|
gdb_register_coprocessor(CPU(cpu), mb_cpu_gdb_read_stack_protect,
|
||||||
mb_cpu_gdb_write_stack_protect,
|
mb_cpu_gdb_write_stack_protect,
|
||||||
gdb_find_static_feature("microblaze-stack-protect.xml"),
|
gdb_find_static_feature("microblaze-stack-protect.xml"),
|
||||||
0);
|
0);
|
||||||
|
|
||||||
set_float_rounding_mode(float_round_nearest_even, &env->fp_status);
|
|
||||||
|
|
||||||
#ifndef CONFIG_USER_ONLY
|
#ifndef CONFIG_USER_ONLY
|
||||||
/* Inbound IRQ and FIR lines */
|
/* Inbound IRQ and FIR lines */
|
||||||
qdev_init_gpio_in(DEVICE(cpu), microblaze_cpu_set_irq, 2);
|
qdev_init_gpio_in(DEVICE(cpu), microblaze_cpu_set_irq, 2);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue