summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/i386/i386.h
diff options
context:
space:
mode:
author cracyc <cracyc@users.noreply.github.com>2017-12-16 14:24:24 -0600
committer cracyc <cracyc@users.noreply.github.com>2017-12-16 14:24:24 -0600
commita3e4c79be61d389d8e7db87b94c10b25414c6711 (patch)
treebfdcae739fa95afd5eeced7f240c4170d9210117 /src/devices/cpu/i386/i386.h
parent145bbb789cbfc2331f55b2fb3a39b6e1849546dd (diff)
i386: x87 bug fixes and FERR support [Andrey Merkulov]
i8087: separate 8087 device [Carl]
Diffstat (limited to 'src/devices/cpu/i386/i386.h')
-rw-r--r--src/devices/cpu/i386/i386.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/devices/cpu/i386/i386.h b/src/devices/cpu/i386/i386.h
index 93c5df1c122..9df57105902 100644
--- a/src/devices/cpu/i386/i386.h
+++ b/src/devices/cpu/i386/i386.h
@@ -27,6 +27,9 @@
#define MCFG_I386_SMIACT(_devcb) \
devcb = &i386_device::set_smiact(*device, DEVCB_##_devcb);
+
+#define MCFG_I486_FERR_HANDLER(_devcb) \
+ devcb = &i386_device::set_ferr(*device, DEVCB_##_devcb);
#define X86_NUM_CPUS 4
@@ -38,6 +41,7 @@ public:
// static configuration helpers
template <class Object> static devcb_base &set_smiact(device_t &device, Object &&cb) { return downcast<i386_device &>(device).m_smiact.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ferr(device_t &device, Object &&cb) { return downcast<i386_device &>(device).m_ferr_handler.set_callback(std::forward<Object>(cb)); }
uint64_t debug_segbase(symbol_table &table, int params, const uint64_t *param);
uint64_t debug_seglimit(symbol_table &table, int params, const uint64_t *param);
@@ -283,6 +287,7 @@ protected:
bool m_nmi_latched;
uint32_t m_smbase;
devcb_write_line m_smiact;
+ devcb_write_line m_ferr_handler;
bool m_lock;
// bytes in current opcode, debug only
@@ -1386,6 +1391,8 @@ protected:
void x87_fincstp(uint8_t modrm);
void x87_fclex(uint8_t modrm);
void x87_ffree(uint8_t modrm);
+ void x87_fdisi(uint8_t modrm);
+ void x87_feni(uint8_t modrm);
void x87_finit(uint8_t modrm);
void x87_fldcw(uint8_t modrm);
void x87_fstcw(uint8_t modrm);