Skip to content

Commit

Permalink
ns32081: avoid link failure due to inline virtual functions
Browse files Browse the repository at this point in the history
* also use correct name for /SPC output
  • Loading branch information
pmackinlay committed Jan 24, 2025
1 parent 58b826f commit 3706f06
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 17 deletions.
9 changes: 4 additions & 5 deletions src/devices/cpu/ns32000/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -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")
{
}

Expand Down Expand Up @@ -68,11 +67,11 @@ class ns32000_slave_interface : public device_interface
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
Expand Down
51 changes: 48 additions & 3 deletions src/devices/machine/ns32081.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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);
}
18 changes: 9 additions & 9 deletions src/devices/machine/ns32081.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ class ns32081_device
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
Expand Down Expand Up @@ -97,14 +97,14 @@ class ns32381_device
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
Expand Down

0 comments on commit 3706f06

Please sign in to comment.