mirror of
https://github.com/holub/mame
synced 2025-10-06 09:00:04 +03:00
arm.c: converted to use inline configs. nw.
This commit is contained in:
parent
73e76f805a
commit
8b7a48ca8c
@ -230,6 +230,7 @@ arm_cpu_device::arm_cpu_device(const machine_config &mconfig, const char *tag, d
|
||||
: cpu_device(mconfig, ARM, "ARM", tag, owner, clock, "arm", __FILE__)
|
||||
, m_program_config("program", ENDIANNESS_LITTLE, 32, 26, 0)
|
||||
, m_endian(ENDIANNESS_LITTLE)
|
||||
, m_copro_type(ARM_COPRO_TYPE_UNKNOWN_CP15)
|
||||
{
|
||||
memset(m_sArmRegister, 0x00, sizeof(m_sArmRegister));
|
||||
}
|
||||
@ -239,6 +240,7 @@ arm_cpu_device::arm_cpu_device(const machine_config &mconfig, device_type type,
|
||||
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
|
||||
, m_program_config("program", endianness, 32, 26, 0)
|
||||
, m_endian(endianness)
|
||||
, m_copro_type(ARM_COPRO_TYPE_UNKNOWN_CP15)
|
||||
{
|
||||
memset(m_sArmRegister, 0x00, sizeof(m_sArmRegister));
|
||||
}
|
||||
@ -312,20 +314,6 @@ void arm_cpu_device::SetModeRegister( int mode, int rIndex, UINT32 value )
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
void arm_cpu_device::device_config_complete()
|
||||
{
|
||||
// inherit a copy of the static data
|
||||
const arm_interface *intf = reinterpret_cast<const arm_interface *>(static_config());
|
||||
if (intf != NULL)
|
||||
*static_cast<arm_interface *>(this) = *intf;
|
||||
|
||||
// or set default if none provided
|
||||
else
|
||||
{
|
||||
coprotype = ARM_COPRO_TYPE_UNKNOWN_CP15;
|
||||
}
|
||||
}
|
||||
|
||||
void arm_cpu_device::device_reset()
|
||||
{
|
||||
for ( int i = 0; i < 27; i++ )
|
||||
@ -430,7 +418,7 @@ void arm_cpu_device::execute_run()
|
||||
}
|
||||
else if ((insn & 0x0f000000u) == 0x0e000000u) /* Coprocessor */
|
||||
{
|
||||
if(coprotype == 1)
|
||||
if (m_copro_type == ARM_COPRO_TYPE_VL86C020)
|
||||
HandleCoProVL86C020(insn);
|
||||
else
|
||||
HandleCoPro(insn);
|
||||
|
@ -20,13 +20,8 @@ enum
|
||||
ARM_COPRO_TYPE_VL86C020
|
||||
};
|
||||
|
||||
struct arm_interface
|
||||
{
|
||||
UINT8 coprotype;
|
||||
};
|
||||
|
||||
#define ARM_INTERFACE(name) \
|
||||
const arm_interface (name) =
|
||||
#define MCFG_ARM_COPRO(_type) \
|
||||
arm_cpu_device::set_copro_type(*device, _type);
|
||||
|
||||
|
||||
enum
|
||||
@ -39,17 +34,17 @@ enum
|
||||
};
|
||||
|
||||
|
||||
class arm_cpu_device : public cpu_device,
|
||||
public arm_interface
|
||||
class arm_cpu_device : public cpu_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
arm_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
arm_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source, endianness_t endianness);
|
||||
|
||||
static void set_copro_type(device_t &device, int type) { downcast<arm_cpu_device &>(device).m_copro_type = type; }
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete();
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
|
||||
@ -81,6 +76,7 @@ protected:
|
||||
address_space *m_program;
|
||||
direct_read_data *m_direct;
|
||||
endianness_t m_endian;
|
||||
UINT8 m_copro_type;
|
||||
|
||||
void cpu_write32( int addr, UINT32 data );
|
||||
void cpu_write8( int addr, UINT8 data );
|
||||
@ -105,7 +101,6 @@ protected:
|
||||
int storeDec(UINT32 pat, UINT32 rbv);
|
||||
static UINT32 BCDToDecimal(UINT32 value);
|
||||
static UINT32 DecimalToBCD(UINT32 value);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -350,17 +350,11 @@ WRITE_LINE_MEMBER( archimedes_state::a310_kart_rx_w )
|
||||
archimedes_clear_irq_b(ARCHIMEDES_IRQB_KBD_XMIT_EMPTY);
|
||||
}
|
||||
|
||||
static ARM_INTERFACE( a310_config )
|
||||
{
|
||||
ARM_COPRO_TYPE_VL86C020
|
||||
};
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( a310, a310_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", ARM, 8000000) /* 8 MHz */
|
||||
MCFG_CPU_PROGRAM_MAP(a310_mem)
|
||||
MCFG_CPU_CONFIG(a310_config)
|
||||
MCFG_ARM_COPRO(ARM_COPRO_TYPE_VL86C020)
|
||||
|
||||
MCFG_DEVICE_ADD("kart", AAKART, 8000000/256)
|
||||
MCFG_AAKART_OUT_TX_CB(WRITELINE(archimedes_state, a310_kart_tx_w))
|
||||
|
Loading…
Reference in New Issue
Block a user