From 250e9056d57f358d6a888929e58aa73ad1539279 Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Fri, 11 Apr 2008 14:00:47 +0000 Subject: [PATCH] From: Oliver Stoeneberg [mailto:oliverst@online.de] Subject: change for cpunum_set_irq_callback() callback function This patch adds the running_machine* parameter to the function passed into cpunum_set_irq_callback() and adds the IRQ_CALLBACK macro for the callback function. --- src/emu/cpuint.c | 25 +++++++++++++------------ src/emu/cpuint.h | 3 ++- src/emu/machine/tmp68301.c | 4 ++-- src/mame/audio/leland.c | 4 ++-- src/mame/audio/scramble.c | 4 ++-- src/mame/drivers/aztarac.c | 2 +- src/mame/drivers/bnstars.c | 4 ++-- src/mame/drivers/crystal.c | 2 +- src/mame/drivers/dcheese.c | 6 +++--- src/mame/drivers/gamecstl.c | 2 +- src/mame/drivers/mazerbla.c | 2 +- src/mame/drivers/mediagx.c | 2 +- src/mame/drivers/megadriv.c | 8 ++++---- src/mame/drivers/metro.c | 4 ++-- src/mame/drivers/model1.c | 2 +- src/mame/drivers/ms32.c | 4 ++-- src/mame/drivers/seibuspi.c | 2 +- src/mame/drivers/ssv.c | 2 +- src/mame/drivers/taito_l.c | 2 +- src/mame/drivers/taitowlf.c | 2 +- src/mame/machine/s16fd.c | 4 ++-- src/mame/machine/s24fd.c | 4 ++-- 22 files changed, 48 insertions(+), 46 deletions(-) diff --git a/src/emu/cpuint.c b/src/emu/cpuint.c index 4e3f0ca401c..fc64e66820d 100644 --- a/src/emu/cpuint.c +++ b/src/emu/cpuint.c @@ -10,6 +10,7 @@ ***************************************************************************/ #include "driver.h" +#include "deprecat.h" #ifdef ENABLE_DEBUGGER #include "debug/debugcpu.h" @@ -76,7 +77,7 @@ int (*const cpu_irq_callbacks[MAX_CPU])(int) = cpu_7_irq_callback }; -static int (*drv_irq_callbacks[MAX_CPU])(int); +static int (*drv_irq_callbacks[MAX_CPU])(running_machine *, int); @@ -318,7 +319,7 @@ void cpunum_set_input_line_and_vector(running_machine *machine, int cpunum, int * *************************************/ -void cpunum_set_irq_callback(int cpunum, int (*callback)(int)) +void cpunum_set_irq_callback(int cpunum, int (*callback)(running_machine *, int)) { drv_irq_callbacks[cpunum] = callback; } @@ -331,7 +332,7 @@ void cpunum_set_irq_callback(int cpunum, int (*callback)(int)) * *************************************/ -INLINE int cpu_irq_callback(int cpunum, int line) +INLINE int cpu_irq_callback(running_machine *machine, int cpunum, int line) { int vector = input_line_vector[cpunum][line]; @@ -347,7 +348,7 @@ INLINE int cpu_irq_callback(int cpunum, int line) /* if there's a driver callback, run it */ if (drv_irq_callbacks[cpunum]) - vector = (*drv_irq_callbacks[cpunum])(line); + vector = (*drv_irq_callbacks[cpunum])(machine, line); #ifdef ENABLE_DEBUGGER /* notify the debugger */ @@ -358,14 +359,14 @@ INLINE int cpu_irq_callback(int cpunum, int line) return vector; } -static int cpu_0_irq_callback(int line) { return cpu_irq_callback(0, line); } -static int cpu_1_irq_callback(int line) { return cpu_irq_callback(1, line); } -static int cpu_2_irq_callback(int line) { return cpu_irq_callback(2, line); } -static int cpu_3_irq_callback(int line) { return cpu_irq_callback(3, line); } -static int cpu_4_irq_callback(int line) { return cpu_irq_callback(4, line); } -static int cpu_5_irq_callback(int line) { return cpu_irq_callback(5, line); } -static int cpu_6_irq_callback(int line) { return cpu_irq_callback(6, line); } -static int cpu_7_irq_callback(int line) { return cpu_irq_callback(7, line); } +static int cpu_0_irq_callback(int line) { return cpu_irq_callback(Machine, 0, line); } +static int cpu_1_irq_callback(int line) { return cpu_irq_callback(Machine, 1, line); } +static int cpu_2_irq_callback(int line) { return cpu_irq_callback(Machine, 2, line); } +static int cpu_3_irq_callback(int line) { return cpu_irq_callback(Machine, 3, line); } +static int cpu_4_irq_callback(int line) { return cpu_irq_callback(Machine, 4, line); } +static int cpu_5_irq_callback(int line) { return cpu_irq_callback(Machine, 5, line); } +static int cpu_6_irq_callback(int line) { return cpu_irq_callback(Machine, 6, line); } +static int cpu_7_irq_callback(int line) { return cpu_irq_callback(Machine, 7, line); } diff --git a/src/emu/cpuint.h b/src/emu/cpuint.h index 1e5057e367b..8256135f6ba 100644 --- a/src/emu/cpuint.h +++ b/src/emu/cpuint.h @@ -17,6 +17,7 @@ #include "memory.h" #define INTERRUPT_GEN(func) void func(running_machine *machine, int cpunum) +#define IRQ_CALLBACK(func) int func(running_machine *machine, int irqline) @@ -50,7 +51,7 @@ void cpunum_set_input_line_vector(int cpunum, int irqline, int vector); void cpunum_set_input_line_and_vector(running_machine *machine, int cpunum, int line, int state, int vector); /* Install a driver callback for IRQ acknowledge */ -void cpunum_set_irq_callback(int cpunum, int (*callback)(int irqline)); +void cpunum_set_irq_callback(int cpunum, int (*callback)(running_machine *machine, int irqline)); #endif /* __CPUINT_H__ */ diff --git a/src/emu/machine/tmp68301.c b/src/emu/machine/tmp68301.c index 4d46faa3c5b..4f3152776ab 100644 --- a/src/emu/machine/tmp68301.c +++ b/src/emu/machine/tmp68301.c @@ -21,9 +21,9 @@ static int tmp68301_irq_vector[8]; static void tmp68301_update_timer( int i ); -static int tmp68301_irq_callback(int int_level) +static IRQ_CALLBACK(tmp68301_irq_callback) { - int vector = tmp68301_irq_vector[int_level]; + int vector = tmp68301_irq_vector[irqline]; // logerror("CPU #0 PC %06X: irq callback returns %04X for level %x\n",activecpu_get_pc(),vector,int_level); return vector; } diff --git a/src/mame/audio/leland.c b/src/mame/audio/leland.c index 1a069c5ef10..ba2d7b3ebca 100644 --- a/src/mame/audio/leland.c +++ b/src/mame/audio/leland.c @@ -611,7 +611,7 @@ void leland_80186_sound_init(void) * *************************************/ -static int int_callback(int line) +static IRQ_CALLBACK(int_callback) { if (LOG_INTERRUPTS) logerror("(%f) **** Acknowledged interrupt vector %02X\n", attotime_to_double(timer_get_time()), i80186.intr.poll_status & 0x1f); @@ -1093,7 +1093,7 @@ static READ16_HANDLER( i80186_internal_port_r ) case 0x24/2: if (LOG_PORTS) logerror("%05X:read 80186 interrupt poll\n", activecpu_get_pc()); if (i80186.intr.poll_status & 0x8000) - int_callback(0); + int_callback(machine, 0); return i80186.intr.poll_status; case 0x26/2: diff --git a/src/mame/audio/scramble.c b/src/mame/audio/scramble.c index 6481a79010d..7146b42d3f5 100644 --- a/src/mame/audio/scramble.c +++ b/src/mame/audio/scramble.c @@ -112,7 +112,7 @@ WRITE8_HANDLER( froggrmc_sh_irqtrigger_w ) } -static int scramble_sh_irq_callback(int irqline) +static IRQ_CALLBACK(scramble_sh_irq_callback) { /* interrupt acknowledge clears the flip-flop -- we need to pulse the CLR line because MAME's core never clears this @@ -126,7 +126,7 @@ static int scramble_sh_irq_callback(int irqline) return 0xff; } -static int sfx_sh_irq_callback(int irqline) +static IRQ_CALLBACK(sfx_sh_irq_callback) { /* interrupt acknowledge clears the flip-flop -- we need to pulse the CLR line because MAME's core never clears this diff --git a/src/mame/drivers/aztarac.c b/src/mame/drivers/aztarac.c index 51893c33c50..6adc027b5c7 100644 --- a/src/mame/drivers/aztarac.c +++ b/src/mame/drivers/aztarac.c @@ -26,7 +26,7 @@ * *************************************/ -static int aztarac_irq_callback(int irqline) +static IRQ_CALLBACK(aztarac_irq_callback) { return 0xc; } diff --git a/src/mame/drivers/bnstars.c b/src/mame/drivers/bnstars.c index 16fe305d0f9..b2b83190830 100644 --- a/src/mame/drivers/bnstars.c +++ b/src/mame/drivers/bnstars.c @@ -1289,13 +1289,13 @@ static const struct YMF271interface ymf271_interface2 = static UINT16 irqreq; -static int irq_callback(int irqline) +static IRQ_CALLBACK(irq_callback) { int i; for(i=15; i>=0 && !(irqreq & (1<>8)&7; } -static int icallback(int line) +static IRQ_CALLBACK(icallback) { int i; UINT32 IntPend=program_read_dword_32le(0x01800c0c); diff --git a/src/mame/drivers/dcheese.c b/src/mame/drivers/dcheese.c index be1c12b0c8f..51056c82382 100644 --- a/src/mame/drivers/dcheese.c +++ b/src/mame/drivers/dcheese.c @@ -76,14 +76,14 @@ static void update_irq_state(void) } -static int irq_callback(int which) +static IRQ_CALLBACK(irq_callback) { /* auto-ack the IRQ */ - irq_state[which] = 0; + irq_state[irqline] = 0; update_irq_state(); /* vector is 0x40 + index */ - return 0x40 + which; + return 0x40 + irqline; } diff --git a/src/mame/drivers/gamecstl.c b/src/mame/drivers/gamecstl.c index e8f5c261517..66af4f9ca84 100644 --- a/src/mame/drivers/gamecstl.c +++ b/src/mame/drivers/gamecstl.c @@ -545,7 +545,7 @@ static INPUT_PORTS_START(gamecstl) PORT_START_TAG("pc_keyboard_7") INPUT_PORTS_END -static int irq_callback(int irqline) +static IRQ_CALLBACK(irq_callback) { int r = 0; r = pic8259_acknowledge(1); diff --git a/src/mame/drivers/mazerbla.c b/src/mame/drivers/mazerbla.c index f7b31406ffe..76841a68ca0 100644 --- a/src/mame/drivers/mazerbla.c +++ b/src/mame/drivers/mazerbla.c @@ -299,7 +299,7 @@ static READ8_HANDLER( cfb_zpu_int_req_clr ) } -static int irq_callback(int irqline) +static IRQ_CALLBACK(irq_callback) { /* all data lines are tied to +5V via 10K resistors */ /* D1 is set to GND when INT comes from CFB */ diff --git a/src/mame/drivers/mediagx.c b/src/mame/drivers/mediagx.c index cc7fcfb3926..a21a37d59d8 100644 --- a/src/mame/drivers/mediagx.c +++ b/src/mame/drivers/mediagx.c @@ -953,7 +953,7 @@ static INPUT_PORTS_START(mediagx) PORT_BIT( 0xf00, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3) INPUT_PORTS_END -static int irq_callback(int irqline) +static IRQ_CALLBACK(irq_callback) { int r; r = pic8259_acknowledge(1); diff --git a/src/mame/drivers/megadriv.c b/src/mame/drivers/megadriv.c index 24d089aef85..47d0e93acbb 100644 --- a/src/mame/drivers/megadriv.c +++ b/src/mame/drivers/megadriv.c @@ -5090,20 +5090,20 @@ MACHINE_DRIVER_END /* Callback when the genesis enters interrupt code */ -static int genesis_int_callback (int irq) +static IRQ_CALLBACK(genesis_int_callback) { - if (irq==4) + if (irqline==4) { megadrive_irq4_pending = 0; } - if (irq==6) + if (irqline==6) { megadrive_irq6_pending = 0; // mame_printf_debug("clear pending!\n"); } - return (0x60+irq*4)/4; // vector address + return (0x60+irqline*4)/4; // vector address } static int megadriv_tas_callback(void) diff --git a/src/mame/drivers/metro.c b/src/mame/drivers/metro.c index f517caf6a19..d78d7c77fb2 100644 --- a/src/mame/drivers/metro.c +++ b/src/mame/drivers/metro.c @@ -189,10 +189,10 @@ static void update_irq_state(void) /* For games that supply an *IRQ Vector* on the data bus */ -static int metro_irq_callback(int int_level) +static IRQ_CALLBACK(metro_irq_callback) { // logerror("CPU #0 PC %06X: irq callback returns %04X\n",activecpu_get_pc(),metro_irq_vectors[int_level]); - return metro_irq_vectors[int_level]&0xff; + return metro_irq_vectors[irqline]&0xff; } static MACHINE_RESET( metro ) diff --git a/src/mame/drivers/model1.c b/src/mame/drivers/model1.c index b63fd7d25f3..f1b43c2dfac 100644 --- a/src/mame/drivers/model1.c +++ b/src/mame/drivers/model1.c @@ -714,7 +714,7 @@ static void irq_raise(int level) cpunum_set_input_line(Machine, 0, 0, HOLD_LINE); } -static int irq_callback(int irqline) +static IRQ_CALLBACK(irq_callback) { return last_irq; } diff --git a/src/mame/drivers/ms32.c b/src/mame/drivers/ms32.c index a6bf27989bd..976d2f1b5ad 100644 --- a/src/mame/drivers/ms32.c +++ b/src/mame/drivers/ms32.c @@ -1243,13 +1243,13 @@ GFXDECODE_END static UINT16 irqreq; -static int irq_callback(int irqline) +static IRQ_CALLBACK(irq_callback) { int i; for(i=15; i>=0 && !(irqreq & (1<