powerpc: added 740 and 750 models to give the correct IDs. The 740/750 extended TLB is not yet supported. [R. Belmont]

apple/imacg3.cpp, powermacg3.cpp: Use PPC750 model and set strictest DRC options.  Execution now goes much farther. [R. Belmont]

apple/pippin.cpp: Use strictest DRC options.  Execution goes farther. [R. Belmont]
This commit is contained in:
arbee 2023-05-01 20:41:13 -04:00
parent 7c2b592432
commit c74df6265e
6 changed files with 34 additions and 6 deletions

View File

@ -757,6 +757,17 @@ public:
ppc604_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class ppc740_device : public ppc_device
{
public:
ppc740_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class ppc750_device : public ppc_device
{
public:
ppc750_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class ppc4xx_device : public ppc_device
{
@ -812,5 +823,7 @@ DECLARE_DEVICE_TYPE(MPC8240, mpc8240_device)
DECLARE_DEVICE_TYPE(PPC403GA, ppc403ga_device)
DECLARE_DEVICE_TYPE(PPC403GCX, ppc403gcx_device)
DECLARE_DEVICE_TYPE(PPC405GP, ppc405gp_device)
DECLARE_DEVICE_TYPE(PPC740, ppc740_device)
DECLARE_DEVICE_TYPE(PPC750, ppc750_device)
#endif // MAME_CPU_POWERPC_PPC_H

View File

@ -205,6 +205,8 @@ DEFINE_DEVICE_TYPE(MPC8240, mpc8240_device, "mpc8240", "IBM PowerPC MPC82
DEFINE_DEVICE_TYPE(PPC403GA, ppc403ga_device, "ppc403ga", "IBM PowerPC 403GA")
DEFINE_DEVICE_TYPE(PPC403GCX, ppc403gcx_device, "ppc403gcx", "IBM PowerPC 403GCX")
DEFINE_DEVICE_TYPE(PPC405GP, ppc405gp_device, "ppc405gp", "IBM PowerPC 405GP")
DEFINE_DEVICE_TYPE(PPC740, ppc740_device, "ppc740", "IBM PowerPC 740")
DEFINE_DEVICE_TYPE(PPC750, ppc750_device, "ppc750", "IBM PowerPC 750")
ppc_device::ppc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int address_bits, int data_bits, powerpc_flavor flavor, uint32_t cap, uint32_t tb_divisor, address_map_constructor internal_map)
@ -288,6 +290,16 @@ ppc604_device::ppc604_device(const machine_config &mconfig, const char *tag, dev
{
}
ppc740_device::ppc740_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: ppc_device(mconfig, PPC740, tag, owner, clock, 32, 64, PPC_MODEL_740, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_604_MMU | PPCCAP_750_TLB , 4, address_map_constructor())
{
}
ppc750_device::ppc750_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: ppc_device(mconfig, PPC750, tag, owner, clock, 32, 64, PPC_MODEL_750, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_604_MMU | PPCCAP_750_TLB, 4, address_map_constructor())
{
}
void ppc4xx_device::internal_ppc4xx(address_map &map)
{
map(0x40000000, 0x4000000f).rw(FUNC(ppc4xx_device::ppc4xx_spu_r), FUNC(ppc4xx_device::ppc4xx_spu_w));

View File

@ -64,7 +64,7 @@
#define PPCCAP_MFIOC 0x40 /* TRUE if we have memory-forced I/O controller interface accesses */
#define PPCCAP_601BAT 0x80 /* TRUE if we're doing 601-style BATs (unified I/D, different bit layout) */
#define PPCCAP_604_MMU 0x100 /* TRUE if we have 604-class MMU features */
#define PPCCAP_750_TLB 0x200 /* TRUE if we have the extended 740/750 series TLB */
/* exception types */
enum

View File

@ -37,7 +37,7 @@ public:
imac_state(const machine_config &mconfig, device_type type, const char *tag);
required_device<cpu_device> m_maincpu;
required_device<ppc_device> m_maincpu;
required_device<mpc106_host_device> m_mpc106;
required_device<cuda_device> m_cuda;
required_device<macadb_device> m_macadb;
@ -114,7 +114,8 @@ void imac_state::imac_map(address_map &map)
void imac_state::imac(machine_config &config)
{
PPC604(config, m_maincpu, 66000000); // actually PPC750
PPC740(config, m_maincpu, 66000000); // actually 233 MHz
m_maincpu->ppcdrc_set_options(PPCDRC_COMPATIBLE_OPTIONS);
m_maincpu->set_addrmap(AS_PROGRAM, &imac_state::imac_map);
PCI_ROOT(config, "pci", 0);

View File

@ -67,7 +67,7 @@ public:
pippin_state(const machine_config &mconfig, device_type type, const char *tag);
required_device<cpu_device> m_maincpu;
required_device<ppc_device> m_maincpu;
required_device<aspen_host_device> m_aspen;
required_device<cuda_device> m_cuda;
required_device<macadb_device> m_macadb;
@ -166,6 +166,7 @@ void pippin_state::pippin(machine_config &config)
{
/* basic machine hardware */
PPC603(config, m_maincpu, 66000000);
m_maincpu->ppcdrc_set_options(PPCDRC_COMPATIBLE_OPTIONS);
m_maincpu->set_addrmap(AS_PROGRAM, &pippin_state::pippin_map);
PCI_ROOT(config, "pci", 0);

View File

@ -36,7 +36,7 @@ public:
pwrmacg3_state(const machine_config &mconfig, device_type type, const char *tag);
required_device<cpu_device> m_maincpu;
required_device<ppc_device> m_maincpu;
required_device<mpc106_host_device> m_mpc106;
required_device<cuda_device> m_cuda;
required_device<macadb_device> m_macadb;
@ -121,7 +121,8 @@ void pwrmacg3_state::pwrmacg3_map(address_map &map)
void pwrmacg3_state::pwrmacg3(machine_config &config)
{
PPC604(config, m_maincpu, 66000000); // actually PPC750
PPC740(config, m_maincpu, 66000000); // actually 233 MHz
m_maincpu->ppcdrc_set_options(PPCDRC_COMPATIBLE_OPTIONS);
m_maincpu->set_addrmap(AS_PROGRAM, &pwrmacg3_state::pwrmacg3_map);
PCI_ROOT(config, "pci", 0);