diff --git a/src/acpi.c b/src/acpi.c index 1617768a1..112f97476 100644 --- a/src/acpi.c +++ b/src/acpi.c @@ -95,8 +95,20 @@ static void acpi_timer_overflow(void *priv) { acpi_t *dev = (acpi_t *) priv; + int sci_en = dev->regs.pmcntrl & 1; + dev->regs.pmsts |= TMROF_STS; - acpi_update_irq(dev); + + if(dev->regs.pmen & 1) /* Timer Overflow Interrupt Enable */ + { + acpi_log("ACPI: Overflow detected. Provoking an %s\n", sci_en ? "SCI" : "SMI"); + + if(sci_en) /* Trigger an SCI or SMI depending on the status of the SCI_EN register */ + acpi_update_irq(dev); + else + acpi_raise_smi(dev, 1); + } + } static void @@ -1653,6 +1665,7 @@ acpi_apm_out(uint16_t port, uint8_t val, void *p) acpi_raise_smi(dev, dev->apm->do_smi); } else dev->apm->stat = val; + } } diff --git a/src/include/86box/chipset.h b/src/include/86box/chipset.h index 24dbcc30a..2bcb5318d 100644 --- a/src/include/86box/chipset.h +++ b/src/include/86box/chipset.h @@ -14,7 +14,6 @@ * * Copyright 2019,2020 Miran Grca. */ - #ifndef EMU_CHIPSET_H # define EMU_CHIPSET_H diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 9f02a9aa2..3544c517c 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -11727,24 +11727,26 @@ const machine_t machines[] = { .pad2 = 0, .cpu = { .package = CPU_PKG_SOCKET370, - .block= CPU_BLOCK(CPU_CYRIX3S), + .block = CPU_BLOCK(CPU_CYRIX3S), .min_bus = 66666667, .max_bus = 133333333, .min_voltage = 1300, .max_voltage = 3500, .min_multi = 1.5, - .max_multi = 8.0, + .max_multi = 8.0 }, .bus_flags = MACHINE_PS2_NOISA, .flags = MACHINE_IDE_DUAL, .ram = { .min = 32768, .max = 524288, - .step = 32768, + .step = 32768 }, .nvrmask = 255, .device = NULL, - .vid_device = NULL + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL }, { .name = "[Intel i815EP] Biostar M6TSS", @@ -11764,41 +11766,7 @@ const machine_t machines[] = { .min_voltage = 1300, .max_voltage = 3500, .min_multi = 1.5, - .max_multi = 8.0, - }, - .bus_flags = MACHINE_PS2_AGP, - .flags = MACHINE_IDE_DUAL, - .ram = { - .min = 32768, - .max = 524288, - .step = 32768, - }, - .nvrmask = 255, - .kbc = KBC_UNKNOWN, - .kbc_p1 = 0, - .gpio = 0, - .device = NULL, - .vid_device = NULL - }, - { - .name = "[Intel i815EP] Tyan Tomcat i815T", - .internal_name = "s2080", - .type = MACHINE_TYPE_ICH2, - .chipset = MACHINE_CHIPSET_INTEL_I815EP, - .init = machine_at_s2080_init, - .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, - .cpu = { - .package = CPU_PKG_SOCKET370, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 133333333, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0, + .max_multi = 8.0 }, .bus_flags = MACHINE_PS2_AGP, .flags = MACHINE_IDE_DUAL, @@ -11812,7 +11780,45 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, - .vid_device = NULL + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[Intel i815EP] Tyan Tomcat i815T", + .internal_name = "s2080", + .type = MACHINE_TYPE_ICH2, + .chipset = MACHINE_CHIPSET_INTEL_I815EP, + .init = machine_at_s2080_init, + .pad = 0, + .pad0 = 0, + .pad1 = MACHINE_AVAILABLE, + .pad2 = 0, + .cpu = { + .package = CPU_PKG_SOCKET370, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 133333333, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP, + .flags = MACHINE_IDE_DUAL, + .ram = { + .min = 32768, + .max = 524288, + .step = 32768 + }, + .nvrmask = 255, + .kbc = KBC_UNKNOWN, + .kbc_p1 = 0, + .gpio = 0, + .device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL }, {