Commit 6f529b75 authored by Paolo Bonzini's avatar Paolo Bonzini
Browse files

target/i386: move FERR handling to target/i386



Move it out of pc.c since it is strictly tied to TCG.  This is
almost exclusively code movement, the next patch will implement
IGNNE.

Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 038adc2f
Loading
Loading
Loading
Loading
+3 −14
Original line number Diff line number Diff line
@@ -381,23 +381,12 @@ static uint64_t ioport80_read(void *opaque, hwaddr addr, unsigned size)
}

/* MSDOS compatibility mode FPU exception support */
static qemu_irq ferr_irq;

void pc_register_ferr_irq(qemu_irq irq)
{
    ferr_irq = irq;
}

/* XXX: add IGNNE support */
void cpu_set_ferr(CPUX86State *s)
{
    qemu_irq_raise(ferr_irq);
}

static void ioportF0_write(void *opaque, hwaddr addr, uint64_t data,
                           unsigned size)
{
    qemu_irq_lower(ferr_irq);
    if (tcg_enabled()) {
        cpu_clear_ferr();
    }
}

static uint64_t ioportF0_read(void *opaque, hwaddr addr, unsigned size)
+3 −1
Original line number Diff line number Diff line
@@ -213,7 +213,9 @@ static void pc_init1(MachineState *machine,
        ioapic_init_gsi(gsi_state, "i440fx");
    }

    pc_register_ferr_irq(x86ms->gsi[13]);
    if (tcg_enabled()) {
        x86_register_ferr_irq(x86ms->gsi[13]);
    }

    pc_vga_init(isa_bus, pcmc->pci_enabled ? pci_bus : NULL);

+3 −1
Original line number Diff line number Diff line
@@ -261,7 +261,9 @@ static void pc_q35_init(MachineState *machine)
        ioapic_init_gsi(gsi_state, "q35");
    }

    pc_register_ferr_irq(x86ms->gsi[13]);
    if (tcg_enabled()) {
        x86_register_ferr_irq(x86ms->gsi[13]);
    }

    assert(pcms->vmport != ON_OFF_AUTO__MAX);
    if (pcms->vmport == ON_OFF_AUTO_AUTO) {
+0 −1
Original line number Diff line number Diff line
@@ -176,7 +176,6 @@ void vmmouse_set_data(const uint32_t *data);
extern int fd_bootchk;

bool pc_machine_is_smm_enabled(PCMachineState *pcms);
void pc_register_ferr_irq(qemu_irq irq);
void pc_acpi_smi_interrupt(void *opaque, int irq, int level);

void pc_hot_add_cpu(MachineState *ms, const int64_t id, Error **errp);
+2 −1
Original line number Diff line number Diff line
@@ -1761,7 +1761,8 @@ int cpu_x86_support_mca_broadcast(CPUX86State *env);

int cpu_get_pic_interrupt(CPUX86State *s);
/* MSDOS compatibility mode FPU exception support */
void cpu_set_ferr(CPUX86State *s);
void x86_register_ferr_irq(qemu_irq irq);
void cpu_clear_ferr(void);
/* mpx_helper.c */
void cpu_sync_bndcs_hflags(CPUX86State *env);

Loading