Made PCI legacy and new implementation coexist for now (no whatsnew)

This commit is contained in:
Miodrag Milanovic 2012-07-02 06:20:21 +00:00
parent f768287f55
commit a78e9cf6cf
16 changed files with 447 additions and 85 deletions

View File

@ -78,6 +78,223 @@
// GLOBAL VARIABLES
//**************************************************************************
const device_type PCI_BUS_LEGACY = &device_creator<pci_bus_legacy_device>;
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
// pci_bus_legacy_device - constructor
//-------------------------------------------------
pci_bus_legacy_device::pci_bus_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, PCI_BUS, "PCI Bus", tag, owner, clock),
m_father(NULL)
{
for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++) {
m_devtag[i]= NULL;
m_read_callback[i] = NULL;
m_write_callback[i] = NULL;
}
m_siblings_count = 0;
}
/***************************************************************************
INLINE FUNCTIONS
***************************************************************************/
READ32_MEMBER( pci_bus_legacy_device::read )
{
UINT32 result = 0xffffffff;
int function, reg;
offset %= 2;
switch (offset)
{
case 0:
result = m_address;
break;
case 1:
if (m_devicenum != -1)
{
pci_read_func read = m_busnumaddr->m_read_callback[m_devicenum];
if (read != NULL)
{
function = (m_address >> 8) & 0x07;
reg = (m_address >> 0) & 0xfc;
result = (*read)(m_busnumaddr, m_busnumaddr->m_device[m_devicenum], function, reg, mem_mask);
}
}
break;
}
if (LOG_PCI)
logerror("read('%s'): offset=%d result=0x%08X\n", tag(), offset, result);
return result;
}
pci_bus_legacy_device *pci_bus_legacy_device::pci_search_bustree(int busnum, int devicenum, pci_bus_legacy_device *pcibus)
{
int a;
pci_bus_legacy_device *ret;
if (pcibus->m_busnum == busnum)
{
return pcibus;
}
for (a = 0; a < pcibus->m_siblings_count; a++)
{
ret = pci_search_bustree(busnum, devicenum, pcibus->m_siblings[a]);
if (ret != NULL)
return ret;
}
return NULL;
}
WRITE32_MEMBER( pci_bus_legacy_device::write )
{
offset %= 2;
if (LOG_PCI)
logerror("write('%s'): offset=%d data=0x%08X\n", tag(), offset, data);
switch (offset)
{
case 0:
m_address = data;
/* lookup current device */
if (m_address & 0x80000000)
{
int busnum = (m_address >> 16) & 0xff;
int devicenum = (m_address >> 11) & 0x1f;
m_busnumaddr = pci_search_bustree(busnum, devicenum, this);
if (m_busnumaddr != NULL)
{
m_busnumber = busnum;
m_devicenum = devicenum;
}
else
m_devicenum = -1;
if (LOG_PCI)
logerror(" bus:%d device:%d\n", busnum, devicenum);
}
break;
case 1:
if (m_devicenum != -1)
{
pci_write_func write = m_busnumaddr->m_write_callback[m_devicenum];
if (write != NULL)
{
int function = (m_address >> 8) & 0x07;
int reg = (m_address >> 0) & 0xfc;
(*write)(m_busnumaddr, m_busnumaddr->m_device[m_devicenum], function, reg, data, mem_mask);
}
if (LOG_PCI)
logerror(" function:%d register:%d\n", (m_address >> 8) & 0x07, (m_address >> 0) & 0xfc);
}
break;
}
}
READ64_MEMBER(pci_bus_legacy_device::read_64be)
{
UINT64 result = 0;
mem_mask = FLIPENDIAN_INT64(mem_mask);
if (ACCESSING_BITS_0_31)
result |= (UINT64)read(space, offset * 2 + 0, mem_mask >> 0) << 0;
if (ACCESSING_BITS_32_63)
result |= (UINT64)read(space, offset * 2 + 1, mem_mask >> 32) << 32;
return FLIPENDIAN_INT64(result);
}
WRITE64_MEMBER(pci_bus_legacy_device::write_64be)
{
data = FLIPENDIAN_INT64(data);
mem_mask = FLIPENDIAN_INT64(mem_mask);
if (ACCESSING_BITS_0_31)
write(space, offset * 2 + 0, data >> 0, mem_mask >> 0);
if (ACCESSING_BITS_32_63)
write(space, offset * 2 + 1, data >> 32, mem_mask >> 32);
}
void pci_bus_legacy_device::add_sibling(pci_bus_legacy_device *sibling, int busnum)
{
m_siblings[m_siblings_count] = sibling;
m_siblings_busnum[m_siblings_count] = busnum;
m_siblings_count++;
}
//-------------------------------------------------
// device_post_load - handle updating after a
// restore
//-------------------------------------------------
void pci_bus_legacy_device::device_post_load()
{
if (m_devicenum != -1)
{
m_busnumaddr = pci_search_bustree(m_busnumber, m_devicenum, this);
}
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void pci_bus_legacy_device::device_start()
{
/* store a pointer back to the device */
m_devicenum = -1;
/* find all our devices */
for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++)
if (m_devtag[i] != NULL)
m_device[i] = machine().device(m_devtag[i]);
if (m_father != NULL) {
pci_bus_legacy_device *father = machine().device<pci_bus_legacy_device>(m_father);
if (father)
father->add_sibling(this, m_busnum);
}
/* register pci states */
save_item(NAME(m_address));
save_item(NAME(m_devicenum));
save_item(NAME(m_busnum));
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
void pci_bus_legacy_device::device_reset()
{
/* reset the drive state */
m_devicenum = -1;
m_address = 0;
}
// NEW IMPLEMENTATION
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
const device_type PCI_BUS = &device_creator<pci_bus_device>;
//**************************************************************************
@ -93,8 +310,6 @@ pci_bus_device::pci_bus_device(const machine_config &mconfig, const char *tag, d
{
for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++) {
m_devtag[i]= NULL;
m_read_callback[i] = NULL;
m_write_callback[i] = NULL;
}
m_siblings_count = 0;
}
@ -119,12 +334,11 @@ READ32_MEMBER( pci_bus_device::read )
case 1:
if (m_devicenum != -1)
{
pci_read_func read = m_busnumaddr->m_read_callback[m_devicenum];
if (read != NULL)
if (m_busnumaddr->m_device[m_devicenum] != NULL)
{
function = (m_address >> 8) & 0x07;
reg = (m_address >> 0) & 0xfc;
result = (*read)(m_busnumaddr, m_busnumaddr->m_device[m_devicenum], function, reg, mem_mask);
result = m_busnumaddr->m_device[m_devicenum]->pci_read(m_busnumaddr, function, reg, mem_mask);
}
}
break;
@ -191,12 +405,11 @@ WRITE32_MEMBER( pci_bus_device::write )
case 1:
if (m_devicenum != -1)
{
pci_write_func write = m_busnumaddr->m_write_callback[m_devicenum];
if (write != NULL)
if (m_busnumaddr->m_device[m_devicenum] != NULL)
{
int function = (m_address >> 8) & 0x07;
int reg = (m_address >> 0) & 0xfc;
(*write)(m_busnumaddr, m_busnumaddr->m_device[m_devicenum], function, reg, data, mem_mask);
m_busnumaddr->m_device[m_devicenum]->pci_write(m_busnumaddr, function, reg, data, mem_mask);
}
if (LOG_PCI)
logerror(" function:%d register:%d\n", (m_address >> 8) & 0x07, (m_address >> 0) & 0xfc);
@ -259,10 +472,17 @@ void pci_bus_device::device_start()
/* store a pointer back to the device */
m_devicenum = -1;
char id[3];
/* find all our devices */
for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++)
if (m_devtag[i] != NULL)
m_device[i] = machine().device(m_devtag[i]);
{
sprintf(id, "%d", i);
pci_connector *conn = downcast<pci_connector *>(subdevice(id));
if (conn!=NULL)
m_device[i] = conn->get_device();
else
m_device[i] = NULL;
}
if (m_father != NULL) {
pci_bus_device *father = machine().device<pci_bus_device>(m_father);
@ -287,3 +507,43 @@ void pci_bus_device::device_reset()
m_devicenum = -1;
m_address = 0;
}
//-------------------------------------------------
// pci_device_interface - constructor
//-------------------------------------------------
pci_device_interface::pci_device_interface(const machine_config &mconfig, device_t &device)
: device_slot_card_interface(mconfig, device)
{
}
//-------------------------------------------------
// ~pci_device_interface - destructor
//-------------------------------------------------
pci_device_interface::~pci_device_interface()
{
}
const device_type PCI_CONNECTOR = &device_creator<pci_connector>;
pci_connector::pci_connector(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, PCI_CONNECTOR, "PCI device connector abstraction", tag, owner, clock),
device_slot_interface(mconfig, *this)
{
}
pci_connector::~pci_connector()
{
}
void pci_connector::device_start()
{
}
pci_device_interface *pci_connector::get_device()
{
return dynamic_cast<pci_device_interface *>(get_card_device());
}

View File

@ -16,7 +16,107 @@
typedef UINT32 (*pci_read_func)(device_t *pcibus, device_t *device, int function, int reg, UINT32 mem_mask);
typedef void (*pci_write_func)(device_t *pcibus, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask);
// ======================> ttl74145_device
// ======================> pci_bus_legacy_device
class pci_bus_legacy_device : public device_t
{
public:
// construction/destruction
pci_bus_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
DECLARE_READ32_MEMBER( read );
DECLARE_WRITE32_MEMBER( write );
DECLARE_READ64_MEMBER( read_64be );
DECLARE_WRITE64_MEMBER( write_64be );
void set_busnum(int busnum) { m_busnum = busnum; }
void set_father(const char *father) { m_father = father; }
void set_device(int num, const char *tag, pci_read_func read_func, pci_write_func write_func) {
m_devtag[num] = tag; m_read_callback[num] = read_func; m_write_callback[num] = write_func; }
pci_bus_legacy_device *pci_search_bustree(int busnum, int devicenum, pci_bus_legacy_device *pcibus);
void add_sibling(pci_bus_legacy_device *sibling, int busnum);
protected:
// device-level overrides
virtual void device_start();
virtual void device_reset();
virtual void device_post_load();
private:
UINT8 m_busnum;
const char * m_devtag[32];
pci_read_func m_read_callback[32];
pci_write_func m_write_callback[32];
const char * m_father;
device_t * m_device[32];
pci_bus_legacy_device * m_siblings[8];
UINT8 m_siblings_busnum[8];
int m_siblings_count;
offs_t m_address;
INT8 m_devicenum; // device number we are addressing
INT8 m_busnumber; // pci bus number we are addressing
pci_bus_legacy_device * m_busnumaddr; // pci bus we are addressing
};
// device type definition
extern const device_type PCI_BUS_LEGACY;
/***************************************************************************
DEVICE CONFIGURATION MACROS
***************************************************************************/
#define MCFG_PCI_BUS_LEGACY_ADD(_tag, _busnum) \
MCFG_DEVICE_ADD(_tag, PCI_BUS_LEGACY, 0) \
downcast<pci_bus_legacy_device *>(device)->set_busnum(_busnum); \
#define MCFG_PCI_BUS_LEGACY_DEVICE(_devnum, _devtag, _configread, _configwrite) \
downcast<pci_bus_legacy_device *>(device)->set_device(_devnum, _devtag,_configread,_configwrite); \
#define MCFG_PCI_BUS_LEGACY_SIBLING(_father_tag) \
downcast<pci_bus_legacy_device *>(device)->set_father(_father_tag); \
// NEW IMPLEMENTATION
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
class pci_bus_device;
// ======================> pci_device_interface
class pci_device_interface : public device_slot_card_interface
{
public:
// construction/destruction
pci_device_interface(const machine_config &mconfig, device_t &device);
virtual ~pci_device_interface();
virtual UINT32 pci_read(pci_bus_device *pcibus, int function, int offset, UINT32 mem_mask) = 0;
virtual void pci_write(pci_bus_device *pcibus, int function, int offset, UINT32 data, UINT32 mem_mask) = 0;
private:
};
class pci_connector: public device_t,
public device_slot_interface
{
public:
pci_connector(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
virtual ~pci_connector();
pci_device_interface *get_device();
protected:
virtual void device_start();
};
extern const device_type PCI_CONNECTOR;
// ======================> pci_bus_device
class pci_bus_device : public device_t
{
@ -32,8 +132,8 @@ public:
void set_busnum(int busnum) { m_busnum = busnum; }
void set_father(const char *father) { m_father = father; }
void set_device(int num, const char *tag, pci_read_func read_func, pci_write_func write_func) {
m_devtag[num] = tag; m_read_callback[num] = read_func; m_write_callback[num] = write_func; }
void set_device(int num, const char *tag) {
m_devtag[num] = tag; }
pci_bus_device *pci_search_bustree(int busnum, int devicenum, pci_bus_device *pcibus);
void add_sibling(pci_bus_device *sibling, int busnum);
@ -46,11 +146,11 @@ protected:
private:
UINT8 m_busnum;
const char * m_devtag[32];
pci_read_func m_read_callback[32];
pci_write_func m_write_callback[32];
pci_device_interface *m_device[32];
const char * m_father;
device_t * m_device[32];
pci_bus_device * m_siblings[8];
UINT8 m_siblings_busnum[8];
int m_siblings_count;
@ -73,11 +173,13 @@ extern const device_type PCI_BUS;
MCFG_DEVICE_ADD(_tag, PCI_BUS, 0) \
downcast<pci_bus_device *>(device)->set_busnum(_busnum); \
#define MCFG_PCI_BUS_DEVICE(_devnum, _devtag, _configread, _configwrite) \
downcast<pci_bus_device *>(device)->set_device(_devnum, _devtag,_configread,_configwrite); \
#define MCFG_PCI_BUS_DEVICE(_tag, _slot_intf, _def_slot, _def_inp, _def_config, _def_clock, _fixed) \
MCFG_DEVICE_ADD(_tag, PCI_CONNECTOR, 0) \
MCFG_DEVICE_SLOT_INTERFACE_FULL(_slot_intf, _def_slot, _def_inp, _def_config, _def_clock, _fixed)
#define MCFG_PCI_BUS_SIBLING(_father_tag) \
downcast<pci_bus_device *>(device)->set_father(_father_tag); \
#endif /* PCI_H */

View File

@ -603,7 +603,7 @@ static ADDRESS_MAP_START( calchase_io, AS_IO, 32, calchase_state )
AM_RANGE(0x03f0, 0x03f7) AM_READWRITE(fdc_r, fdc_w)
AM_RANGE(0x03f8, 0x03ff) AM_NOP // To debug Serial Port COM1:
AM_RANGE(0x0a78, 0x0a7b) AM_WRITENOP//AM_WRITE_LEGACY(pnp_data_w)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
AM_RANGE(0x42e8, 0x43ef) AM_NOP //To debug
AM_RANGE(0x43c0, 0x43cf) AM_RAM AM_SHARE("share1")
AM_RANGE(0x46e8, 0x46ef) AM_NOP //To debug
@ -932,9 +932,9 @@ static MACHINE_CONFIG_START( calchase, calchase_state )
MCFG_IDE_CONTROLLER_ADD("ide", ide_interrupt, ide_devices, "hdd", NULL, true)
MCFG_MC146818_ADD( "rtc", MC146818_STANDARD )
MCFG_PCI_BUS_ADD("pcibus", 0)
MCFG_PCI_BUS_DEVICE(0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_DEVICE(7, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(7, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
/* video hardware */
MCFG_FRAGMENT_ADD( pcvideo_vga )

View File

@ -1124,7 +1124,7 @@ static ADDRESS_MAP_START(xbox_map_io, AS_IO, 32, smbus_state )
AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE8_LEGACY("pit8254", pit8253_r, pit8253_w, 0xffffffff)
AM_RANGE(0x00a0, 0x00a3) AM_DEVREADWRITE8_LEGACY("pic8259_2", pic8259_r, pic8259_w, 0xffffffff)
AM_RANGE(0x01f0, 0x01f7) AM_READWRITE_LEGACY(ide_r, ide_w)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
AM_RANGE(0x8000, 0x80ff) AM_READWRITE_LEGACY(dummy_r, dummy_w)
AM_RANGE(0xc000, 0xc0ff) AM_READWRITE_LEGACY(smbus_r, smbus_w)
AM_RANGE(0xff60, 0xff67) AM_DEVREADWRITE_LEGACY("ide", ide_bus_master32_r, ide_bus_master32_w)
@ -1167,15 +1167,15 @@ static MACHINE_CONFIG_START( chihiro_base, driver_device )
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
MCFG_PCI_BUS_ADD("pcibus", 0)
MCFG_PCI_BUS_DEVICE(0, "PCI Bridge Device - Host Bridge", dummy_pci_r, dummy_pci_w)
MCFG_PCI_BUS_DEVICE(1, "HUB Interface - ISA Bridge", dummy_pci_r, dummy_pci_w)
MCFG_PCI_BUS_DEVICE(2, "OHCI USB Controller 1", dummy_pci_r, dummy_pci_w)
MCFG_PCI_BUS_DEVICE(3, "OHCI USB Controller 2", dummy_pci_r, dummy_pci_w)
MCFG_PCI_BUS_DEVICE(30, "AGP Host to PCI Bridge", dummy_pci_r, dummy_pci_w)
MCFG_PCI_BUS_ADD("agpbus", 1)
MCFG_PCI_BUS_SIBLING("pcibus")
MCFG_PCI_BUS_DEVICE(0, "NV2A GeForce 3MX Integrated GPU/Northbridge", geforce_pci_r, geforce_pci_w)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(0, "PCI Bridge Device - Host Bridge", dummy_pci_r, dummy_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(1, "HUB Interface - ISA Bridge", dummy_pci_r, dummy_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(2, "OHCI USB Controller 1", dummy_pci_r, dummy_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(3, "OHCI USB Controller 2", dummy_pci_r, dummy_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(30, "AGP Host to PCI Bridge", dummy_pci_r, dummy_pci_w)
MCFG_PCI_BUS_LEGACY_ADD("agpbus", 1)
MCFG_PCI_BUS_LEGACY_SIBLING("pcibus")
MCFG_PCI_BUS_LEGACY_DEVICE(0, "NV2A GeForce 3MX Integrated GPU/Northbridge", geforce_pci_r, geforce_pci_w)
MCFG_PIC8259_ADD( "pic8259_1", chihiro_pic8259_1_config )
MCFG_PIC8259_ADD( "pic8259_2", chihiro_pic8259_2_config )
MCFG_PIT8254_ADD( "pit8254", chihiro_pit8254_config )

View File

@ -488,14 +488,14 @@ static void mpc106_pci_w(device_t *busdevice, device_t *device, int function, in
READ64_MEMBER(cobra_state::main_mpc106_r)
{
pci_bus_device *device = machine().device<pci_bus_device>("pcibus");
pci_bus_legacy_device *device = machine().device<pci_bus_legacy_device>("pcibus");
//return pci_64be_r(offset, mem_mask);
return device->read_64be(space, offset, mem_mask);
}
WRITE64_MEMBER(cobra_state::main_mpc106_w)
{
pci_bus_device *device = machine().device<pci_bus_device>("pcibus");
pci_bus_legacy_device *device = machine().device<pci_bus_legacy_device>("pcibus");
//pci_64be_w(offset, data, mem_mask);
device->write_64be(space, offset, data, mem_mask);
}
@ -2027,8 +2027,8 @@ static MACHINE_CONFIG_START( cobra, cobra_state )
MCFG_MACHINE_RESET( cobra )
MCFG_PCI_BUS_ADD("pcibus", 0)
MCFG_PCI_BUS_DEVICE(0, NULL, mpc106_pci_r, mpc106_pci_w)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(0, NULL, mpc106_pci_r, mpc106_pci_w)
MCFG_IDE_CONTROLLER_ADD("ide", ide_interrupt, ide_devices, "hdd", NULL, true)

View File

@ -602,7 +602,7 @@ static ADDRESS_MAP_START(funkball_io, AS_IO, 32, funkball_state)
// AM_RANGE(0x03f0, 0x03ff) AM_READWRITE(fdc_r, fdc_w)
AM_RANGE(0x03f0, 0x03ff) AM_READWRITE8(fdc_r,fdc_w,0xffffffff)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
AM_RANGE(0x0360, 0x0363) AM_WRITE8(flash_w,0xffffffff)
@ -1156,9 +1156,9 @@ static MACHINE_CONFIG_START( funkball, funkball_state )
MCFG_MC146818_ADD( "rtc", MC146818_STANDARD )
MCFG_PCI_BUS_ADD("pcibus", 0)
MCFG_PCI_BUS_DEVICE(7, "voodoo_0", voodoo_0_pci_r, voodoo_0_pci_w)
MCFG_PCI_BUS_DEVICE(18, NULL, cx5510_pci_r, cx5510_pci_w)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(7, "voodoo_0", voodoo_0_pci_r, voodoo_0_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(18, NULL, cx5510_pci_r, cx5510_pci_w)
MCFG_IDE_CONTROLLER_ADD("ide", ide_interrupt, ide_devices, "hdd", NULL, true)

View File

@ -540,7 +540,7 @@ static ADDRESS_MAP_START(gamecstl_io, AS_IO, 32, gamecstl_state )
AM_RANGE(0x0278, 0x027b) AM_WRITE(pnp_config_w)
AM_RANGE(0x03f0, 0x03ff) AM_READWRITE(fdc_r, fdc_w)
AM_RANGE(0x0a78, 0x0a7b) AM_WRITE(pnp_data_w)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
ADDRESS_MAP_END
/*****************************************************************************/
@ -694,9 +694,9 @@ static MACHINE_CONFIG_START( gamecstl, gamecstl_state )
MCFG_MACHINE_START(gamecstl)
MCFG_MACHINE_RESET(gamecstl)
MCFG_PCI_BUS_ADD("pcibus", 0)
MCFG_PCI_BUS_DEVICE(0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_DEVICE(7, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(7, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
MCFG_PIT8254_ADD( "pit8254", gamecstl_pit8254_config )

View File

@ -137,7 +137,7 @@ public:
required_device<cpu_device> m_mips;
required_device<adsp2181_device> m_adsp;
required_device<pci_bus_device> m_pci;
required_device<pci_bus_legacy_device> m_pci;
/* ASIC */
@ -924,14 +924,14 @@ static MACHINE_CONFIG_START( magictg, magictg_state )
MCFG_SOUND_ADD("dac2", DMADAC, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_PCI_BUS_ADD("pcibus", 0)
MCFG_PCI_BUS_DEVICE(0, NULL, pci_dev0_r, pci_dev0_w)
MCFG_PCI_BUS_DEVICE(7, "voodoo_0", voodoo_0_pci_r, voodoo_0_pci_w)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(0, NULL, pci_dev0_r, pci_dev0_w)
MCFG_PCI_BUS_LEGACY_DEVICE(7, "voodoo_0", voodoo_0_pci_r, voodoo_0_pci_w)
#if defined(USE_TWO_3DFX)
MCFG_PCI_BUS_DEVICE(8, "voodoo_1", voodoo_1_pci_r, voodoo_1_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(8, "voodoo_1", voodoo_1_pci_r, voodoo_1_pci_w)
#endif
MCFG_PCI_BUS_DEVICE(9, "zr36120", zr36120_pci_r, zr36120_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(9, "zr36120", zr36120_pci_r, zr36120_pci_w)
MCFG_3DFX_VOODOO_1_ADD("voodoo_0", STD_VOODOO_1_CLOCK, 2, "screen")
MCFG_3DFX_VOODOO_CPU("mips")

View File

@ -960,7 +960,7 @@ static ADDRESS_MAP_START(mediagx_io, AS_IO, 32, mediagx_state )
AM_RANGE(0x0378, 0x037b) AM_READWRITE(parallel_port_r, parallel_port_w)
AM_RANGE(0x03f0, 0x03ff) AM_READWRITE(fdc_r, fdc_w)
AM_RANGE(0x0400, 0x04ff) AM_READWRITE(ad1847_r, ad1847_w)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
ADDRESS_MAP_END
/*****************************************************************************/
@ -1160,8 +1160,8 @@ static MACHINE_CONFIG_START( mediagx, mediagx_state )
MCFG_MACHINE_START(mediagx)
MCFG_MACHINE_RESET(mediagx)
MCFG_PCI_BUS_ADD("pcibus", 0)
MCFG_PCI_BUS_DEVICE(18, NULL, cx5510_pci_r, cx5510_pci_w)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(18, NULL, cx5510_pci_r, cx5510_pci_w)
MCFG_PIT8254_ADD( "pit8254", mediagx_pit8254_config )

View File

@ -558,7 +558,7 @@ static ADDRESS_MAP_START(midqslvr_io, AS_IO, 32, midqslvr_state)
AM_RANGE(0x01f0, 0x01f7) AM_READWRITE(ide_r, ide_w)
AM_RANGE(0x03f0, 0x03f7) AM_READWRITE(fdc_r, fdc_w)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
ADDRESS_MAP_END
static const struct pit8253_config midqslvr_pit8254_config =
@ -702,9 +702,9 @@ static MACHINE_CONFIG_START( midqslvr, midqslvr_state )
MCFG_MC146818_ADD( "rtc", MC146818_STANDARD )
MCFG_PCI_BUS_ADD("pcibus", 0)
MCFG_PCI_BUS_DEVICE( 0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_DEVICE(31, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE( 0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(31, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
MCFG_IDE_CONTROLLER_ADD("ide", ide_interrupt, ide_devices, "hdd", NULL, true)

View File

@ -542,7 +542,7 @@ static ADDRESS_MAP_START( queen_io, AS_IO, 32, queen_state )
AM_RANGE(0x01f0, 0x01f7) AM_READWRITE(ide_r, ide_w)
AM_RANGE(0x03f0, 0x03f7) AM_READWRITE(fdc_r, fdc_w)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
ADDRESS_MAP_END
static const struct pit8253_config queen_pit8254_config =
@ -689,9 +689,9 @@ static MACHINE_CONFIG_START( queen, queen_state )
MCFG_MC146818_ADD( "rtc", MC146818_STANDARD )
MCFG_PCI_BUS_ADD("pcibus", 0)
MCFG_PCI_BUS_DEVICE(0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_DEVICE(7, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(7, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
MCFG_IDE_CONTROLLER_ADD("ide", ide_interrupt, ide_devices, "hdd", NULL, true)

View File

@ -417,7 +417,7 @@ static ADDRESS_MAP_START(savquest_io, AS_IO, 32, savquest_state)
AM_RANGE(0x01f0, 0x01f7) AM_READWRITE(ide_r, ide_w)
AM_RANGE(0x03f0, 0x03f7) AM_READWRITE(fdc_r, fdc_w)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
// AM_RANGE(0x5000, 0x5007) // routes to port $eb
ADDRESS_MAP_END
@ -553,9 +553,9 @@ static MACHINE_CONFIG_START( savquest, savquest_state )
MCFG_MC146818_ADD( "rtc", MC146818_STANDARD )
MCFG_PCI_BUS_ADD("pcibus", 0)
MCFG_PCI_BUS_DEVICE(0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_DEVICE(7, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(7, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
MCFG_IDE_CONTROLLER_ADD("ide", ide_interrupt, ide_devices, "hdd", NULL, true)

View File

@ -479,7 +479,7 @@ static ADDRESS_MAP_START(taitowlf_io, AS_IO, 32, taitowlf_state )
AM_RANGE(0x0278, 0x027b) AM_WRITE(pnp_config_w)
AM_RANGE(0x03f0, 0x03ff) AM_READWRITE(fdc_r, fdc_w)
AM_RANGE(0x0a78, 0x0a7b) AM_WRITE(pnp_data_w)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
ADDRESS_MAP_END
/*****************************************************************************/
@ -625,9 +625,9 @@ static MACHINE_CONFIG_START( taitowlf, taitowlf_state )
MCFG_MACHINE_START(taitowlf)
MCFG_MACHINE_RESET(taitowlf)
MCFG_PCI_BUS_ADD("pcibus", 0)
MCFG_PCI_BUS_DEVICE(0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_DEVICE(7, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(7, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
MCFG_PIT8254_ADD( "pit8254", taitowlf_pit8254_config )
MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config )

View File

@ -384,25 +384,25 @@ static void mpc8240_pci_w(device_t *busdevice, device_t *device, int function, i
READ64_MEMBER(viper_state::pci_config_addr_r)
{
pci_bus_device *device = machine().device<pci_bus_device>("pcibus");
pci_bus_legacy_device *device = machine().device<pci_bus_legacy_device>("pcibus");
return device->read_64be(space, 0, U64(0xffffffff00000000));
}
WRITE64_MEMBER(viper_state::pci_config_addr_w)
{
pci_bus_device *device = machine().device<pci_bus_device>("pcibus");
pci_bus_legacy_device *device = machine().device<pci_bus_legacy_device>("pcibus");
device->write_64be(space, 0, data, U64(0xffffffff00000000));
}
READ64_MEMBER(viper_state::pci_config_data_r)
{
pci_bus_device *device = machine().device<pci_bus_device>("pcibus");
pci_bus_legacy_device *device = machine().device<pci_bus_legacy_device>("pcibus");
return device->read_64be(space, 1, U64(0x00000000ffffffff)) << 32;
}
WRITE64_MEMBER(viper_state::pci_config_data_w)
{
pci_bus_device *device = machine().device<pci_bus_device>("pcibus");
pci_bus_legacy_device *device = machine().device<pci_bus_legacy_device>("pcibus");
device->write_64be(space, 1, data >> 32, U64(0x00000000ffffffff));
}
@ -1976,9 +1976,9 @@ static MACHINE_CONFIG_START( viper, viper_state )
MCFG_MACHINE_START(viper)
MCFG_MACHINE_RESET(viper)
MCFG_PCI_BUS_ADD("pcibus", 0)
MCFG_PCI_BUS_DEVICE(0, "mpc8240", mpc8240_pci_r, mpc8240_pci_w)
MCFG_PCI_BUS_DEVICE(12, "voodoo", voodoo3_pci_r, voodoo3_pci_w)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(0, "mpc8240", mpc8240_pci_r, mpc8240_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(12, "voodoo", voodoo3_pci_r, voodoo3_pci_w)
MCFG_IDE_CONTROLLER_ADD("ide", ide_interrupt, ide_devices, "hdd", NULL, true)
MCFG_3DFX_VOODOO_3_ADD("voodoo", STD_VOODOO_3_CLOCK, 8, "screen")

View File

@ -449,7 +449,7 @@ static ADDRESS_MAP_START( voyager_io, AS_IO, 32, voyager_state )
AM_RANGE(0x03f0, 0x03f7) AM_READWRITE(fdc_r, fdc_w)
AM_RANGE(0x03f8, 0x03ff) AM_NOP // To debug Serial Port COM1:
AM_RANGE(0x0a78, 0x0a7b) AM_WRITENOP//AM_WRITE_LEGACY(pnp_data_w)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
AM_RANGE(0x42e8, 0x43ef) AM_NOP //To debug
AM_RANGE(0x43c0, 0x43cf) AM_RAM AM_SHARE("share1")
AM_RANGE(0x46e8, 0x46ef) AM_NOP //To debug
@ -778,9 +778,9 @@ static MACHINE_CONFIG_START( voyager, voyager_state )
MCFG_IDE_CONTROLLER_ADD("ide", ide_interrupt, ide_devices, "hdd", NULL, true)
MCFG_MC146818_ADD( "rtc", MC146818_STANDARD )
MCFG_PCI_BUS_ADD("pcibus", 0)
MCFG_PCI_BUS_DEVICE(0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_DEVICE(7, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(7, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
/* video hardware */
MCFG_FRAGMENT_ADD( pcvideo_vga )

View File

@ -549,7 +549,7 @@ static ADDRESS_MAP_START(xtom3d_io, AS_IO, 32, xtom3d_state)
AM_RANGE(0x01f0, 0x01f7) AM_READWRITE(ide_r, ide_w)
AM_RANGE(0x03f0, 0x03f7) AM_READWRITE(fdc_r, fdc_w)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
ADDRESS_MAP_END
@ -694,9 +694,9 @@ static MACHINE_CONFIG_START( xtom3d, xtom3d_state )
MCFG_MC146818_ADD( "rtc", MC146818_STANDARD )
MCFG_PCI_BUS_ADD("pcibus", 0)
MCFG_PCI_BUS_DEVICE(0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_DEVICE(7, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(0, NULL, intel82439tx_pci_r, intel82439tx_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(7, NULL, intel82371ab_pci_r, intel82371ab_pci_w)
MCFG_IDE_CONTROLLER_ADD("ide", ide_interrupt, ide_devices, "hdd", NULL, true)