ns32081: avoid link failure due to inline virtual functions

* also use correct name for /SPC output
This commit is contained in:
Patrick Mackinlay 2025-01-24 08:35:57 +07:00
parent 58b826f9ea
commit 3706f0602c
3 changed files with 61 additions and 17 deletions

View File

@ -35,11 +35,10 @@ namespace ns32000
class ns32000_slave_interface : public device_interface
{
public:
auto out_scb() { return m_out_scb.bind(); }
auto out_spc() { return m_out_spc.bind(); }
ns32000_slave_interface(machine_config const &mconfig, device_t &device)
: device_interface(device, "ns32000_slave")
, m_out_scb(*this)
: ns32000_slave_interface(mconfig, device, "ns32000_slave")
{
}
@ -68,11 +67,11 @@ public:
protected:
ns32000_slave_interface(machine_config const &mconfig, device_t &device, char const *type)
: device_interface(device, type)
, m_out_scb(*this)
, m_out_spc(*this)
{
}
devcb_write_line m_out_scb;
devcb_write_line m_out_spc;
};
class ns32000_fpu_interface : public ns32000_slave_interface

View File

@ -653,7 +653,7 @@ void ns32081_device_base::execute()
}
}
if (!m_out_scb.isunset())
if (!m_out_spc.isunset())
m_complete->adjust(attotime::from_ticks(m_tcy, clock()));
m_state = STATUS;
@ -680,8 +680,8 @@ u16 ns32081_device_base::status(int *icount)
void ns32081_device_base::complete(s32 param)
{
m_out_scb(0);
m_out_scb(1);
m_out_spc(0);
m_out_spc(1);
}
ns32081_device::ns32081_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock)
@ -736,6 +736,21 @@ void ns32081_device::reg_set(unsigned const reg, unsigned const op_size, u64 con
m_f[reg ^ 1] = u32(op_value >> 32);
}
u16 ns32081_device::slow_status(int *icount)
{
return status(icount);
}
u16 ns32081_device::slow_read()
{
return read<u16>();
}
void ns32081_device::slow_write(u16 data)
{
write<u16>(data);
}
ns32381_device::ns32381_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock)
: ns32081_device_base(mconfig, NS32381, tag, owner, clock)
, ns32000_slow_slave_interface(mconfig, *this)
@ -792,3 +807,33 @@ void ns32381_device::reg_set(unsigned const reg, unsigned const op_size, u64 con
else
m_l[reg & 6] = (m_l[reg & 6] & 0xffff'ffff'0000'0000ULL) | u32(op_value);
}
u16 ns32381_device::slow_status(int *icount)
{
return status(icount);
}
u16 ns32381_device::slow_read()
{
return read<u16>();
}
void ns32381_device::slow_write(u16 data)
{
write<u16>(data);
}
u32 ns32381_device::fast_status(int *icount)
{
return status(icount);
}
u32 ns32381_device::fast_read()
{
return read<u32>();
}
void ns32381_device::fast_write(u32 data)
{
write<u32>(data);
}

View File

@ -67,9 +67,9 @@ public:
virtual void state_add(device_state_interface &parent, int &index) override;
// ns32000_slow_slave_interface implementation
virtual u16 slow_status(int *icount = nullptr) override { return status(icount); }
virtual u16 slow_read() override { return read<u16>(); }
virtual void slow_write(u16 data) override { write<u16>(data); }
virtual u16 slow_status(int *icount = nullptr) override;
virtual u16 slow_read() override;
virtual void slow_write(u16 data) override;
protected:
// device_t implementation
@ -97,14 +97,14 @@ public:
virtual void state_add(device_state_interface &parent, int &index) override;
// ns32000_slow_slave_interface implementation
virtual u16 slow_status(int *icount = nullptr) override { return status(icount); }
virtual u16 slow_read() override { return read<u16>(); }
virtual void slow_write(u16 data) override { write<u16>(data); }
virtual u16 slow_status(int *icount = nullptr) override;
virtual u16 slow_read() override;
virtual void slow_write(u16 data) override;
// ns32000_fast_slave_interface implementation
virtual u32 fast_status(int *icount = nullptr) override { return status(icount); }
virtual u32 fast_read() override { return read<u32>(); }
virtual void fast_write(u32 data) override { write<u32>(data); }
virtual u32 fast_status(int *icount = nullptr) override;
virtual u32 fast_read() override;
virtual void fast_write(u32 data) override;
protected:
// device_t implementation