diff --git a/src/chipset/intel_4x0.c b/src/chipset/intel_4x0.c
index c156cf8e6..cf2901146 100644
--- a/src/chipset/intel_4x0.c
+++ b/src/chipset/intel_4x0.c
@@ -8,7 +8,7 @@
*
* Implementation of the Intel PCISet chips from 420TX to 440FX.
*
- * Version: @(#)intel_4x0.c 1.0.1 2019/10/19
+ * Version: @(#)intel_4x0.c 1.0.2 2019/10/21
*
* Authors: Sarah Walker,
* Miran Grca,
@@ -21,6 +21,7 @@
#include
#include
#include "../86box.h"
+#include "../cpu/cpu.h"
#include "../mem.h"
#include "../io.h"
#include "../rom.h"
@@ -118,6 +119,17 @@ i4x0_write(int func, int addr, uint8_t val, void *priv)
}
break;
+ case 0x52: /*Cache Control Register*/
+#if defined(DEV_BRANCH) && defined(USE_I686)
+ if (dev->type < INTEL_440FX) {
+#endif
+ cpu_cache_ext_enabled = (val & 0x01);
+ cpu_update_waitstates();
+#if defined(DEV_BRANCH) && defined(USE_I686)
+ }
+#endif
+ break;
+
case 0x59: /*PAM0*/
if ((dev->regs[0x59] ^ val) & 0xf0) {
i4x0_map(0xf0000, 0x10000, val >> 4);
@@ -305,6 +317,13 @@ static void
if (i4x0->type >= INTEL_430FX)
i4x0->regs[0x72] = 0x02;
+#if defined(DEV_BRANCH) && defined(USE_I686)
+ if (i4x0->type == INTEL_440FX) {
+ cpu_cache_ext_enabled = 1;
+ cpu_update_waitstates();
+ }
+#endif
+
pci_add_card(0, i4x0_read, i4x0_write, i4x0);
return i4x0;
diff --git a/src/chipset/sis_85c471.c b/src/chipset/sis_85c471.c
index 077a2d1e6..934e84c55 100644
--- a/src/chipset/sis_85c471.c
+++ b/src/chipset/sis_85c471.c
@@ -11,13 +11,11 @@
* SiS sis85c471 Super I/O Chip
* Used by DTK PKM-0038S E-2
*
- * Version: @(#)sis_85c471.c 1.0.1 2019/10/19
+ * Version: @(#)sis_85c471.c 1.0.2 2019/10/21
*
* Authors: Miran Grca,
- * Sarah Walker,
*
* Copyright 2019 Miran Grca.
- * Copyright 2008-2019 Sarah Walker.
*/
#include
#include
@@ -25,6 +23,7 @@
#include
#include
#include "../86box.h"
+#include "../cpu/cpu.h"
#include "../mem.h"
#include "../io.h"
#include "../lpt.h"
@@ -95,6 +94,11 @@ sis_85c471_write(uint16_t port, uint8_t val, void *priv)
}
switch(dev->cur_reg) {
+ case 0x51:
+ cpu_cache_ext_enabled = ((val & 0x84) == 0x84);
+ cpu_update_waitstates();
+ break;
+
case 0x52:
sis_85c471_recalcmapping(dev);
break;
diff --git a/src/chipset/sis_85c496.c b/src/chipset/sis_85c496.c
index 07fc4e571..cddb74b9d 100644
--- a/src/chipset/sis_85c496.c
+++ b/src/chipset/sis_85c496.c
@@ -8,11 +8,12 @@
*
* Implementation of the SiS 85c496/85c497 chip.
*
- * Version: @(#)sis_85c496.c 1.0.1 2019/10/19
+ * Version: @(#)sis_85c496.c 1.0.2 2019/10/21
*
* Authors: Sarah Walker,
* Miran Grca,
*
+ * Copyright 2008-2019 Sarah Walker.
* Copyright 2019 Miran Grca.
*/
#include
@@ -21,6 +22,7 @@
#include
#include
#include "../86box.h"
+#include "../cpu/cpu.h"
#include "../mem.h"
#include "../io.h"
#include "../rom.h"
@@ -121,6 +123,11 @@ sis_85c496_write(int func, int addr, uint8_t val, void *priv)
valxor = old ^ val;
switch (addr) {
+ case 0x42: /*Cache configure*/
+ cpu_cache_ext_enabled = (val & 0x01);
+ cpu_update_waitstates();
+ break;
+
case 0x44: /*Shadow configure*/
if (valxor & 0xff)
sis_85c496_recalcmapping(dev);