diff options
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 |
commit | a3e4c79be61d389d8e7db87b94c10b25414c6711 (patch) | |
tree | bfdcae739fa95afd5eeced7f240c4170d9210117 /src/devices/cpu/i386/i386.h | |
parent | 145bbb789cbfc2331f55b2fb3a39b6e1849546dd (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.h | 7 |
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); |