Previous 199869 Revisions Next

r18802 Wednesday 31st October, 2012 at 21:28:07 UTC by smf
use DEVCB2 for hooking up irq controller to cpu core (nw)
[src/emu/cpu/psx]irq.c irq.h psx.c

trunk/src/emu/cpu/psx/irq.c
r18801r18802
2727
2828const device_type PSX_IRQ = &device_creator<psxirq_device>;
2929
30psxirq_device::psxirq_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
31   : device_t(mconfig, PSX_IRQ, "PSX IRQ", tag, owner, clock)
30psxirq_device::psxirq_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
31   device_t(mconfig, PSX_IRQ, "PSX IRQ", tag, owner, clock),
32   m_irq_handler(*this)
3233{
3334}
3435
r18801r18802
4748
4849void psxirq_device::device_start()
4950{
51   m_irq_handler.resolve_safe();
52
5053   save_item( NAME( n_irqdata ) );
5154   save_item( NAME( n_irqmask ) );
5255}
r18801r18802
6366   if( ( n_irqdata & n_irqmask ) != 0 )
6467   {
6568      verboselog( machine(), 2, "psx irq assert\n" );
66      machine().device("maincpu")->execute().set_input_line(PSXCPU_IRQ0, ASSERT_LINE );
69      m_irq_handler( ASSERT_LINE );
6770   }
6871   else
6972   {
7073      verboselog( machine(), 2, "psx irq clear\n" );
71      machine().device("maincpu")->execute().set_input_line(PSXCPU_IRQ0, CLEAR_LINE );
74      m_irq_handler( CLEAR_LINE );
7275   }
7376}
7477
trunk/src/emu/cpu/psx/irq.h
r18801r18802
1414
1515extern const device_type PSX_IRQ;
1616
17#define MCFG_PSX_IRQ_HANDLER(_devcb) \
18   devcb = &psxirq_device::set_irq_handler(*device, DEVCB2_##_devcb);
19
1720class psxirq_device : public device_t
1821{
1922public:
2023   psxirq_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
2124
25   // static configuration helpers
26   template<class _Object> static devcb2_base &set_irq_handler(device_t &device, _Object object) { return downcast<psxirq_device &>(device).m_irq_handler.set_callback(object); }
27
2228   DECLARE_READ32_MEMBER( read );
2329   DECLARE_WRITE32_MEMBER( write );
2430
r18801r18802
4551
4652   UINT32 n_irqdata;
4753   UINT32 n_irqmask;
54
55   devcb2_write_line m_irq_handler;
4856};
4957
5058#endif
trunk/src/emu/cpu/psx/psx.c
r18801r18802
31893189
31903190static MACHINE_CONFIG_FRAGMENT( psx )
31913191   MCFG_DEVICE_ADD("irq", PSX_IRQ, 0)
3192   MCFG_PSX_IRQ_HANDLER(INPUTLINE(DEVICE_SELF, PSXCPU_IRQ0))
3193
31923194   MCFG_DEVICE_ADD("dma", PSX_DMA, 0)
31933195   MCFG_PSX_DMA_IRQ_HANDLER(DEVWRITELINE("irq", psxirq_device, intin3))
31943196

Previous 199869 Revisions Next


© 1997-2024 The MAME Team