From 520f5c5dabead0d6c2240cf9afa99521d5a243ce Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Sun, 22 Sep 2024 03:22:43 +1000 Subject: -cpu/arm7: Added interrupt helpers, hid details from most clients. * cpu/arm7: Moved input line and state item numbers into class declaration so most users don't need the internal header. * cpu/arm7: Added callbacks so run to next interrupt works in the debugger. * cpu/arm7: Added helpers for SoCs that generate effective FIQ/IRQ signals with and onboard interrupt controller. * igs/igs027a.cpp: Moved presumed onboard RAM and possible FIQ enable into the device. -igs/igs_m027.cpp: Cleaned up installation of varying numbers of PPIs, got rid of the chessc2 and gonefsh2 PPIs that don't really exist. --- src/devices/bus/bbc/tube/tube_arm7.cpp | 4 +- src/devices/bus/bbc/tube/tube_arm7.h | 1 - src/devices/cpu/arm7/ap2010cpu.cpp | 4 +- src/devices/cpu/arm7/ap2010cpu.h | 1 - src/devices/cpu/arm7/arm7.cpp | 49 ++++-- src/devices/cpu/arm7/arm7.h | 102 ++++------- src/devices/cpu/arm7/arm7core.h | 90 ++++++---- src/devices/cpu/arm7/arm7core.hxx | 10 +- src/devices/cpu/arm7/lpc210x.cpp | 3 + src/devices/cpu/arm7/lpc210x.h | 3 +- src/devices/cpu/arm7/upd800468.cpp | 3 + src/devices/cpu/arm7/upd800468.h | 3 +- src/devices/machine/arm_iomd.cpp | 2 +- src/devices/machine/arm_iomd.h | 1 - src/devices/machine/pxa255.cpp | 4 +- src/devices/machine/pxa255.h | 1 - src/devices/machine/s3c2400.cpp | 2 - src/devices/machine/s3c2410.cpp | 2 - src/devices/machine/s3c2440.cpp | 2 - src/devices/machine/s3c24xx.hxx | 9 +- src/devices/machine/s3c44b0.cpp | 9 +- src/devices/machine/sa1110.cpp | 4 +- src/devices/machine/sa1110.h | 1 - src/devices/machine/sa1111.h | 1 - src/mame/acorn/riscpc.cpp | 1 - src/mame/acorn/ssfindo.cpp | 1 - src/mame/apple/iphone2g.cpp | 5 +- src/mame/apple/newton.cpp | 1 - src/mame/eolith/ghosteo.cpp | 1 - src/mame/gamepark/gp32.cpp | 7 +- src/mame/gamepark/gp32.h | 5 +- src/mame/hp/jornada.cpp | 1 - src/mame/igs/igs027a.cpp | 76 +++++++- src/mame/igs/igs027a.h | 10 +- src/mame/igs/igs_fear.cpp | 15 +- src/mame/igs/igs_m027.cpp | 241 ++++++++++++++------------ src/mame/igs/igs_m027_link.cpp | 1 - src/mame/igs/igs_m027xa.cpp | 30 +--- src/mame/igs/igs_m036.cpp | 1 - src/mame/igs/pgm.h | 1 - src/mame/igs/pgm2.cpp | 24 ++- src/mame/igs/pgm2.h | 42 +++-- src/mame/igs/pgm3.cpp | 1 - src/mame/igs/pgmprot_igs027a_type2.cpp | 6 +- src/mame/igs/pgmprot_igs027a_type3.cpp | 2 +- src/mame/leapfrog/leapster_explorer.cpp | 1 - src/mame/mattel/pixtermu.cpp | 1 - src/mame/misc/39in1.cpp | 1 - src/mame/misc/3do_m.cpp | 4 +- src/mame/misc/belatra.cpp | 1 - src/mame/misc/nexus3d.cpp | 5 +- src/mame/misc/sanremmg.cpp | 1 - src/mame/nintendo/gba.cpp | 9 +- src/mame/nintendo/nds.cpp | 8 +- src/mame/nintendo/nds.h | 1 - src/mame/nokia/nokia_3310.cpp | 3 +- src/mame/pinball/sam.cpp | 1 - src/mame/psion/psion5.cpp | 4 +- src/mame/psion/psion5.h | 1 - src/mame/saturn/st17xx.cpp | 1 - src/mame/sega/dc.cpp | 3 +- src/mame/sega/dc.h | 1 - src/mame/sega/dccons.cpp | 1 - src/mame/sega/sega_beena.cpp | 8 +- src/mame/sharp/wizard.cpp | 1 - src/mame/sharp/zaurus.cpp | 4 +- src/mame/skeleton/cxhumax.cpp | 12 +- src/mame/skeleton/cxhumax.h | 3 +- src/mame/skeleton/digiblast.cpp | 1 - src/mame/skeleton/easy_karaoke.cpp | 3 +- src/mame/skeleton/koto_zevio.cpp | 1 - src/mame/skeleton/sansa_fuze.cpp | 1 - src/mame/sony/news_r3k.cpp | 6 +- src/mame/sony/pockstat.cpp | 11 +- src/mame/tvgames/generalplus_gpl32612.cpp | 1 - src/mame/tvgames/gpm4530a_lexibook_jg7420.cpp | 1 - src/mame/tvgames/monkey_king_3b.cpp | 1 - src/mame/tvgames/titan_soc.cpp | 1 - src/mame/vtech/innotv_innotabmax.cpp | 1 - src/mame/vtech/storio.cpp | 1 - src/mame/vtech/vtech_innotab.cpp | 1 - 81 files changed, 466 insertions(+), 422 deletions(-) diff --git a/src/devices/bus/bbc/tube/tube_arm7.cpp b/src/devices/bus/bbc/tube/tube_arm7.cpp index f67c89e4c77..b7ec32aa78d 100644 --- a/src/devices/bus/bbc/tube/tube_arm7.cpp +++ b/src/devices/bus/bbc/tube/tube_arm7.cpp @@ -155,8 +155,8 @@ void bbc_tube_arm7_device::update_interrupts() int firq = BIT(m_registers[INTERRUPT][4], 0) && m_efiq_state; int irq = BIT(m_registers[EXP_INTERRUPT][6], 28, 4) && m_exint3_state; - m_maincpu->set_input_line(ARM7_FIRQ_LINE, firq ? ASSERT_LINE : CLEAR_LINE); - m_maincpu->set_input_line(ARM7_IRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, firq ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE); } void bbc_tube_arm7_device::efiq_w(int state) diff --git a/src/devices/bus/bbc/tube/tube_arm7.h b/src/devices/bus/bbc/tube/tube_arm7.h index ff290127395..e908ac16a67 100644 --- a/src/devices/bus/bbc/tube/tube_arm7.h +++ b/src/devices/bus/bbc/tube/tube_arm7.h @@ -14,7 +14,6 @@ #include "tube.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/ram.h" #include "machine/tube.h" diff --git a/src/devices/cpu/arm7/ap2010cpu.cpp b/src/devices/cpu/arm7/ap2010cpu.cpp index 19101e80f6b..0a2b1f97264 100644 --- a/src/devices/cpu/arm7/ap2010cpu.cpp +++ b/src/devices/cpu/arm7/ap2010cpu.cpp @@ -7,9 +7,11 @@ ***************************************************************************/ #include "emu.h" - #include "ap2010cpu.h" +#include "arm7core.h" + + DEFINE_DEVICE_TYPE(AP2010CPU, ap2010cpu_device, "ap2010cpu", "AP2010 CPU") ap2010cpu_device::ap2010cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) diff --git a/src/devices/cpu/arm7/ap2010cpu.h b/src/devices/cpu/arm7/ap2010cpu.h index 82b908fbf02..3cf0a3c53dd 100644 --- a/src/devices/cpu/arm7/ap2010cpu.h +++ b/src/devices/cpu/arm7/ap2010cpu.h @@ -12,7 +12,6 @@ #pragma once #include "arm7.h" -#include "arm7core.h" class ap2010cpu_device : public arm7_cpu_device { diff --git a/src/devices/cpu/arm7/arm7.cpp b/src/devices/cpu/arm7/arm7.cpp index ce3dea313a6..847c3eb3e60 100644 --- a/src/devices/cpu/arm7/arm7.cpp +++ b/src/devices/cpu/arm7/arm7.cpp @@ -31,12 +31,16 @@ TODO: *****************************************************************************/ #include "emu.h" -#include "debug/debugcon.h" -#include "debugger.h" #include "arm7.h" + #include "arm7core.h" //include arm7 core #include "arm7help.h" +#include "debug/debugcon.h" +#include "debugger.h" + +#include + #define LOG_MMU (1U << 1) #define LOG_DSP (1U << 2) #define LOG_COPRO_READS (1U << 3) @@ -1166,10 +1170,6 @@ void arm1176jzf_s_cpu_device::device_reset() m_control = 0x00050078; } -#define UNEXECUTED() \ - m_r[eR15] += 4; \ - m_icount +=2; /* Any unexecuted instruction only takes 1 cycle (page 193) */ - void arm7_cpu_device::update_insn_prefetch(uint32_t curr_pc) { curr_pc &= ~3; @@ -1249,6 +1249,8 @@ void arm7_cpu_device::add_ce_kernel_addr(offs_t addr, std::string value) void arm7_cpu_device::execute_run() { + auto const UNEXECUTED = [this] { m_r[eR15] += 4; m_icount += 2; }; // Any unexecuted instruction only takes 1 cycle (page 193) + m_tlb_log = m_actual_log; uint32_t insn; @@ -1585,24 +1587,25 @@ skip_exec: void arm7_cpu_device::execute_set_input(int irqline, int state) { - switch (irqline) { - case ARM7_IRQ_LINE: /* IRQ */ - m_pendingIrq = state ? true : false; + switch (irqline) + { + case ARM7_IRQ_LINE: // IRQ + m_pendingIrq = state != 0; break; - case ARM7_FIRQ_LINE: /* FIRQ */ - m_pendingFiq = state ? true : false; + case ARM7_FIRQ_LINE: // FIQ + m_pendingFiq = state != 0; break; case ARM7_ABORT_EXCEPTION: - m_pendingAbtD = state ? true : false; + m_pendingAbtD = state != 0; break; case ARM7_ABORT_PREFETCH_EXCEPTION: - m_pendingAbtP = state ? true : false; + m_pendingAbtP = state != 0; break; case ARM7_UNDEFINE_EXCEPTION: - m_pendingUnd = state ? true : false; + m_pendingUnd = state != 0; break; } @@ -1611,6 +1614,24 @@ void arm7_cpu_device::execute_set_input(int irqline, int state) } +void arm7_cpu_device::set_irq(int state) +{ + assert((machine().scheduler().currently_executing() == static_cast(this)) || !machine().scheduler().currently_executing()); + m_pendingIrq = state != 0; + update_irq_state(); + arm7_check_irq_state(); +} + + +void arm7_cpu_device::set_fiq(int state) +{ + assert((machine().scheduler().currently_executing() == static_cast(this)) || !machine().scheduler().currently_executing()); + m_pendingFiq = state != 0; + update_irq_state(); + arm7_check_irq_state(); +} + + std::unique_ptr arm7_cpu_device::create_disassembler() { return std::make_unique(this); diff --git a/src/devices/cpu/arm7/arm7.h b/src/devices/cpu/arm7/arm7.h index 47321d561d4..44591e9dad1 100644 --- a/src/devices/cpu/arm7/arm7.h +++ b/src/devices/cpu/arm7/arm7.h @@ -50,70 +50,34 @@ class arm7_cpu_device : public cpu_device, public arm7_disassembler::config { public: - // construction/destruction - arm7_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual ~arm7_cpu_device(); - - void set_high_vectors() { m_vectorbase = 0xffff0000; } - -protected: enum { - ARCHFLAG_T = 1, // Thumb present - ARCHFLAG_E = 2, // extended DSP operations present (only for v5+) - ARCHFLAG_J = 4, // "Jazelle" (direct execution of Java bytecode) - ARCHFLAG_MMU = 8, // has on-board MMU (traditional ARM style like the SA1110) - ARCHFLAG_SA = 16, // StrongARM extensions (enhanced TLB) - ARCHFLAG_XSCALE = 32, // XScale extensions (CP14, enhanced TLB) - ARCHFLAG_MODE26 = 64, // supports 26-bit backwards compatibility mode - ARCHFLAG_K = 128, // enhanced MMU extensions present (only for v6) - ARCHFLAG_T2 = 256, //Thumb-2 present + ARM7_IRQ_LINE=0, ARM7_FIRQ_LINE, + ARM7_ABORT_EXCEPTION, ARM7_ABORT_PREFETCH_EXCEPTION, ARM7_UNDEFINE_EXCEPTION, + ARM7_NUM_LINES }; + // Really there's only 1 ABORT Line.. and cpu decides whether it's during data fetch or prefetch, but we let the user specify enum { - ARM9_COPRO_ID_STEP_SA1110_A0 = 0, - ARM9_COPRO_ID_STEP_SA1110_B0 = 4, - ARM9_COPRO_ID_STEP_SA1110_B1 = 5, - ARM9_COPRO_ID_STEP_SA1110_B2 = 8, - ARM9_COPRO_ID_STEP_SA1110_B4 = 8, - - ARM9_COPRO_ID_STEP_PXA255_A0 = 6, - - ARM9_COPRO_ID_STEP_ARM946_A0 = 1, - - ARM9_COPRO_ID_STEP_ARM1176JZF_S_R0P0 = 0, - ARM9_COPRO_ID_STEP_ARM1176JZF_S_R0P7 = 7, - - ARM9_COPRO_ID_PART_ARM1176JZF_S = 0xB76 << 4, - ARM9_COPRO_ID_PART_SA1110 = 0xB11 << 4, - ARM9_COPRO_ID_PART_ARM946 = 0x946 << 4, - ARM9_COPRO_ID_PART_ARM920 = 0x920 << 4, - ARM9_COPRO_ID_PART_ARM710 = 0x710 << 4, - ARM9_COPRO_ID_PART_PXA250 = 0x200 << 4, - ARM9_COPRO_ID_PART_PXA255 = 0x2d0 << 4, - ARM9_COPRO_ID_PART_PXA270 = 0x411 << 4, - ARM9_COPRO_ID_PART_GENERICARM7 = 0x700 << 4, - - ARM9_COPRO_ID_PXA255_CORE_REV_SHIFT = 10, - - ARM9_COPRO_ID_ARCH_V4 = 0x01 << 16, - ARM9_COPRO_ID_ARCH_V4T = 0x02 << 16, - ARM9_COPRO_ID_ARCH_V5 = 0x03 << 16, - ARM9_COPRO_ID_ARCH_V5T = 0x04 << 16, - ARM9_COPRO_ID_ARCH_V5TE = 0x05 << 16, - ARM9_COPRO_ID_ARCH_V5TEJ = 0x06 << 16, - ARM9_COPRO_ID_ARCH_V6 = 0x07 << 16, - ARM9_COPRO_ID_ARCH_CPUID = 0x0F << 16, - - ARM9_COPRO_ID_SPEC_REV0 = 0x00 << 20, - ARM9_COPRO_ID_SPEC_REV1 = 0x01 << 20, - - ARM9_COPRO_ID_MFR_ARM = 0x41 << 24, - ARM9_COPRO_ID_MFR_DEC = 0x44 << 24, - ARM9_COPRO_ID_MFR_INTEL = 0x69 << 24 + ARM7_PC = 0, + ARM7_R0, ARM7_R1, ARM7_R2, ARM7_R3, ARM7_R4, ARM7_R5, ARM7_R6, ARM7_R7, + ARM7_R8, ARM7_R9, ARM7_R10, ARM7_R11, ARM7_R12, ARM7_R13, ARM7_R14, ARM7_R15, + ARM7_FR8, ARM7_FR9, ARM7_FR10, ARM7_FR11, ARM7_FR12, ARM7_FR13, ARM7_FR14, + ARM7_IR13, ARM7_IR14, ARM7_SR13, ARM7_SR14, ARM7_FSPSR, ARM7_ISPSR, ARM7_SSPSR, + ARM7_CPSR, ARM7_AR13, ARM7_AR14, ARM7_ASPSR, ARM7_UR13, ARM7_UR14, ARM7_USPSR, ARM7_LOGTLB }; + // construction/destruction + arm7_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + virtual ~arm7_cpu_device(); + + void set_high_vectors() { m_vectorbase = 0xffff0000; } + +protected: + enum arm_arch_flag : uint32_t; + enum arm_copro_id : uint32_t; + arm7_cpu_device( const machine_config &mconfig, device_type type, @@ -127,34 +91,28 @@ protected: void postload(); - // device-level overrides + // device_t implementation virtual void device_start() override; virtual void device_reset() override; - // device_execute_interface overrides + // device_execute_interface implementation virtual uint32_t execute_min_cycles() const noexcept override { return 3; } virtual uint32_t execute_max_cycles() const noexcept override { return 4; } virtual void execute_run() override; virtual void execute_set_input(int inputnum, int state) override; - // device_memory_interface overrides + // device_memory_interface implementation virtual space_config_vector memory_space_config() const override; virtual bool memory_translate(int spacenum, int intention, offs_t &address, address_space *&target_space) override; - // device_state_interface overrides + // device_state_interface implementation virtual void state_export(const device_state_entry &entry) override; virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; - // device_disasm_interface overrides + // device_disasm_interface implementation virtual std::unique_ptr create_disassembler() override; virtual bool get_t_flag() const override; - address_space_config m_program_config; - memory_access<32, 2, 0, ENDIANNESS_LITTLE>::cache m_cachele; - memory_access<32, 2, 0, ENDIANNESS_BIG>::cache m_cachebe; - - uint32_t m_r[/*NUM_REGS*/37]; - void translate_insn_command(const std::vector ¶ms); void translate_data_command(const std::vector ¶ms); void translate_command(const std::vector ¶ms, int intention); @@ -167,6 +125,16 @@ protected: void init_ce_kernel_addrs(); void print_ce_kernel_address(const offs_t addr); + // for SoCs with onboard interrupt controllers - only call from scheduler or CPU's own context + void set_irq(int state); + void set_fiq(int state); + + address_space_config m_program_config; + memory_access<32, 2, 0, ENDIANNESS_LITTLE>::cache m_cachele; + memory_access<32, 2, 0, ENDIANNESS_BIG>::cache m_cachebe; + + uint32_t m_r[/*NUM_REGS*/37]; + std::string m_ce_kernel_addrs[0x10400]; bool m_ce_kernel_addr_present[0x10400]; diff --git a/src/devices/cpu/arm7/arm7core.h b/src/devices/cpu/arm7/arm7core.h index 937c42a550b..55e36ebfb97 100644 --- a/src/devices/cpu/arm7/arm7core.h +++ b/src/devices/cpu/arm7/arm7core.h @@ -18,10 +18,12 @@ ******************************************************************************/ +#ifndef MAME_CPU_ARM7_ARM7CORE_H +#define MAME_CPU_ARM7_ARM7CORE_H + #pragma once -#ifndef __ARM7CORE_H__ -#define __ARM7CORE_H__ +#include "arm7.h" #define ARM7_MMU_ENABLE_HACK 0 #define ARM7_DEBUG_CORE 0 @@ -30,26 +32,10 @@ /**************************************************************************************************** * INTERRUPT LINES/EXCEPTIONS ***************************************************************************************************/ -enum -{ - ARM7_IRQ_LINE=0, ARM7_FIRQ_LINE, - ARM7_ABORT_EXCEPTION, ARM7_ABORT_PREFETCH_EXCEPTION, ARM7_UNDEFINE_EXCEPTION, - ARM7_NUM_LINES -}; -// Really there's only 1 ABORT Line.. and cpu decides whether it's during data fetch or prefetch, but we let the user specify /**************************************************************************************************** * ARM7 CORE REGISTERS ***************************************************************************************************/ -enum -{ - ARM7_PC = 0, - ARM7_R0, ARM7_R1, ARM7_R2, ARM7_R3, ARM7_R4, ARM7_R5, ARM7_R6, ARM7_R7, - ARM7_R8, ARM7_R9, ARM7_R10, ARM7_R11, ARM7_R12, ARM7_R13, ARM7_R14, ARM7_R15, - ARM7_FR8, ARM7_FR9, ARM7_FR10, ARM7_FR11, ARM7_FR12, ARM7_FR13, ARM7_FR14, - ARM7_IR13, ARM7_IR14, ARM7_SR13, ARM7_SR14, ARM7_FSPSR, ARM7_ISPSR, ARM7_SSPSR, - ARM7_CPSR, ARM7_AR13, ARM7_AR14, ARM7_ASPSR, ARM7_UR13, ARM7_UR14, ARM7_USPSR, ARM7_LOGTLB -}; /* There are 36 Unique - 32 bit processor registers */ /* Each mode has 17 registers (except user & system, which have 16) */ @@ -516,19 +502,61 @@ enum #define ARM7_TLB_WRITE (1 << 3) /* ARM flavors */ -enum arm_flavor +enum arm7_cpu_device::arm_arch_flag : uint32_t +{ + ARCHFLAG_T = 1U << 0, // Thumb present + ARCHFLAG_E = 1U << 1, // extended DSP operations present (only for v5+) + ARCHFLAG_J = 1U << 2, // "Jazelle" (direct execution of Java bytecode) + ARCHFLAG_MMU = 1U << 3, // has on-board MMU (traditional ARM style like the SA1110) + ARCHFLAG_SA = 1U << 4, // StrongARM extensions (enhanced TLB) + ARCHFLAG_XSCALE = 1U << 5, // XScale extensions (CP14, enhanced TLB) + ARCHFLAG_MODE26 = 1U << 6, // supports 26-bit backwards compatibility mode + ARCHFLAG_K = 1U << 7, // enhanced MMU extensions present (only for v6) + ARCHFLAG_T2 = 1U << 8, // Thumb-2 present +}; + +enum arm7_cpu_device::arm_copro_id : uint32_t { - /* ARM7 variants */ - ARM_TYPE_ARM7, - ARM_TYPE_ARM7BE, - ARM_TYPE_ARM7500, - ARM_TYPE_PXA255, - ARM_TYPE_SA1110, - - /* ARM9 variants */ - ARM_TYPE_ARM9, - ARM_TYPE_ARM920T, - ARM_TYPE_ARM946ES + ARM9_COPRO_ID_STEP_SA1110_A0 = 0, + ARM9_COPRO_ID_STEP_SA1110_B0 = 4, + ARM9_COPRO_ID_STEP_SA1110_B1 = 5, + ARM9_COPRO_ID_STEP_SA1110_B2 = 8, + ARM9_COPRO_ID_STEP_SA1110_B4 = 8, + + ARM9_COPRO_ID_STEP_PXA255_A0 = 6, + + ARM9_COPRO_ID_STEP_ARM946_A0 = 1, + + ARM9_COPRO_ID_STEP_ARM1176JZF_S_R0P0 = 0, + ARM9_COPRO_ID_STEP_ARM1176JZF_S_R0P7 = 7, + + ARM9_COPRO_ID_PART_ARM1176JZF_S = 0xB76 << 4, + ARM9_COPRO_ID_PART_SA1110 = 0xB11 << 4, + ARM9_COPRO_ID_PART_ARM946 = 0x946 << 4, + ARM9_COPRO_ID_PART_ARM920 = 0x920 << 4, + ARM9_COPRO_ID_PART_ARM710 = 0x710 << 4, + ARM9_COPRO_ID_PART_PXA250 = 0x200 << 4, + ARM9_COPRO_ID_PART_PXA255 = 0x2d0 << 4, + ARM9_COPRO_ID_PART_PXA270 = 0x411 << 4, + ARM9_COPRO_ID_PART_GENERICARM7 = 0x700 << 4, + + ARM9_COPRO_ID_PXA255_CORE_REV_SHIFT = 10, + + ARM9_COPRO_ID_ARCH_V4 = 0x01 << 16, + ARM9_COPRO_ID_ARCH_V4T = 0x02 << 16, + ARM9_COPRO_ID_ARCH_V5 = 0x03 << 16, + ARM9_COPRO_ID_ARCH_V5T = 0x04 << 16, + ARM9_COPRO_ID_ARCH_V5TE = 0x05 << 16, + ARM9_COPRO_ID_ARCH_V5TEJ = 0x06 << 16, + ARM9_COPRO_ID_ARCH_V6 = 0x07 << 16, + ARM9_COPRO_ID_ARCH_CPUID = 0x0F << 16, + + ARM9_COPRO_ID_SPEC_REV0 = 0x00 << 20, + ARM9_COPRO_ID_SPEC_REV1 = 0x01 << 20, + + ARM9_COPRO_ID_MFR_ARM = 0x41 << 24, + ARM9_COPRO_ID_MFR_DEC = 0x44 << 24, + ARM9_COPRO_ID_MFR_INTEL = 0x69 << 24 }; -#endif /* __ARM7CORE_H__ */ +#endif // MAME_CPU_ARM7_ARM7CORE_H diff --git a/src/devices/cpu/arm7/arm7core.hxx b/src/devices/cpu/arm7/arm7core.hxx index 8fba8e61b15..72abb281918 100644 --- a/src/devices/cpu/arm7/arm7core.hxx +++ b/src/devices/cpu/arm7/arm7core.hxx @@ -113,7 +113,7 @@ void arm7_cpu_device::arm7_check_irq_state() // Data Abort if (m_pendingAbtD) { - if (MODE26) fatalerror( "ARM7: pendingAbtD (todo)\n"); + if (MODE26) fatalerror("ARM7: pendingAbtD (todo)\n"); SwitchMode(eARM7_MODE_ABT); /* Set ABT mode so PC is saved to correct R14 bank */ SetRegister(14, pc - 8 + 8); /* save PC to R14 */ SetRegister(SPSR, cpsr); /* Save current CPSR */ @@ -129,7 +129,8 @@ void arm7_cpu_device::arm7_check_irq_state() // FIQ if (m_pendingFiq && (cpsr & F_MASK) == 0) { - if (MODE26) fatalerror( "pendingFiq (todo)\n"); + standard_irq_callback(ARM7_FIRQ_LINE, pc); + if (MODE26) fatalerror("pendingFiq (todo)\n"); SwitchMode(eARM7_MODE_FIQ); /* Set FIQ mode so PC is saved to correct R14 bank */ SetRegister(14, pc - 4 + 4); /* save PC to R14 */ SetRegister(SPSR, cpsr); /* Save current CPSR */ @@ -144,6 +145,7 @@ void arm7_cpu_device::arm7_check_irq_state() // IRQ if (m_pendingIrq && (cpsr & I_MASK) == 0) { + standard_irq_callback(ARM7_IRQ_LINE, pc); SwitchMode(eARM7_MODE_IRQ); /* Set IRQ mode so PC is saved to correct R14 bank */ SetRegister(14, pc - 4 + 4); /* save PC to R14 */ if (MODE32) @@ -168,7 +170,7 @@ void arm7_cpu_device::arm7_check_irq_state() // Prefetch Abort if (m_pendingAbtP) { - if (MODE26) fatalerror( "pendingAbtP (todo)\n"); + if (MODE26) fatalerror("pendingAbtP (todo)\n"); SwitchMode(eARM7_MODE_ABT); /* Set ABT mode so PC is saved to correct R14 bank */ SetRegister(14, pc - 4 + 4); /* save PC to R14 */ SetRegister(SPSR, cpsr); /* Save current CPSR */ @@ -184,7 +186,7 @@ void arm7_cpu_device::arm7_check_irq_state() // Undefined instruction if (m_pendingUnd) { - if (MODE26) printf( "ARM7: pendingUnd (todo)\n"); + if (MODE26) printf("ARM7: pendingUnd (todo)\n"); SwitchMode(eARM7_MODE_UND); /* Set UND mode so PC is saved to correct R14 bank */ // compensate for prefetch (should this also be done for normal IRQ?) if (T_IS_SET(GET_CPSR)) diff --git a/src/devices/cpu/arm7/lpc210x.cpp b/src/devices/cpu/arm7/lpc210x.cpp index 75a322f01a2..9e9c51c620a 100644 --- a/src/devices/cpu/arm7/lpc210x.cpp +++ b/src/devices/cpu/arm7/lpc210x.cpp @@ -15,6 +15,9 @@ #include "emu.h" #include "lpc210x.h" +#include "arm7core.h" + + DEFINE_DEVICE_TYPE(LPC2103, lpc210x_device, "lpc2103", "NXP LPC2103") void lpc210x_device::lpc2103_map(address_map &map) diff --git a/src/devices/cpu/arm7/lpc210x.h b/src/devices/cpu/arm7/lpc210x.h index 47a801a6058..e481d126f67 100644 --- a/src/devices/cpu/arm7/lpc210x.h +++ b/src/devices/cpu/arm7/lpc210x.h @@ -7,9 +7,10 @@ #pragma once #include "arm7.h" -#include "arm7core.h" + #include "machine/vic_pl192.h" + /*************************************************************************** DEVICE CONFIGURATION MACROS ***************************************************************************/ diff --git a/src/devices/cpu/arm7/upd800468.cpp b/src/devices/cpu/arm7/upd800468.cpp index fef0fdc9fce..87dea88ad5c 100644 --- a/src/devices/cpu/arm7/upd800468.cpp +++ b/src/devices/cpu/arm7/upd800468.cpp @@ -12,6 +12,9 @@ #include "emu.h" #include "upd800468.h" +#include "arm7core.h" + + DEFINE_DEVICE_TYPE(UPD800468_TIMER, upd800468_timer_device, "upd800468_timer", "NEC uPD800468 timer") upd800468_timer_device::upd800468_timer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) diff --git a/src/devices/cpu/arm7/upd800468.h b/src/devices/cpu/arm7/upd800468.h index 7f662581c7f..1470f4ea1af 100644 --- a/src/devices/cpu/arm7/upd800468.h +++ b/src/devices/cpu/arm7/upd800468.h @@ -7,10 +7,11 @@ #pragma once #include "arm7.h" -#include "arm7core.h" + #include "machine/gt913_kbd.h" #include "machine/vic_pl192.h" + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/machine/arm_iomd.cpp b/src/devices/machine/arm_iomd.cpp index 39b41162734..5551d590f9c 100644 --- a/src/devices/machine/arm_iomd.cpp +++ b/src/devices/machine/arm_iomd.cpp @@ -427,7 +427,7 @@ inline u8 arm_iomd_device::update_irqa_type(u8 data) inline void arm_iomd_device::flush_irq(unsigned Which) { if (m_irq_status[Which] & m_irq_mask[Which]) - m_host_cpu->pulse_input_line(ARM7_IRQ_LINE, m_host_cpu->minimum_quantum_time()); + m_host_cpu->pulse_input_line(arm7_cpu_device::ARM7_IRQ_LINE, m_host_cpu->minimum_quantum_time()); } template inline void arm_iomd_device::trigger_irq(u8 irq_type) diff --git a/src/devices/machine/arm_iomd.h b/src/devices/machine/arm_iomd.h index a6e371cfd6e..2088f4d6918 100644 --- a/src/devices/machine/arm_iomd.h +++ b/src/devices/machine/arm_iomd.h @@ -12,7 +12,6 @@ #pragma once #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/acorn_vidc.h" #include "machine/at_keybc.h" #include "bus/pc_kbd/pc_kbdc.h" diff --git a/src/devices/machine/pxa255.cpp b/src/devices/machine/pxa255.cpp index 1f1dff2e452..64366553515 100644 --- a/src/devices/machine/pxa255.cpp +++ b/src/devices/machine/pxa255.cpp @@ -877,8 +877,8 @@ void pxa255_periphs_device::update_interrupts() { m_intc_regs.icfp = (m_intc_regs.icpr & m_intc_regs.icmr) & m_intc_regs.iclr; m_intc_regs.icip = (m_intc_regs.icpr & m_intc_regs.icmr) & (~m_intc_regs.iclr); - m_maincpu->set_input_line(ARM7_FIRQ_LINE, m_intc_regs.icfp ? ASSERT_LINE : CLEAR_LINE); - m_maincpu->set_input_line(ARM7_IRQ_LINE, m_intc_regs.icip ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, m_intc_regs.icfp ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, m_intc_regs.icip ? ASSERT_LINE : CLEAR_LINE); } void pxa255_periphs_device::set_irq_line(u32 line, int irq_state) diff --git a/src/devices/machine/pxa255.h b/src/devices/machine/pxa255.h index 3cc9b43c8a9..5a383a9f9e2 100644 --- a/src/devices/machine/pxa255.h +++ b/src/devices/machine/pxa255.h @@ -15,7 +15,6 @@ #pragma once #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "sound/dmadac.h" #include "emupal.h" diff --git a/src/devices/machine/s3c2400.cpp b/src/devices/machine/s3c2400.cpp index 437612a8331..3ce077d18e6 100644 --- a/src/devices/machine/s3c2400.cpp +++ b/src/devices/machine/s3c2400.cpp @@ -11,8 +11,6 @@ #include "emu.h" #include "s3c2400.h" -#include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "screen.h" diff --git a/src/devices/machine/s3c2410.cpp b/src/devices/machine/s3c2410.cpp index e5017ddaed4..56a711532c5 100644 --- a/src/devices/machine/s3c2410.cpp +++ b/src/devices/machine/s3c2410.cpp @@ -11,8 +11,6 @@ #include "emu.h" #include "s3c2410.h" -#include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "screen.h" diff --git a/src/devices/machine/s3c2440.cpp b/src/devices/machine/s3c2440.cpp index 3bec1249b11..c49c06b8738 100644 --- a/src/devices/machine/s3c2440.cpp +++ b/src/devices/machine/s3c2440.cpp @@ -11,8 +11,6 @@ #include "emu.h" #include "s3c2440.h" -#include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "screen.h" diff --git a/src/devices/machine/s3c24xx.hxx b/src/devices/machine/s3c24xx.hxx index c8dda5c1e6d..15835cb6122 100644 --- a/src/devices/machine/s3c24xx.hxx +++ b/src/devices/machine/s3c24xx.hxx @@ -8,7 +8,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "coreutil.h" /******************************************************************************* @@ -1126,7 +1125,7 @@ void S3C24_CLASS_NAME::s3c24xx_check_pending_irq() { LOGMASKED(LOG_IRQS, "triggering IRQ line\n"); m_cpu->resume(SUSPEND_REASON_HALT); - m_cpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_cpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); m_irq.line_irq = ASSERT_LINE; } } @@ -1136,7 +1135,7 @@ void S3C24_CLASS_NAME::s3c24xx_check_pending_irq() { LOGMASKED(LOG_IRQS, "IRQ: srcpnd %08X intmsk %08X intmod %08X\n", m_irq.regs.srcpnd, m_irq.regs.intmsk, m_irq.regs.intmod); LOGMASKED(LOG_IRQS, "clearing IRQ line\n"); - m_cpu->set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); + m_cpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, CLEAR_LINE); m_irq.line_irq = CLEAR_LINE; } } @@ -1150,7 +1149,7 @@ void S3C24_CLASS_NAME::s3c24xx_check_pending_irq() { LOGMASKED(LOG_IRQS, "asserting FIQ line\n"); m_cpu->resume(SUSPEND_REASON_HALT); - m_cpu->set_input_line(ARM7_FIRQ_LINE, ASSERT_LINE); + m_cpu->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, ASSERT_LINE); m_irq.line_fiq = ASSERT_LINE; } } @@ -1159,7 +1158,7 @@ void S3C24_CLASS_NAME::s3c24xx_check_pending_irq() if (m_irq.line_fiq != CLEAR_LINE) { LOGMASKED(LOG_IRQS, "clearing FIQ line\n"); - m_cpu->set_input_line(ARM7_FIRQ_LINE, CLEAR_LINE); + m_cpu->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, CLEAR_LINE); m_irq.line_fiq = CLEAR_LINE; } } diff --git a/src/devices/machine/s3c44b0.cpp b/src/devices/machine/s3c44b0.cpp index 901c12b19f0..6182c47cddb 100644 --- a/src/devices/machine/s3c44b0.cpp +++ b/src/devices/machine/s3c44b0.cpp @@ -12,7 +12,6 @@ #include "s3c44b0.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "screen.h" #include @@ -891,7 +890,7 @@ void s3c44b0_device::check_pending_irq() m_irq.regs.i_ispr |= (1 << int_type); if (m_irq.line_irq != ASSERT_LINE) { - m_cpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_cpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); m_irq.line_irq = ASSERT_LINE; } } @@ -899,7 +898,7 @@ void s3c44b0_device::check_pending_irq() { if (m_irq.line_irq != CLEAR_LINE) { - m_cpu->set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); + m_cpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, CLEAR_LINE); m_irq.line_irq = CLEAR_LINE; } } @@ -909,7 +908,7 @@ void s3c44b0_device::check_pending_irq() { if (m_irq.line_fiq != ASSERT_LINE) { - m_cpu->set_input_line(ARM7_FIRQ_LINE, ASSERT_LINE); + m_cpu->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, ASSERT_LINE); m_irq.line_fiq = ASSERT_LINE; } } @@ -917,7 +916,7 @@ void s3c44b0_device::check_pending_irq() { if (m_irq.line_fiq != CLEAR_LINE) { - m_cpu->set_input_line(ARM7_FIRQ_LINE, CLEAR_LINE); + m_cpu->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, CLEAR_LINE); m_irq.line_fiq = CLEAR_LINE; } } diff --git a/src/devices/machine/sa1110.cpp b/src/devices/machine/sa1110.cpp index 3e1c2f95f77..11deca48a40 100644 --- a/src/devices/machine/sa1110.cpp +++ b/src/devices/machine/sa1110.cpp @@ -2287,14 +2287,14 @@ void sa1110_periphs_device::update_interrupts() m_intc_regs.icfp = (m_intc_regs.icpr & m_intc_regs.icmr) & m_intc_regs.iclr; if (old_fiq != m_intc_regs.icfp) { - m_maincpu->set_input_line(ARM7_FIRQ_LINE, m_intc_regs.icfp ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, m_intc_regs.icfp ? ASSERT_LINE : CLEAR_LINE); } const u32 old_irq = m_intc_regs.icip; m_intc_regs.icip = (m_intc_regs.icpr & m_intc_regs.icmr) & (~m_intc_regs.iclr); if (old_irq != m_intc_regs.icip) { - m_maincpu->set_input_line(ARM7_IRQ_LINE, m_intc_regs.icip ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, m_intc_regs.icip ? ASSERT_LINE : CLEAR_LINE); } } diff --git a/src/devices/machine/sa1110.h b/src/devices/machine/sa1110.h index b39c4f28217..dcfd232f1f3 100644 --- a/src/devices/machine/sa1110.h +++ b/src/devices/machine/sa1110.h @@ -12,7 +12,6 @@ #pragma once #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/input_merger.h" #include "machine/ucb1200.h" diff --git a/src/devices/machine/sa1111.h b/src/devices/machine/sa1111.h index 46cf6779179..20ed6a0ac8b 100644 --- a/src/devices/machine/sa1111.h +++ b/src/devices/machine/sa1111.h @@ -12,7 +12,6 @@ #pragma once #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" class sa1111_device : public device_t { diff --git a/src/mame/acorn/riscpc.cpp b/src/mame/acorn/riscpc.cpp index 4c71ed87705..b64d93a06dc 100644 --- a/src/mame/acorn/riscpc.cpp +++ b/src/mame/acorn/riscpc.cpp @@ -16,7 +16,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/acorn_vidc.h" #include "machine/arm_iomd.h" #include "machine/i2cmem.h" diff --git a/src/mame/acorn/ssfindo.cpp b/src/mame/acorn/ssfindo.cpp index abc836fa192..d97a511a575 100644 --- a/src/mame/acorn/ssfindo.cpp +++ b/src/mame/acorn/ssfindo.cpp @@ -128,7 +128,6 @@ Notes: #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/acorn_vidc.h" #include "machine/arm_iomd.h" #include "machine/i2cmem.h" diff --git a/src/mame/apple/iphone2g.cpp b/src/mame/apple/iphone2g.cpp index 316a34ff5be..4b44c59f31a 100644 --- a/src/mame/apple/iphone2g.cpp +++ b/src/mame/apple/iphone2g.cpp @@ -10,7 +10,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/vic_pl192.h" #include "screen.h" @@ -283,8 +282,8 @@ void iphone2g_state::iphone2g(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &iphone2g_state::mem_map); PL192_VIC(config, m_vic0); - m_vic0->out_irq_cb().set_inputline("maincpu", ARM7_IRQ_LINE); - m_vic0->out_fiq_cb().set_inputline("maincpu", ARM7_FIRQ_LINE); + m_vic0->out_irq_cb().set_inputline("maincpu", arm7_cpu_device::ARM7_IRQ_LINE); + m_vic0->out_fiq_cb().set_inputline("maincpu", arm7_cpu_device::ARM7_FIRQ_LINE); IPHONE2G_SPI(config, m_spi[0], XTAL(12'000'000)); m_spi[0]->out_irq_cb().set(m_vic0, FUNC(vic_pl192_device::irq_w<0x09>)); diff --git a/src/mame/apple/newton.cpp b/src/mame/apple/newton.cpp index f4cfe2b620d..5bd529f0486 100644 --- a/src/mame/apple/newton.cpp +++ b/src/mame/apple/newton.cpp @@ -22,7 +22,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/ram.h" #include "emupal.h" #include "screen.h" diff --git a/src/mame/eolith/ghosteo.cpp b/src/mame/eolith/ghosteo.cpp index 6f775078a98..3a32bb47822 100644 --- a/src/mame/eolith/ghosteo.cpp +++ b/src/mame/eolith/ghosteo.cpp @@ -59,7 +59,6 @@ ToDo: verify QS1000 hook-up #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/gen_latch.h" #include "machine/i2cmem.h" //#include "machine/nandflash.h" diff --git a/src/mame/gamepark/gp32.cpp b/src/mame/gamepark/gp32.cpp index cb1f3a71818..764d66610d5 100644 --- a/src/mame/gamepark/gp32.cpp +++ b/src/mame/gamepark/gp32.cpp @@ -35,7 +35,6 @@ #include "gp32.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "softlist_dev.h" #include "speaker.h" @@ -471,11 +470,11 @@ void gp32_state::s3c240x_check_pending_irq() } m_s3c240x_irq_regs[4] |= (1 << int_type); // INTPND m_s3c240x_irq_regs[5] = int_type; // INTOFFSET - m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); } else { - m_maincpu->set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, CLEAR_LINE); } } @@ -487,7 +486,7 @@ void gp32_state::s3c240x_request_irq(uint32_t int_type) m_s3c240x_irq_regs[0] |= (1 << int_type); // SRCPND m_s3c240x_irq_regs[4] |= (1 << int_type); // INTPND m_s3c240x_irq_regs[5] = int_type; // INTOFFSET - m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); } else { diff --git a/src/mame/gamepark/gp32.h b/src/mame/gamepark/gp32.h index f78d808ce94..d9a4bdfb9ae 100644 --- a/src/mame/gamepark/gp32.h +++ b/src/mame/gamepark/gp32.h @@ -4,9 +4,12 @@ #ifndef MAME_GAMEPARK_GP32_H #define MAME_GAMEPARK_GP32_H +#pragma once + +#include "machine/nvram.h" #include "machine/smartmed.h" #include "sound/dac.h" -#include "machine/nvram.h" + #include "emupal.h" #include "screen.h" diff --git a/src/mame/hp/jornada.cpp b/src/mame/hp/jornada.cpp index a58dadb6406..04ab3e06f7e 100644 --- a/src/mame/hp/jornada.cpp +++ b/src/mame/hp/jornada.cpp @@ -8,7 +8,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/m950x0.h" #include "machine/sa1110.h" #include "machine/sa1111.h" diff --git a/src/mame/igs/igs027a.cpp b/src/mame/igs/igs027a.cpp index 566f8daa3f6..87115b64588 100644 --- a/src/mame/igs/igs027a.cpp +++ b/src/mame/igs/igs027a.cpp @@ -42,16 +42,12 @@ igs027a_cpu_device::~igs027a_cpu_device() } -void igs027a_cpu_device::trigger_irq(unsigned num) +void igs027a_cpu_device::device_resolve_objects() { - if (!BIT(m_irq_enable, num)) - { - m_irq_pending &= ~(u8(1) << num); - pulse_input_line(ARM7_IRQ_LINE, minimum_quantum_time()); - } + m_ext_fiq = 0; + m_ext_irq = 0; } - void igs027a_cpu_device::device_start() { arm7_cpu_device::device_start(); @@ -59,6 +55,9 @@ void igs027a_cpu_device::device_start() m_irq_timers[0] = timer_alloc(FUNC(igs027a_cpu_device::timer_irq<0>), this); m_irq_timers[1] = timer_alloc(FUNC(igs027a_cpu_device::timer_irq<1>), this); + save_item(NAME(m_ext_fiq)); + save_item(NAME(m_ext_irq)); + save_item(NAME(m_fiq_enable)); save_item(NAME(m_irq_enable)); save_item(NAME(m_irq_pending)); } @@ -67,8 +66,41 @@ void igs027a_cpu_device::device_reset() { arm7_cpu_device::device_reset(); + if (!BIT(m_fiq_enable, 0)) + machine().scheduler().synchronize(timer_expired_delegate(FUNC(igs027a_cpu_device::check_fiq), this)); + m_fiq_enable = 0x01; // superkds and fearless never write to 0x4000'0014 but expect FIQ to be triggered m_irq_enable = 0xff; m_irq_pending = 0xff; + + set_irq(0); +} + + +void igs027a_cpu_device::execute_set_input(int irqline, int state) +{ + switch (irqline) + { + case ARM7_IRQ_LINE: + if (state && !m_ext_irq && !BIT(m_irq_enable, 3)) + { + m_irq_pending &= ~(u8(1) << 3); + set_irq(1); + } + m_ext_irq = state ? 1 : 0; + break; + + case ARM7_FIRQ_LINE: + if (state && !m_ext_fiq && BIT(m_fiq_enable, 0)) + { + set_fiq(1); + set_fiq(0); // hacky - depends on ARM7 core checking interrupts outside execute loop; how is this actually acknowledged? + } + m_ext_fiq = state ? 1 : 0; + break; + + default: + arm7_cpu_device::execute_set_input(irqline, state); + } } @@ -76,7 +108,10 @@ void igs027a_cpu_device::onboard_peripherals(address_map &map) { map(0x0000'0000, 0x0000'3fff).rom().region(DEVICE_SELF, 0); + map(0x1000'0000, 0x1000'03ff).ram(); // onboard RAM? + map(0x4000'000c, 0x4000'000f).r(FUNC(igs027a_cpu_device::in_port_r)); + map(0x4000'0014, 0x4000'0017).umask32(0x0000'00ff).w(FUNC(igs027a_cpu_device::fiq_enable_w)); // sets bit 0 before waiting on FIRQ, maybe it's an enable here? map(0x4000'0018, 0x4000'001b).umask32(0x0000'00ff).w(FUNC(igs027a_cpu_device::out_port_w)); map(0x7000'0100, 0x7000'0107).umask32(0x0000'00ff).w(FUNC(igs027a_cpu_device::timer_rate_w)); @@ -119,10 +154,22 @@ u8 igs027a_cpu_device::irq_pending_r() { u8 const result = m_irq_pending; if (!machine().side_effects_disabled()) + { m_irq_pending = 0xff; + set_irq(0); + } return result; } +void igs027a_cpu_device::fiq_enable_w(u8 data) +{ + if (BIT(~m_fiq_enable & data, 0)) + machine().scheduler().synchronize(timer_expired_delegate(FUNC(igs027a_cpu_device::check_fiq), this)); + else if (BIT(m_fiq_enable & ~data, 0)) + set_fiq(0); + m_fiq_enable = data; +} + void igs027a_cpu_device::irq_enable_w(u8 data) { m_irq_enable = data; @@ -138,5 +185,18 @@ void igs027a_cpu_device::bus_sizing_w(u8 data) template TIMER_CALLBACK_MEMBER(igs027a_cpu_device::timer_irq) { - trigger_irq(N); + if (!BIT(m_irq_enable, N)) + { + m_irq_pending &= ~(u8(1) << N); + set_irq(1); + } +} + +TIMER_CALLBACK_MEMBER(igs027a_cpu_device::check_fiq) +{ + if (m_ext_fiq && BIT(m_fiq_enable, 0)) + { + set_fiq(1); + set_fiq(0); // hacky - depends on ARM7 core checking interrupts outside execute loop; how is this actually acknowledged? + } } diff --git a/src/mame/igs/igs027a.h b/src/mame/igs/igs027a.h index a02e4750c23..7699ca768e4 100644 --- a/src/mame/igs/igs027a.h +++ b/src/mame/igs/igs027a.h @@ -19,12 +19,13 @@ public: auto in_port() { return m_in_port_cb.bind(); } auto out_port() { return m_out_port_cb.bind(); } - void trigger_irq(unsigned num); - protected: + virtual void device_resolve_objects() override ATTR_COLD; virtual void device_start() override ATTR_COLD; virtual void device_reset() override ATTR_COLD; + virtual void execute_set_input(int irqline, int state) override; + private: void onboard_peripherals(address_map &map) ATTR_COLD; @@ -32,17 +33,22 @@ private: void out_port_w(u8 data); void timer_rate_w(offs_t offset, u8 data); u8 irq_pending_r(); + void fiq_enable_w(u8 data); void irq_enable_w(u8 data); void bus_sizing_w(u8 data); template TIMER_CALLBACK_MEMBER(timer_irq); + TIMER_CALLBACK_MEMBER(check_fiq); devcb_read32 m_in_port_cb; devcb_write8 m_out_port_cb; emu_timer *m_irq_timers[2]; + u8 m_ext_fiq; + u8 m_ext_irq; + u8 m_fiq_enable; u8 m_irq_enable; u8 m_irq_pending; }; diff --git a/src/mame/igs/igs_fear.cpp b/src/mame/igs/igs_fear.cpp index d36787411d0..97cf3b24703 100644 --- a/src/mame/igs/igs_fear.cpp +++ b/src/mame/igs/igs_fear.cpp @@ -11,7 +11,6 @@ #include "pgmcrypt.h" #include "xamcu.h" -#include "cpu/arm7/arm7core.h" #include "machine/nvram.h" #include "machine/ticket.h" #include "machine/v3021.h" @@ -63,7 +62,6 @@ private: void main_map(address_map &map) ATTR_COLD; void main_xor_map(address_map &map) ATTR_COLD; - void sound_irq(int state); void vblank_irq(int state); void draw_sprite(bitmap_ind16 &bitmap, const rectangle &cliprect, int xpos, int ypos, int height, int width, int palette, int flipx, int romoffset); @@ -341,18 +339,9 @@ INPUT_PORTS_START( superkds ) PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(20) PORT_KEYDELTA(20) INPUT_PORTS_END -void igs_fear_state::sound_irq(int state) -{ - LOGMASKED(LOG_DEBUG, "sound irq = %d\n", state); - if (state) - m_maincpu->trigger_irq(3); -} - void igs_fear_state::vblank_irq(int state) { - if (state) - if (m_screen->frame_number() & 1) - m_maincpu->pulse_input_line(ARM7_FIRQ_LINE, m_maincpu->minimum_quantum_time()); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, (state && m_screen->frame_number() & 1) ? 1 : 0); } @@ -479,7 +468,7 @@ void igs_fear_state::igs_fear(machine_config &config) /* sound hardware */ IGS_XA_ICS_SOUND(config, m_xa, 50'000'000/3); - m_xa->irq().set(FUNC(igs_fear_state::sound_irq)); + m_xa->irq().set_inputline(m_maincpu, arm7_cpu_device::ARM7_IRQ_LINE); } void igs_fear_state::igs_fear_xor(machine_config &config) diff --git a/src/mame/igs/igs_m027.cpp b/src/mame/igs/igs_m027.cpp index d3f1b828868..0fd5e8bf76d 100644 --- a/src/mame/igs/igs_m027.cpp +++ b/src/mame/igs/igs_m027.cpp @@ -29,8 +29,6 @@ #include "mahjong.h" #include "pgmcrypt.h" -#include "cpu/arm7/arm7core.h" - #include "machine/i8255.h" #include "machine/nvram.h" #include "machine/ticket.h" @@ -58,7 +56,6 @@ public: igs_m027_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_external_rom(*this, "user1"), - m_igs_mainram(*this, "igs_mainram"), m_maincpu(*this, "maincpu"), m_ppi(*this, "ppi%u", 1U), m_igs017_igs031(*this, "igs017_igs031"), @@ -77,21 +74,22 @@ public: template void counter_w(int state); - void m027(machine_config &config) ATTR_COLD; - void m027_xor(machine_config &config) ATTR_COLD; - void slqz3_xor(machine_config &config) ATTR_COLD; - void jking02_xor(machine_config &config) ATTR_COLD; - void qlgs_xor(machine_config &config) ATTR_COLD; - void lhdmg_xor(machine_config &config) ATTR_COLD; - void cjddz_xor(machine_config &config) ATTR_COLD; - void lhzb4_xor(machine_config &config) ATTR_COLD; - void lthy_xor(machine_config &config) ATTR_COLD; - void zhongguo_xor(machine_config &config) ATTR_COLD; - void mgzz_xor(machine_config &config) ATTR_COLD; - void oceanpar_xor(machine_config &config) ATTR_COLD; - void tripslot_xor(machine_config &config) ATTR_COLD; + template void m027_noppi(machine_config &config) ATTR_COLD; + template void m027_1ppi(machine_config &config) ATTR_COLD; + template void m027_2ppis(machine_config &config) ATTR_COLD; + void slqz3(machine_config &config) ATTR_COLD; + void jking02(machine_config &config) ATTR_COLD; + void qlgs(machine_config &config) ATTR_COLD; + void lhdmg(machine_config &config) ATTR_COLD; + void cjddz(machine_config &config) ATTR_COLD; + void lhzb4(machine_config &config) ATTR_COLD; + void lthy(machine_config &config) ATTR_COLD; + void zhongguo(machine_config &config) ATTR_COLD; + void mgzz(machine_config &config) ATTR_COLD; + void oceanpar(machine_config &config) ATTR_COLD; + void tripslot(machine_config &config) ATTR_COLD; void extradrw(machine_config &config) ATTR_COLD; - void chessc2_xor(machine_config &config) ATTR_COLD; + void chessc2(machine_config &config) ATTR_COLD; void init_sdwx() ATTR_COLD; void init_lhzb4() ATTR_COLD; @@ -122,7 +120,6 @@ protected: private: required_region_ptr m_external_rom; - optional_shared_ptr m_igs_mainram; required_device m_maincpu; optional_device_array m_ppi; @@ -167,11 +164,11 @@ private: void pgm_create_dummy_internal_arm_region() ATTR_COLD; - void igs_mahjong_map(address_map &map) ATTR_COLD; - void igs_mahjong_xor_map(address_map &map) ATTR_COLD; - void cjddz_xor_map(address_map &map) ATTR_COLD; - void tripslot_xor_map(address_map &map) ATTR_COLD; - void extradrw_map(address_map &map) ATTR_COLD; + template void m027_noppi_map(address_map &map) ATTR_COLD; + template void m027_1ppi_map(address_map &map) ATTR_COLD; + template void m027_2ppis_map(address_map &map) ATTR_COLD; + void cjddz_map(address_map &map) ATTR_COLD; + void tripslot_map(address_map &map) ATTR_COLD; void oki_128k_map(address_map &map) ATTR_COLD; }; @@ -206,46 +203,50 @@ void igs_m027_state::video_start() ***************************************************************************/ -void igs_m027_state::igs_mahjong_map(address_map &map) +template +void igs_m027_state::m027_noppi_map(address_map &map) { - map(0x0800'0000, 0x0807'ffff).rom().region("user1", 0); // Game ROM - map(0x1000'0000, 0x1000'03ff).ram().share("igs_mainram"); // main RAM for ASIC? + if (Xor) + map(0x0800'0000, 0x0807'ffff).r(FUNC(igs_m027_state::external_rom_r)); // Game ROM + else + map(0x0800'0000, 0x0807'ffff).rom().region("user1", 0); // Game ROM + map(0x1800'0000, 0x1800'7fff).ram().mirror(0x0000f'8000).share("nvram"); map(0x3800'0000, 0x3800'7fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)); - map(0x3800'8000, 0x3800'8003).umask32(0x0000'00ff).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - map(0x3800'9000, 0x3800'9003).rw(m_ppi[0], FUNC(i8255_device::read), FUNC(i8255_device::write)); map(0x5000'0000, 0x5000'03ff).umask32(0x0000'00ff).w(FUNC(igs_m027_state::xor_table_w)); // uploads XOR table to external ROM here } -void igs_m027_state::igs_mahjong_xor_map(address_map &map) +template +void igs_m027_state::m027_1ppi_map(address_map &map) { - igs_mahjong_map(map); + m027_noppi_map(map); - map(0x0800'0000, 0x0807'ffff).r(FUNC(igs_m027_state::external_rom_r)); // Game ROM + map(0x3800'9000, 0x3800'9003).rw(m_ppi[0], FUNC(i8255_device::read), FUNC(i8255_device::write)); } -void igs_m027_state::cjddz_xor_map(address_map &map) +template +void igs_m027_state::m027_2ppis_map(address_map &map) { - igs_mahjong_xor_map(map); + m027_1ppi_map(map); - map(0x3800'b000, 0x3800'b003).umask32(0x0000'00ff).w(FUNC(igs_m027_state::oki_128k_bank_w)); + map(0x3800'a000, 0x3800'a003).rw(m_ppi[1], FUNC(i8255_device::read), FUNC(i8255_device::write)); } -void igs_m027_state::tripslot_xor_map(address_map &map) +void igs_m027_state::cjddz_map(address_map &map) { - igs_mahjong_xor_map(map); + m027_1ppi_map(map); - map(0x3800'c000, 0x3800'c003).umask32(0x0000'00ff).w(FUNC(igs_m027_state::tripslot_misc_w)); + map(0x3800'b000, 0x3800'b003).umask32(0x0000'00ff).w(FUNC(igs_m027_state::oki_128k_bank_w)); } -void igs_m027_state::extradrw_map(address_map &map) +void igs_m027_state::tripslot_map(address_map &map) { - igs_mahjong_map(map); + m027_1ppi_map(map); - map(0x3800'a000, 0x3800'a003).rw(m_ppi[1], FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x3800'c000, 0x3800'c003).umask32(0x0000'00ff).w(FUNC(igs_m027_state::tripslot_misc_w)); } void igs_m027_state::oki_128k_map(address_map &map) @@ -1459,10 +1460,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(igs_m027_state::interrupt) int scanline = param; if (scanline == 240 && m_igs017_igs031->get_irq_enable()) - m_maincpu->trigger_irq(3); // source? + m_maincpu->pulse_input_line(arm7_cpu_device::ARM7_IRQ_LINE, m_maincpu->minimum_quantum_time()); // source? if (scanline == 0 && m_igs017_igs031->get_nmi_enable()) - m_maincpu->pulse_input_line(ARM7_FIRQ_LINE, m_maincpu->minimum_quantum_time()); // vbl? + m_maincpu->pulse_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, m_maincpu->minimum_quantum_time()); // vbl? } @@ -1627,10 +1628,11 @@ void igs_m027_state::counter_w(int state) } -void igs_m027_state::m027(machine_config &config) +template +void igs_m027_state::m027_noppi(machine_config &config) { IGS027A(config, m_maincpu, 22'000'000); // Jungle King 2002 has a 22Mhz Xtal, what about the others? - m_maincpu->set_addrmap(AS_PROGRAM, &igs_m027_state::igs_mahjong_map); + m_maincpu->set_addrmap(AS_PROGRAM, &igs_m027_state::m027_noppi_map); m_maincpu->out_port().set(FUNC(igs_m027_state::io_select_w<1>)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); @@ -1645,11 +1647,6 @@ void igs_m027_state::m027(machine_config &config) TIMER(config, "scantimer").configure_scanline(FUNC(igs_m027_state::interrupt), "screen", 0, 1); - I8255A(config, m_ppi[0]); - m_ppi[0]->tri_pa_callback().set_constant(0x00); - m_ppi[0]->tri_pb_callback().set_constant(0x00); - m_ppi[0]->tri_pc_callback().set_constant(0x00); - IGS017_IGS031(config, m_igs017_igs031, 0); m_igs017_igs031->set_text_reverse_bits(true); m_igs017_igs031->in_pa_callback().set(NAME((&igs_m027_state::dsw_r<1, 0>))); @@ -1661,16 +1658,35 @@ void igs_m027_state::m027(machine_config &config) OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5); } -void igs_m027_state::m027_xor(machine_config &config) +template +void igs_m027_state::m027_1ppi(machine_config &config) +{ + m027_noppi(config); + + m_maincpu->set_addrmap(AS_PROGRAM, &igs_m027_state::m027_1ppi_map); + + I8255A(config, m_ppi[0]); + m_ppi[0]->tri_pa_callback().set_constant(0x00); + m_ppi[0]->tri_pb_callback().set_constant(0x00); + m_ppi[0]->tri_pc_callback().set_constant(0x00); +} + +template +void igs_m027_state::m027_2ppis(machine_config &config) { - m027(config); + m027_1ppi(config); - m_maincpu->set_addrmap(AS_PROGRAM, &igs_m027_state::igs_mahjong_xor_map); + m_maincpu->set_addrmap(AS_PROGRAM, &igs_m027_state::m027_2ppis_map); + + I8255A(config, m_ppi[1]); + m_ppi[0]->tri_pa_callback().set_constant(0x00); + m_ppi[0]->tri_pb_callback().set_constant(0x00); + m_ppi[0]->tri_pc_callback().set_constant(0x00); } -void igs_m027_state::slqz3_xor(machine_config &config) +void igs_m027_state::slqz3(machine_config &config) { - m027_xor(config); + m027_1ppi(config); m_maincpu->in_port().set(FUNC(igs_m027_state::slqz3_gpio_r)); // what lives here? @@ -1685,9 +1701,9 @@ void igs_m027_state::slqz3_xor(machine_config &config) HOPPER(config, m_hopper, attotime::from_msec(50)); } -void igs_m027_state::qlgs_xor(machine_config &config) +void igs_m027_state::qlgs(machine_config &config) { - m027_xor(config); + m027_1ppi(config); m_maincpu->in_port().set_ioport("PLAYER"); m_maincpu->out_port().append(m_oki, FUNC(okim6295_device::set_rom_bank)).rshift(3); @@ -1698,9 +1714,9 @@ void igs_m027_state::qlgs_xor(machine_config &config) m_igs017_igs031->in_pc_callback().set_ioport("JOY"); } -void igs_m027_state::lhdmg_xor(machine_config &config) +void igs_m027_state::lhdmg(machine_config &config) { - m027_xor(config); + m027_1ppi(config); m_maincpu->in_port().set(FUNC(igs_m027_state::lhdmg_gpio_r)); @@ -1715,11 +1731,11 @@ void igs_m027_state::lhdmg_xor(machine_config &config) HOPPER(config, m_hopper, attotime::from_msec(50)); } -void igs_m027_state::cjddz_xor(machine_config &config) +void igs_m027_state::cjddz(machine_config &config) { - m027_xor(config); + m027_1ppi(config); - m_maincpu->set_addrmap(AS_PROGRAM, &igs_m027_state::cjddz_xor_map); + m_maincpu->set_addrmap(AS_PROGRAM, &igs_m027_state::cjddz_map); m_maincpu->in_port().set_ioport("PLAYER"); m_oki->set_addrmap(0, &igs_m027_state::oki_128k_map); @@ -1735,16 +1751,16 @@ void igs_m027_state::cjddz_xor(machine_config &config) HOPPER(config, m_hopper, attotime::from_msec(50)); } -void igs_m027_state::lhzb4_xor(machine_config &config) +void igs_m027_state::lhzb4(machine_config &config) { - cjddz_xor(config); + cjddz(config); m_oki->set_clock(2'000'000); } -void igs_m027_state::lthy_xor(machine_config &config) +void igs_m027_state::lthy(machine_config &config) { - m027_xor(config); + m027_1ppi(config); m_ppi[0]->in_pa_callback().set_ioport("TEST"); m_ppi[0]->in_pb_callback().set(NAME((&igs_m027_state::kbd_r<1, 0, 2>))); @@ -1755,16 +1771,16 @@ void igs_m027_state::lthy_xor(machine_config &config) m_igs017_igs031->in_pc_callback().set_ioport("JOY"); } -void igs_m027_state::zhongguo_xor(machine_config &config) +void igs_m027_state::zhongguo(machine_config &config) { - lthy_xor(config); + lthy(config); HOPPER(config, m_hopper, attotime::from_msec(50)); } -void igs_m027_state::jking02_xor(machine_config &config) +void igs_m027_state::jking02(machine_config &config) { - m027_xor(config); + m027_1ppi(config); m_maincpu->in_port().set_ioport("PLAYER"); @@ -1773,9 +1789,9 @@ void igs_m027_state::jking02_xor(machine_config &config) m_ppi[0]->out_pc_callback().set(FUNC(igs_m027_state::lamps_w<0>)); } -void igs_m027_state::mgzz_xor(machine_config &config) +void igs_m027_state::mgzz(machine_config &config) { - m027_xor(config); + m027_1ppi(config); m_ppi[0]->out_pa_callback().set(FUNC(igs_m027_state::mahjong_output_w)); m_ppi[0]->in_pb_callback().set_ioport("TEST"); @@ -1788,9 +1804,9 @@ void igs_m027_state::mgzz_xor(machine_config &config) HOPPER(config, m_hopper, attotime::from_msec(50)); } -void igs_m027_state::oceanpar_xor(machine_config &config) +void igs_m027_state::oceanpar(machine_config &config) { - m027_xor(config); + m027_1ppi(config); m_maincpu->in_port().set_ioport("PLAYER"); m_maincpu->out_port().append(m_oki, FUNC(okim6295_device::set_rom_bank)).rshift(3); @@ -1803,11 +1819,11 @@ void igs_m027_state::oceanpar_xor(machine_config &config) TICKET_DISPENSER(config, m_ticket, attotime::from_msec(200)); } -void igs_m027_state::tripslot_xor(machine_config &config) +void igs_m027_state::tripslot(machine_config &config) { - m027_xor(config); + m027_1ppi(config); - m_maincpu->set_addrmap(AS_PROGRAM, &igs_m027_state::tripslot_xor_map); + m_maincpu->set_addrmap(AS_PROGRAM, &igs_m027_state::tripslot_map); m_maincpu->in_port().set_ioport("PLAYER"); m_maincpu->out_port().append(FUNC(igs_m027_state::tripslot_okibank_low_w)).rshift(3); @@ -1820,19 +1836,20 @@ void igs_m027_state::tripslot_xor(machine_config &config) void igs_m027_state::extradrw(machine_config &config) { - m027(config); + m027_2ppis(config); - m_maincpu->set_addrmap(AS_PROGRAM, &igs_m027_state::extradrw_map); + //m_ppi[0]->in_pa_callback().set(...); + //m_ppi[0]->in_pb_callback().set(...); + //m_ppi[0]->out_pc_callback().set(...); - I8255A(config, m_ppi[1]); - m_ppi[1]->tri_pa_callback().set_constant(0x00); - m_ppi[1]->tri_pb_callback().set_constant(0x00); - m_ppi[1]->tri_pc_callback().set_constant(0x00); + //m_ppi[1]->out_pa_callback().set(...); + //m_ppi[1]->out_pb_callback().set(...); + //m_ppi[1]->in_pc_callback().set(...); } -void igs_m027_state::chessc2_xor(machine_config &config) +void igs_m027_state::chessc2(machine_config &config) { - m027_xor(config); + m027_noppi(config); m_maincpu->in_port().set_ioport("PLAYER"); } @@ -2955,37 +2972,37 @@ void igs_m027_state::init_chessc2() ***************************************************************************/ // Complete dumps -GAME( 1999, slqz3, 0, slqz3_xor, slqz3, igs_m027_state, init_slqz3, ROT0, "IGS", "Shuang Long Qiang Zhu 3 (China, VS107C)", 0 ) -GAME( 1999, qlgs, 0, qlgs_xor, qlgs, igs_m027_state, init_qlgs, ROT0, "IGS", "Que Long Gaoshou", MACHINE_NODEVICE_LAN ) -GAME( 1999, lhdmg, 0, lhdmg_xor, lhdmg, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Da Manguan", 0 ) -GAME( 1999, lhdmgp, lhdmg, lhdmg_xor, lhdmg, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Da Manguan Plus", 0 ) -GAME( 1999, lhzb3, 0, lhdmg_xor, lhzb3, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Zhengba III", 0 ) -GAME( 2004, lhzb4, 0, lhzb4_xor, lhzb4, igs_m027_state, init_lhzb4, ROT0, "IGS", "Long Hu Zhengba 4", 0 ) -GAME( 1999, lthy, 0, lthy_xor, lthy, igs_m027_state, init_lthy, ROT0, "IGS", "Long Teng Hu Yue", MACHINE_NODEVICE_LAN ) -GAME( 2000, zhongguo, 0, zhongguo_xor, zhongguo, igs_m027_state, init_zhongguo, ROT0, "IGS", "Zhongguo Chu Da D", 0 ) -GAMEL( 200?, jking02, 0, jking02_xor, jking02, igs_m027_state, init_jking02, ROT0, "IGS", "Jungle King 2002 (V209US)", MACHINE_NODEVICE_LAN, layout_jking02 ) -GAME( 2003, mgzz, 0, mgzz_xor, mgzz, igs_m027_state, init_mgzz, ROT0, "IGS", "Manguan Zhizun (V101CN)", 0 ) -GAME( 2003, mgzza, mgzz, mgzz_xor, mgzza, igs_m027_state, init_mgzz, ROT0, "IGS", "Manguan Zhizun (V100CN)", 0 ) -GAME( 2007, mgcs3, 0, lhzb4_xor, mgcs3, igs_m027_state, init_mgcs3, ROT0, "IGS", "Manguan Caishen 3 (V101CN)", 0 ) -GAMEL( 1999, oceanpar, 0, oceanpar_xor, oceanpar, igs_m027_state, init_oceanpar, ROT0, "IGS", "Ocean Paradise (V105US)", 0, layout_oceanpar ) // 1999 copyright in ROM -GAMEL( 1999, oceanpara, oceanpar, oceanpar_xor, oceanpara,igs_m027_state, init_oceanpar, ROT0, "IGS", "Ocean Paradise (V101US)", 0, layout_oceanpar ) // 1999 copyright in ROM -GAMEL( 1999, fruitpar, 0, oceanpar_xor, oceanpar, igs_m027_state, init_fruitpar, ROT0, "IGS", "Fruit Paradise (V214)", 0, layout_oceanpar ) -GAMEL( 1999, fruitpara, fruitpar, oceanpar_xor, fruitpara,igs_m027_state, init_fruitpar, ROT0, "IGS", "Fruit Paradise (V206US)", 0, layout_oceanpar ) -GAME( 200?, cjddz, 0, cjddz_xor, cjddz, igs_m027_state, init_cjddz, ROT0, "IGS", "Chaoji Dou Dizhu", 0 ) -GAMEL( 2007, tripslot, 0, tripslot_xor, tripslot, igs_m027_state, init_tripslot, ROT0, "IGS", "Triple Slot (V200VE)", 0, layout_tripslot ) // 2007 date in internal ROM at least, could be later, default settings password is all 'start 1' +GAME( 1999, slqz3, 0, slqz3, slqz3, igs_m027_state, init_slqz3, ROT0, "IGS", "Shuang Long Qiang Zhu 3 (China, VS107C)", 0 ) +GAME( 1999, qlgs, 0, qlgs, qlgs, igs_m027_state, init_qlgs, ROT0, "IGS", "Que Long Gaoshou", MACHINE_NODEVICE_LAN ) +GAME( 1999, lhdmg, 0, lhdmg, lhdmg, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Da Manguan", 0 ) +GAME( 1999, lhdmgp, lhdmg, lhdmg, lhdmg, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Da Manguan Plus", 0 ) +GAME( 1999, lhzb3, 0, lhdmg, lhzb3, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Zhengba III", 0 ) +GAME( 2004, lhzb4, 0, lhzb4, lhzb4, igs_m027_state, init_lhzb4, ROT0, "IGS", "Long Hu Zhengba 4", 0 ) +GAME( 1999, lthy, 0, lthy, lthy, igs_m027_state, init_lthy, ROT0, "IGS", "Long Teng Hu Yue", MACHINE_NODEVICE_LAN ) +GAME( 2000, zhongguo, 0, zhongguo, zhongguo, igs_m027_state, init_zhongguo, ROT0, "IGS", "Zhongguo Chu Da D", 0 ) +GAMEL( 200?, jking02, 0, jking02, jking02, igs_m027_state, init_jking02, ROT0, "IGS", "Jungle King 2002 (V209US)", MACHINE_NODEVICE_LAN, layout_jking02 ) +GAME( 2003, mgzz, 0, mgzz, mgzz, igs_m027_state, init_mgzz, ROT0, "IGS", "Manguan Zhizun (V101CN)", 0 ) +GAME( 2003, mgzza, mgzz, mgzz, mgzza, igs_m027_state, init_mgzz, ROT0, "IGS", "Manguan Zhizun (V100CN)", 0 ) +GAME( 2007, mgcs3, 0, lhzb4, mgcs3, igs_m027_state, init_mgcs3, ROT0, "IGS", "Manguan Caishen 3 (V101CN)", 0 ) +GAMEL( 1999, oceanpar, 0, oceanpar, oceanpar, igs_m027_state, init_oceanpar, ROT0, "IGS", "Ocean Paradise (V105US)", 0, layout_oceanpar ) // 1999 copyright in ROM +GAMEL( 1999, oceanpara, oceanpar, oceanpar, oceanpara,igs_m027_state, init_oceanpar, ROT0, "IGS", "Ocean Paradise (V101US)", 0, layout_oceanpar ) // 1999 copyright in ROM +GAMEL( 1999, fruitpar, 0, oceanpar, oceanpar, igs_m027_state, init_fruitpar, ROT0, "IGS", "Fruit Paradise (V214)", 0, layout_oceanpar ) +GAMEL( 1999, fruitpara, fruitpar, oceanpar, fruitpara,igs_m027_state, init_fruitpar, ROT0, "IGS", "Fruit Paradise (V206US)", 0, layout_oceanpar ) +GAME( 200?, cjddz, 0, cjddz, cjddz, igs_m027_state, init_cjddz, ROT0, "IGS", "Chaoji Dou Dizhu", 0 ) +GAMEL( 2007, tripslot, 0, tripslot, tripslot, igs_m027_state, init_tripslot, ROT0, "IGS", "Triple Slot (V200VE)", 0, layout_tripslot ) // 2007 date in internal ROM at least, could be later, default settings password is all 'start 1' // this has a 2nd 8255 GAME( 2001, extradrw, 0, extradrw, base, igs_m027_state, init_extradrw, ROT0, "IGS", "Extra Draw (V100VE)", MACHINE_NOT_WORKING ) // these have an IGS025 protection device instead of the 8255 -GAME( 2002, chessc2, 0, chessc2_xor, chessc2, igs_m027_state, init_chessc2, ROT0, "IGS", "Chess Challenge II", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) +GAME( 2002, chessc2, 0, chessc2, chessc2, igs_m027_state, init_chessc2, ROT0, "IGS", "Chess Challenge II", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // Incomplete dumps -GAME( 1999, amazonia, 0, m027, amazonia, igs_m027_state, init_amazonia, ROT0, "IGS", "Amazonia King (V104BR)", MACHINE_NOT_WORKING ) -GAME( 1999, amazonkp, amazonia, m027, amazonia, igs_m027_state, init_amazonia, ROT0, "IGS", "Amazonia King Plus (V204BR)", MACHINE_NOT_WORKING ) -GAME( 2005, olympic5, 0, m027, base, igs_m027_state, init_olympic5, ROT0, "IGS", "Olympic 5 (V112US)", MACHINE_NOT_WORKING ) // IGS FOR V112US 2005 02 14 -GAME( 2003, olympic5a, olympic5, m027, base, igs_m027_state, init_olympic5, ROT0, "IGS", "Olympic 5 (V107US)", MACHINE_NOT_WORKING ) // IGS FOR V107US 2003 10 2 -GAME( 200?, luckycrs, 0, m027, base, igs_m027_state, init_luckycrs, ROT0, "IGS", "Lucky Cross (V106SA)", MACHINE_NOT_WORKING ) -GAME( 2003, amazoni2, 0, m027, base, igs_m027_state, init_amazoni2, ROT0, "IGS", "Amazonia King II (V202BR)", MACHINE_NOT_WORKING ) -GAME( 2002, sdwx, 0, m027, base, igs_m027_state, init_sdwx, ROT0, "IGS", "Sheng Dan Wu Xian", MACHINE_NOT_WORKING ) // aka Christmas 5 Line? (or Amazonia King II, shares roms at least?) -GAME( 200?, klxyj, 0, m027, base, igs_m027_state, init_klxyj, ROT0, "IGS", "Kuai Le Xi You Ji", MACHINE_NOT_WORKING ) +GAME( 1999, amazonia, 0, m027_1ppi, amazonia, igs_m027_state, init_amazonia, ROT0, "IGS", "Amazonia King (V104BR)", MACHINE_NOT_WORKING ) +GAME( 1999, amazonkp, amazonia, m027_1ppi, amazonia, igs_m027_state, init_amazonia, ROT0, "IGS", "Amazonia King Plus (V204BR)", MACHINE_NOT_WORKING ) +GAME( 2005, olympic5, 0, m027_1ppi, base, igs_m027_state, init_olympic5, ROT0, "IGS", "Olympic 5 (V112US)", MACHINE_NOT_WORKING ) // IGS FOR V112US 2005 02 14 +GAME( 2003, olympic5a, olympic5, m027_1ppi, base, igs_m027_state, init_olympic5, ROT0, "IGS", "Olympic 5 (V107US)", MACHINE_NOT_WORKING ) // IGS FOR V107US 2003 10 2 +GAME( 200?, luckycrs, 0, m027_1ppi, base, igs_m027_state, init_luckycrs, ROT0, "IGS", "Lucky Cross (V106SA)", MACHINE_NOT_WORKING ) +GAME( 2003, amazoni2, 0, m027_1ppi, base, igs_m027_state, init_amazoni2, ROT0, "IGS", "Amazonia King II (V202BR)", MACHINE_NOT_WORKING ) +GAME( 2002, sdwx, 0, m027_1ppi, base, igs_m027_state, init_sdwx, ROT0, "IGS", "Sheng Dan Wu Xian", MACHINE_NOT_WORKING ) // aka Christmas 5 Line? (or Amazonia King II, shares roms at least?) +GAME( 200?, klxyj, 0, m027_1ppi, base, igs_m027_state, init_klxyj, ROT0, "IGS", "Kuai Le Xi You Ji", MACHINE_NOT_WORKING ) // these have an IGS025 protection device instead of the 8255 -GAME( 200?, gonefsh2, 0, m027, base, igs_m027_state, init_gonefsh2, ROT0, "IGS", "Gone Fishing 2", MACHINE_NOT_WORKING ) +GAME( 200?, gonefsh2, 0, m027_noppi,base, igs_m027_state, init_gonefsh2, ROT0, "IGS", "Gone Fishing 2", MACHINE_NOT_WORKING ) diff --git a/src/mame/igs/igs_m027_link.cpp b/src/mame/igs/igs_m027_link.cpp index 17cfa3fe7c2..1c51357b473 100644 --- a/src/mame/igs/igs_m027_link.cpp +++ b/src/mame/igs/igs_m027_link.cpp @@ -125,7 +125,6 @@ Notes: #include "pgmcrypt.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "cpu/m68000/m68000.h" #include "machine/nvram.h" #include "machine/timer.h" diff --git a/src/mame/igs/igs_m027xa.cpp b/src/mame/igs/igs_m027xa.cpp index 5b01be7adcf..a9355bce575 100644 --- a/src/mame/igs/igs_m027xa.cpp +++ b/src/mame/igs/igs_m027xa.cpp @@ -18,8 +18,6 @@ apparently attempting serial communication with something. #include "pgmcrypt.h" #include "xamcu.h" -#include "cpu/arm7/arm7core.h" - #include "machine/i8255.h" #include "machine/nvram.h" #include "machine/ticket.h" @@ -44,7 +42,6 @@ class igs_m027xa_state : public driver_device public: igs_m027xa_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_igs_mainram(*this, "igs_mainram"), m_maincpu(*this, "maincpu"), m_xa(*this, "xa"), m_ppi(*this, "ppi8255"), @@ -73,7 +70,6 @@ protected: virtual void video_start() override; private: - optional_shared_ptr m_igs_mainram; required_device m_maincpu; required_device m_xa; required_device m_ppi; @@ -93,8 +89,6 @@ private: bool m_irq_from_igs031; - u32 m_igs_40000014; - TIMER_DEVICE_CALLBACK_MEMBER(interrupt); void pgm_create_dummy_internal_arm_region(); @@ -111,8 +105,6 @@ private: void output_w(u8 data); void lamps_w(u8 data); - void igs_40000014_w(offs_t offset, u32 data, u32 mem_mask); - void xa_irq(int state); u32 gpio_r(); @@ -125,8 +117,6 @@ private: void igs_m027xa_state::machine_reset() { m_irq_from_igs031 = false; - - m_igs_40000014 = 0; } void igs_m027xa_state::machine_start() @@ -139,8 +129,6 @@ void igs_m027xa_state::machine_start() save_item(NAME(m_io_select)); save_item(NAME(m_irq_from_igs031)); - - save_item(NAME(m_igs_40000014)); } void igs_m027xa_state::video_start() @@ -157,14 +145,13 @@ void igs_m027xa_state::video_start() void igs_m027xa_state::main_map(address_map &map) { map(0x08000000, 0x0807ffff).rom().region("user1", 0); // Game ROM - map(0x10000000, 0x100003ff).ram().share("igs_mainram"); // main RAM for ASIC? + map(0x18000000, 0x18007fff).ram().mirror(0xf8000).share("nvram"); map(0x38000000, 0x38007fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)); map(0x38008000, 0x38008003).umask32(0x000000ff).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); map(0x38009000, 0x38009003).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); map(0x3800c000, 0x3800c003).umask32(0x000000ff).w(FUNC(igs_m027xa_state::oki_bank_w)); - map(0x40000014, 0x40000017).w(FUNC(igs_m027xa_state::igs_40000014_w)); map(0x50000000, 0x500003ff).umask32(0x000000ff).w(FUNC(igs_m027xa_state::xor_table_w)); @@ -378,12 +365,6 @@ void igs_m027xa_state::lamps_w(u8 data) } -void igs_m027xa_state::igs_40000014_w(offs_t offset, u32 data, u32 mem_mask) -{ - // sets bit 1 before waiting on FIRQ, maybe it's an enable here? - m_igs_40000014 = data; -} - u32 igs_m027xa_state::gpio_r() { u32 ret = m_io_test[2].read_safe(0xfffff); @@ -418,7 +399,7 @@ void igs_m027xa_state::io_select_w(u8 data) void igs_m027xa_state::xa_irq(int state) { if (state) - m_maincpu->trigger_irq(3); + m_maincpu->pulse_input_line(arm7_cpu_device::ARM7_IRQ_LINE, m_maincpu->minimum_quantum_time()); // TODO: when is the IRQ line cleared? } u32 igs_m027xa_state::external_rom_r(offs_t offset) @@ -438,20 +419,17 @@ TIMER_DEVICE_CALLBACK_MEMBER(igs_m027xa_state::interrupt) { int scanline = param; - // should be using m_maincpu->trigger_irq with more compelx interrupt logic? - switch (scanline) { case 0: - if (m_igs_40000014 & 1) - m_maincpu->pulse_input_line(ARM7_FIRQ_LINE, m_maincpu->minimum_quantum_time()); // vbl? + m_maincpu->pulse_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, m_maincpu->minimum_quantum_time()); // vbl? m_irq_from_igs031 = false; break; case 240: if (m_igs017_igs031->get_irq_enable()) { m_irq_from_igs031 = true; - m_maincpu->trigger_irq(3); + m_maincpu->pulse_input_line(arm7_cpu_device::ARM7_IRQ_LINE, m_maincpu->minimum_quantum_time()); // TODO: when is the IRQ line cleared? } break; } diff --git a/src/mame/igs/igs_m036.cpp b/src/mame/igs/igs_m036.cpp index 2bea1ec523f..dcf9bd9fd1e 100644 --- a/src/mame/igs/igs_m036.cpp +++ b/src/mame/igs/igs_m036.cpp @@ -63,7 +63,6 @@ check more info and photo from cjdh2.zip!!! #include "igs036crypt.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "sound/okim6295.h" #include "sound/tt5665.h" diff --git a/src/mame/igs/pgm.h b/src/mame/igs/pgm.h index 61666039d24..8a445f3a115 100644 --- a/src/mame/igs/pgm.h +++ b/src/mame/igs/pgm.h @@ -11,7 +11,6 @@ #include "pgmcrypt.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" #include "machine/gen_latch.h" diff --git a/src/mame/igs/pgm2.cpp b/src/mame/igs/pgm2.cpp index 6202560f624..6346e7c570d 100644 --- a/src/mame/igs/pgm2.cpp +++ b/src/mame/igs/pgm2.cpp @@ -683,8 +683,8 @@ INPUT_PORTS_END void pgm2_state::irq(int state) { // logerror("irq\n"); - if (state == ASSERT_LINE) m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); - else m_maincpu->set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); + if (state == ASSERT_LINE) m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); + else m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, CLEAR_LINE); } void pgm2_state::machine_start() @@ -1444,10 +1444,6 @@ void pgm2_state::init_ddpdojt() } // currently we don't know how to derive address/data xor values from real keys, so we need both -static const kov3_module_key kov3_104_key = { { 0x40,0xac,0x30,0x00,0x47,0x49,0x00,0x00 } ,{ 0xeb,0x7d,0x8d,0x90,0x2c,0xf4,0x09,0x82 }, 0x18ec71, 0xb89d }; // fake zero-key -static const kov3_module_key kov3_102_key = { { 0x49,0xac,0xb0,0xec,0x47,0x49,0x95,0x38 } ,{ 0x09,0xbd,0xf1,0x31,0xe6,0xf0,0x65,0x2b }, 0x021d37, 0x81d0 }; -static const kov3_module_key kov3_101_key = { { 0xc1,0x2c,0xc1,0xe5,0x3c,0xc1,0x59,0x9e } ,{ 0xf2,0xb2,0xf0,0x89,0x37,0xf2,0xc7,0x0b }, 0, 0xffff }; // real xor values is unknown -static const kov3_module_key kov3_100_key = { { 0x40,0xac,0x30,0x00,0x47,0x49,0x00,0x00 } ,{ 0x96,0xf0,0x91,0xe1,0xb3,0xf1,0xef,0x90 }, 0x3e8aa8, 0xc530 }; // fake zero-key void pgm2_state::init_kov3() { @@ -1472,24 +1468,40 @@ void pgm2_state::decrypt_kov3_module(u32 addrxor, u16 dataxor) void pgm2_state::init_kov3_104() { + static const kov3_module_key kov3_104_key = { + { 0x40,0xac,0x30,0x00,0x47,0x49,0x00,0x00 }, + { 0xeb,0x7d,0x8d,0x90,0x2c,0xf4,0x09,0x82 }, + 0x18ec71, 0xb89d }; // fake zero-key module_key = &kov3_104_key; init_kov3(); } void pgm2_state::init_kov3_102() { + static const kov3_module_key kov3_102_key = { + { 0x49,0xac,0xb0,0xec,0x47,0x49,0x95,0x38 }, + { 0x09,0xbd,0xf1,0x31,0xe6,0xf0,0x65,0x2b }, + 0x021d37, 0x81d0 }; module_key = &kov3_102_key; init_kov3(); } void pgm2_state::init_kov3_101() { + static const kov3_module_key kov3_101_key = { + { 0xc1,0x2c,0xc1,0xe5,0x3c,0xc1,0x59,0x9e }, + { 0xf2,0xb2,0xf0,0x89,0x37,0xf2,0xc7,0x0b }, + 0, 0xffff }; // real xor values is unknown module_key = &kov3_101_key; init_kov3(); } void pgm2_state::init_kov3_100() { + static const kov3_module_key kov3_100_key = { + { 0x40,0xac,0x30,0x00,0x47,0x49,0x00,0x00 }, + { 0x96,0xf0,0x91,0xe1,0xb3,0xf1,0xef,0x90 }, + 0x3e8aa8, 0xc530 }; // fake zero-key module_key = &kov3_100_key; init_kov3(); } diff --git a/src/mame/igs/pgm2.h b/src/mame/igs/pgm2.h index 484aa30a0a8..0e8ed984f08 100644 --- a/src/mame/igs/pgm2.h +++ b/src/mame/igs/pgm2.h @@ -5,26 +5,20 @@ #pragma once -#include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" -#include "sound/ymz770.h" #include "igs036crypt.h" -#include "screen.h" -#include "speaker.h" +#include "pgm2_memcard.h" + +#include "cpu/arm7/arm7.h" +#include "machine/atmel_arm_aic.h" #include "machine/nvram.h" #include "machine/timer.h" -#include "machine/atmel_arm_aic.h" -#include "pgm2_memcard.h" +#include "sound/ymz770.h" + #include "emupal.h" +#include "screen.h" +#include "speaker.h" #include "tilemap.h" -struct kov3_module_key -{ - u8 key[8]; - u8 sum[8]; - u32 addr_xor; // 22bit - u16 data_xor; -}; class pgm2_state : public driver_device { @@ -75,7 +69,22 @@ public: void pgm2_module_rom_map(address_map &map); void pgm2_ram_rom_map(address_map &map); void pgm2_rom_map(address_map &map); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + virtual void device_post_load() override; + private: + struct kov3_module_key + { + u8 key[8]; + u8 sum[8]; + u32 addr_xor; // 22bit + u16 data_xor; + }; + u32 unk_startup_r(); u32 rtc_r(); u32 mcu_r(offs_t offset); @@ -109,11 +118,6 @@ private: void encryption_do_w(u32 data); void sprite_encryption_w(offs_t offset, u32 data, u32 mem_mask = ~0); - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; - virtual void device_post_load() override; - TILE_GET_INFO_MEMBER(get_fg_tile_info); TILE_GET_INFO_MEMBER(get_bg_tile_info); diff --git a/src/mame/igs/pgm3.cpp b/src/mame/igs/pgm3.cpp index 8e0be99b226..7653cbbcb3c 100644 --- a/src/mame/igs/pgm3.cpp +++ b/src/mame/igs/pgm3.cpp @@ -48,7 +48,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "emupal.h" #include "screen.h" diff --git a/src/mame/igs/pgmprot_igs027a_type2.cpp b/src/mame/igs/pgmprot_igs027a_type2.cpp index 735d2553e03..f8acb3c0344 100644 --- a/src/mame/igs/pgmprot_igs027a_type2.cpp +++ b/src/mame/igs/pgmprot_igs027a_type2.cpp @@ -47,7 +47,7 @@ u32 pgm_arm_type2_state::arm7_latch_arm_r(offs_t offset, u32 mem_mask) { if (!machine().side_effects_disabled()) - m_prot->set_input_line(ARM7_FIRQ_LINE, CLEAR_LINE ); // guess + m_prot->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, CLEAR_LINE); // guess LOGPROT("%s ARM7: Latch read: %08x (%08x)\n", machine().describe_context(), m_kov2_latchdata_68k_w, mem_mask); return m_kov2_latchdata_68k_w; @@ -83,7 +83,7 @@ void pgm_arm_type2_state::arm7_latch_68k_w(offs_t offset, u16 data, u16 mem_mask LOGPROT("%s M68K: Latch write: %04x (%04x)\n", machine().describe_context(), data & 0x0000ffff, mem_mask); COMBINE_DATA(&m_kov2_latchdata_68k_w); - m_prot->set_input_line(ARM7_FIRQ_LINE, ASSERT_LINE ); // guess + m_prot->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, ASSERT_LINE); // guess } u16 pgm_arm_type2_state::arm7_ram_r(offs_t offset, u16 mem_mask) @@ -236,7 +236,7 @@ u32 pgm_arm_type2_state::ddp2_speedup_r(address_space &space) if (pc == 0x080109b4) { /* if we've hit the loop where this is read and both values are 0 then the only way out is an interrupt */ - int r4 = (m_prot->state_int(ARM7_R4)); + int r4 = (m_prot->state_int(arm7_cpu_device::ARM7_R4)); r4 += 0xe; if (r4 == 0x18002f9e) diff --git a/src/mame/igs/pgmprot_igs027a_type3.cpp b/src/mame/igs/pgmprot_igs027a_type3.cpp index 13d3f85db5e..4bcfc025e95 100644 --- a/src/mame/igs/pgmprot_igs027a_type3.cpp +++ b/src/mame/igs/pgmprot_igs027a_type3.cpp @@ -98,7 +98,7 @@ u16 pgm_arm_type3_state::svg_68k_nmi_r() void pgm_arm_type3_state::svg_68k_nmi_w(u16 data) { - m_prot->pulse_input_line(ARM7_FIRQ_LINE, m_prot->minimum_quantum_time()); + m_prot->pulse_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, m_prot->minimum_quantum_time()); } void pgm_arm_type3_state::svg_latch_68k_w(offs_t offset, u16 data, u16 mem_mask) diff --git a/src/mame/leapfrog/leapster_explorer.cpp b/src/mame/leapfrog/leapster_explorer.cpp index d6cedf6c723..4f312a7a26e 100644 --- a/src/mame/leapfrog/leapster_explorer.cpp +++ b/src/mame/leapfrog/leapster_explorer.cpp @@ -15,7 +15,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "bus/generic/slot.h" #include "bus/generic/carts.h" diff --git a/src/mame/mattel/pixtermu.cpp b/src/mame/mattel/pixtermu.cpp index 2e969ea13c9..39ae3ff2489 100644 --- a/src/mame/mattel/pixtermu.cpp +++ b/src/mame/mattel/pixtermu.cpp @@ -47,7 +47,6 @@ #include "bus/generic/carts.h" #include "bus/generic/slot.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "softlist_dev.h" diff --git a/src/mame/misc/39in1.cpp b/src/mame/misc/39in1.cpp index da0b1f90e94..8afb5a3f9fd 100644 --- a/src/mame/misc/39in1.cpp +++ b/src/mame/misc/39in1.cpp @@ -45,7 +45,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/eepromser.h" #include "machine/pxa255.h" diff --git a/src/mame/misc/3do_m.cpp b/src/mame/misc/3do_m.cpp index 1a3d63a80a3..16f50a08eea 100644 --- a/src/mame/misc/3do_m.cpp +++ b/src/mame/misc/3do_m.cpp @@ -62,7 +62,7 @@ Expansion bus stuff: #include "emu.h" #include "3do.h" -#include "cpu/arm7/arm7core.h" +#include "cpu/arm7/arm7.h" #include "debugger.h" #include "screen.h" @@ -121,7 +121,7 @@ void _3do_state::m_request_fiq(uint32_t irq_req, uint8_t type) if((m_clio.irq0 & m_clio.irq0_enable) || (m_clio.irq1 & m_clio.irq1_enable)) { //printf("Go irq %08x & %08x %08x & %08x\n",m_clio.irq0, m_clio.irq0_enable, m_clio.irq1, m_clio.irq1_enable); - m_maincpu->pulse_input_line(ARM7_FIRQ_LINE, m_maincpu->minimum_quantum_time()); + m_maincpu->pulse_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, m_maincpu->minimum_quantum_time()); } } diff --git a/src/mame/misc/belatra.cpp b/src/mame/misc/belatra.cpp index 9939959fd0e..a446c8857ce 100644 --- a/src/mame/misc/belatra.cpp +++ b/src/mame/misc/belatra.cpp @@ -46,7 +46,6 @@ Viking's Fun Mill #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/acorn_vidc.h" #include "machine/arm_iomd.h" diff --git a/src/mame/misc/nexus3d.cpp b/src/mame/misc/nexus3d.cpp index c53c7b30286..8c4573a0318 100644 --- a/src/mame/misc/nexus3d.cpp +++ b/src/mame/misc/nexus3d.cpp @@ -15,7 +15,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/nandflash.h" #include "emupal.h" #include "screen.h" @@ -125,9 +124,9 @@ void nexus3d_state::IntReq(int level) uint32_t inten = m_intmask ^ 0xffffffff; if (m_intpend & inten) - m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); else - m_maincpu->set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, CLEAR_LINE); } diff --git a/src/mame/misc/sanremmg.cpp b/src/mame/misc/sanremmg.cpp index bc3db5d4c5d..6330bb750f5 100644 --- a/src/mame/misc/sanremmg.cpp +++ b/src/mame/misc/sanremmg.cpp @@ -33,7 +33,6 @@ M30624FG (M16C/62A family) needs CPU core and dumping of internal ROM #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "emupal.h" #include "screen.h" diff --git a/src/mame/nintendo/gba.cpp b/src/mame/nintendo/gba.cpp index 93401f513c6..f483f317dcc 100644 --- a/src/mame/nintendo/gba.cpp +++ b/src/mame/nintendo/gba.cpp @@ -17,6 +17,7 @@ #include "cpu/arm7/arm7.h" #include "cpu/arm7/arm7core.h" #include "sound/gb.h" + #include "softlist_dev.h" #include "speaker.h" @@ -148,8 +149,8 @@ void gba_state::request_irq(uint32_t int_type) // master enable? if (IME & 1) { - m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); - m_maincpu->set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, CLEAR_LINE); } } } @@ -1182,12 +1183,12 @@ uint32_t gba_state::gba_10000000_r(offs_t offset, uint32_t mem_mask) { auto &mspace = m_maincpu->space(AS_PROGRAM); uint32_t data; - uint32_t pc = m_maincpu->state_int(ARM7_PC); + uint32_t pc = m_maincpu->state_int(arm7_cpu_device::ARM7_PC); if (pc >= 0x10000000) { return 0; } - uint32_t cpsr = m_maincpu->state_int(ARM7_CPSR); + uint32_t cpsr = m_maincpu->state_int(arm7_cpu_device::ARM7_CPSR); if (T_IS_SET( cpsr)) { data = mspace.read_dword(pc + 8); diff --git a/src/mame/nintendo/nds.cpp b/src/mame/nintendo/nds.cpp index 81fbcd857af..fde2e24128a 100644 --- a/src/mame/nintendo/nds.cpp +++ b/src/mame/nintendo/nds.cpp @@ -839,8 +839,8 @@ void nds_state::request_irq(int cpu, uint32_t int_type) { if (cpu == 0) { - m_arm9->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); - m_arm9->set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); + m_arm9->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); + m_arm9->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, CLEAR_LINE); } else { @@ -851,8 +851,8 @@ void nds_state::request_irq(int cpu, uint32_t int_type) m_arm7halted = false; } - m_arm7->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); - m_arm7->set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); + m_arm7->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); + m_arm7->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, CLEAR_LINE); } } } diff --git a/src/mame/nintendo/nds.h b/src/mame/nintendo/nds.h index 4e180898f93..3a483f2273e 100644 --- a/src/mame/nintendo/nds.h +++ b/src/mame/nintendo/nds.h @@ -6,7 +6,6 @@ #define MAME_NINTENDO_NDS_H #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/bankdev.h" #include "machine/timer.h" diff --git a/src/mame/nokia/nokia_3310.cpp b/src/mame/nokia/nokia_3310.cpp index fb59e8c3b60..7c44961006c 100644 --- a/src/mame/nokia/nokia_3310.cpp +++ b/src/mame/nokia/nokia_3310.cpp @@ -14,7 +14,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/intelfsh.h" #include "video/pcd8544.h" @@ -242,7 +241,7 @@ void noki3310_state::machine_reset() { // according to the boot rom disassembly here http://www.nokix.pasjagsm.pl/help/blacksphere/sub_100hardware/sub_arm/sub_bootrom.htm // flash entry point is at 0x200040, we can probably reassemble the above code, but for now this should be enough. - m_maincpu->set_state_int(ARM7_R15, 0x200040); + m_maincpu->set_state_int(arm7_cpu_device::ARM7_R15, 0x200040); memset(m_mad2_regs, 0, 0x100); m_mad2_regs[0x01] = 0x01; // power-on flag diff --git a/src/mame/pinball/sam.cpp b/src/mame/pinball/sam.cpp index 2232038c684..6df35362031 100644 --- a/src/mame/pinball/sam.cpp +++ b/src/mame/pinball/sam.cpp @@ -54,7 +54,6 @@ ToDo: *********************************************************************************************************************/ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" namespace { diff --git a/src/mame/psion/psion5.cpp b/src/mame/psion/psion5.cpp index 244b1ae00a3..e711e9392b2 100644 --- a/src/mame/psion/psion5.cpp +++ b/src/mame/psion/psion5.cpp @@ -125,8 +125,8 @@ void psion5mx_state::check_interrupts() { m_maincpu->resume(SUSPEND_REASON_HALT); } - m_maincpu->set_input_line(ARM7_FIRQ_LINE, m_pending_ints & m_int_mask & IRQ_FIQ_MASK ? ASSERT_LINE : CLEAR_LINE); - m_maincpu->set_input_line(ARM7_IRQ_LINE, m_pending_ints & m_int_mask & IRQ_IRQ_MASK ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, m_pending_ints & m_int_mask & IRQ_FIQ_MASK ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, m_pending_ints & m_int_mask & IRQ_IRQ_MASK ? ASSERT_LINE : CLEAR_LINE); } TIMER_CALLBACK_MEMBER(psion5mx_state::update_timer1) diff --git a/src/mame/psion/psion5.h b/src/mame/psion/psion5.h index 3dad0a0e415..4ecb68ee59b 100644 --- a/src/mame/psion/psion5.h +++ b/src/mame/psion/psion5.h @@ -15,7 +15,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "etna.h" #include "sound/spkrdev.h" diff --git a/src/mame/saturn/st17xx.cpp b/src/mame/saturn/st17xx.cpp index b49420e0ea3..b461d00b8e6 100644 --- a/src/mame/saturn/st17xx.cpp +++ b/src/mame/saturn/st17xx.cpp @@ -37,7 +37,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "emupal.h" #include "screen.h" diff --git a/src/mame/sega/dc.cpp b/src/mame/sega/dc.cpp index 7b4675f9d50..ba285936c23 100644 --- a/src/mame/sega/dc.cpp +++ b/src/mame/sega/dc.cpp @@ -14,7 +14,6 @@ #include "mie.h" #include "cpu/sh/sh4.h" -#include "cpu/arm7/arm7core.h" //#include "debugger.h" @@ -624,7 +623,7 @@ void dc_state::soundram_w(offs_t offset, uint16_t data, uint16_t mem_mask) void dc_state::aica_irq(int state) { - m_soundcpu->set_input_line(ARM7_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); + m_soundcpu->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); } void dc_state::sh4_aica_irq(int state) diff --git a/src/mame/sega/dc.h b/src/mame/sega/dc.h index 43532309195..6e84f024afb 100644 --- a/src/mame/sega/dc.h +++ b/src/mame/sega/dc.h @@ -12,7 +12,6 @@ #include "powervr2.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "cpu/sh/sh4.h" #include "machine/timer.h" #include "sound/aica.h" diff --git a/src/mame/sega/dccons.cpp b/src/mame/sega/dccons.cpp index 9d6a53e1f55..0d5264e85aa 100644 --- a/src/mame/sega/dccons.cpp +++ b/src/mame/sega/dccons.cpp @@ -59,7 +59,6 @@ #include "bus/ata/gdrom.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "cpu/sh/sh4.h" #include "imagedev/cdromimg.h" #include "machine/aicartc.h" diff --git a/src/mame/sega/sega_beena.cpp b/src/mame/sega/sega_beena.cpp index 2d12dd8135a..184cc6c8997 100644 --- a/src/mame/sega/sega_beena.cpp +++ b/src/mame/sega/sega_beena.cpp @@ -1679,15 +1679,15 @@ int32_t sega_9h0_0008_state::rescale_alpha_step(uint8_t step) void sega_9h0_0008_state::request_irq() { - m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); - m_maincpu->set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, CLEAR_LINE); } void sega_9h0_0008_state::request_fiq() { if (m_requested_fiq) { - m_maincpu->set_input_line(ARM7_FIRQ_LINE, ASSERT_LINE); - m_maincpu->set_input_line(ARM7_FIRQ_LINE, CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, CLEAR_LINE); m_requested_fiq = false; } diff --git a/src/mame/sharp/wizard.cpp b/src/mame/sharp/wizard.cpp index e75005ab50f..a957002686f 100644 --- a/src/mame/sharp/wizard.cpp +++ b/src/mame/sharp/wizard.cpp @@ -62,7 +62,6 @@ More info: #include "bus/generic/slot.h" #include "bus/generic/carts.h" #include "cpu/arm7/arm7.h" // wrong, needs CPU core -#include "cpu/arm7/arm7core.h" #include "screen.h" #include "softlist_dev.h" diff --git a/src/mame/sharp/zaurus.cpp b/src/mame/sharp/zaurus.cpp index 3c22565efaa..1481b9bfb95 100644 --- a/src/mame/sharp/zaurus.cpp +++ b/src/mame/sharp/zaurus.cpp @@ -1401,7 +1401,6 @@ Note: #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/locomo.h" #include "machine/pxa255.h" #include "machine/sa1110.h" @@ -1417,8 +1416,7 @@ Note: #define PXA255_CLOCK 400000000 #define PXA270_CLOCK 416000000 -namespace -{ +namespace { class zaurus_state : public driver_device { diff --git a/src/mame/skeleton/cxhumax.cpp b/src/mame/skeleton/cxhumax.cpp index 5c32f100af3..ad931cc4d49 100644 --- a/src/mame/skeleton/cxhumax.cpp +++ b/src/mame/skeleton/cxhumax.cpp @@ -95,7 +95,7 @@ void cxhumax_state::cx_gxa_w(offs_t offset, uint32_t data, uint32_t mem_mask) if((m_intctrl_regs[INTREG(INTGROUP2, INTIRQ)] & m_intctrl_regs[INTREG(INTGROUP2, INTENABLE)]) || (m_intctrl_regs[INTREG(INTGROUP1, INTIRQ)] & m_intctrl_regs[INTREG(INTGROUP1, INTENABLE)])) - m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); break; default: @@ -298,7 +298,7 @@ TIMER_CALLBACK_MEMBER(cxhumax_state::timer_tick) /* Interrupt if Timer interrupt is not masked in ITC_INTENABLE_REG */ if (m_intctrl_regs[INTREG(INTGROUP2, INTENABLE)] & INT_TIMER_BIT) - m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); } } attotime period = attotime::from_hz(XTAL(54'000'000))*m_timer_regs.timer[param].timebase; @@ -394,7 +394,7 @@ void cxhumax_state::cx_uart2_w(offs_t offset, uint32_t data, uint32_t mem_mask) /* If INT is enabled at INT Ctrl raise it */ if(m_intctrl_regs[INTREG(INTGROUP1, INTENABLE)]&INT_UART2_BIT) { - m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); } } } @@ -525,9 +525,9 @@ void cxhumax_state::cx_intctrl_w(offs_t offset, uint32_t data, uint32_t mem_mask /* check if */ if((m_intctrl_regs[INTREG(INTGROUP2, INTIRQ)] & m_intctrl_regs[INTREG(INTGROUP2, INTENABLE)]) || (m_intctrl_regs[INTREG(INTGROUP1, INTIRQ)] & m_intctrl_regs[INTREG(INTGROUP1, INTENABLE)])) - m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); else - m_maincpu->set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, CLEAR_LINE); } @@ -711,7 +711,7 @@ void cxhumax_state::cx_i2c1_w(offs_t offset, uint32_t data, uint32_t mem_mask) m_intctrl_regs[INTREG(INTGROUP1, INTSTATSET)] |= 1<<7; if (m_intctrl_regs[INTREG(INTGROUP1, INTENABLE)] & (1<<7)) { LOG("%s: (I2C1) Int\n", machine().describe_context()); - m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); } break; case I2C_STAT_REG: diff --git a/src/mame/skeleton/cxhumax.h b/src/mame/skeleton/cxhumax.h index d94b4245e1f..a502321a8da 100644 --- a/src/mame/skeleton/cxhumax.h +++ b/src/mame/skeleton/cxhumax.h @@ -6,9 +6,8 @@ #pragma once #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" -#include "machine/intelfsh.h" #include "machine/i2cmem.h" +#include "machine/intelfsh.h" #include "machine/terminal.h" diff --git a/src/mame/skeleton/digiblast.cpp b/src/mame/skeleton/digiblast.cpp index baac494ecf2..d9de05fcd33 100644 --- a/src/mame/skeleton/digiblast.cpp +++ b/src/mame/skeleton/digiblast.cpp @@ -10,7 +10,6 @@ #include "bus/generic/slot.h" #include "bus/generic/carts.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/s3c2410.h" #include "emupal.h" diff --git a/src/mame/skeleton/easy_karaoke.cpp b/src/mame/skeleton/easy_karaoke.cpp index f2a12428dc9..6d7cd303587 100644 --- a/src/mame/skeleton/easy_karaoke.cpp +++ b/src/mame/skeleton/easy_karaoke.cpp @@ -82,7 +82,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "bus/generic/slot.h" #include "bus/generic/carts.h" @@ -164,7 +163,7 @@ void easy_karaoke_cartslot_state::machine_start() void ivl_karaoke_state::machine_reset() { - m_maincpu->set_state_int(ARM7_R15, 0x04000000); + m_maincpu->set_state_int(arm7_cpu_device::ARM7_R15, 0x04000000); } DEVICE_IMAGE_LOAD_MEMBER(easy_karaoke_cartslot_state::cart_load) diff --git a/src/mame/skeleton/koto_zevio.cpp b/src/mame/skeleton/koto_zevio.cpp index 85d06f18721..d26fcce8135 100644 --- a/src/mame/skeleton/koto_zevio.cpp +++ b/src/mame/skeleton/koto_zevio.cpp @@ -6,7 +6,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "screen.h" #include "speaker.h" diff --git a/src/mame/skeleton/sansa_fuze.cpp b/src/mame/skeleton/sansa_fuze.cpp index 945f7805aca..b4f00e3c9e0 100644 --- a/src/mame/skeleton/sansa_fuze.cpp +++ b/src/mame/skeleton/sansa_fuze.cpp @@ -10,7 +10,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" namespace { diff --git a/src/mame/sony/news_r3k.cpp b/src/mame/sony/news_r3k.cpp index ebebf0765fe..cca02ed93d8 100644 --- a/src/mame/sony/news_r3k.cpp +++ b/src/mame/sony/news_r3k.cpp @@ -11,10 +11,10 @@ * - http://bitsavers.org/pdf/sony/news/Sony_NEWS_Technical_Manual_3ed_199103.pdf * * TODO: - * - lcd controller - * - screen params + * - LCD controller + * - screen timing parameters * - floppy density/eject - * - centronics port + * - Centronics port * - sound * - other models, including slots/cards */ diff --git a/src/mame/sony/pockstat.cpp b/src/mame/sony/pockstat.cpp index 83fb5a682f6..b72d192ba17 100644 --- a/src/mame/sony/pockstat.cpp +++ b/src/mame/sony/pockstat.cpp @@ -34,7 +34,6 @@ #include "bus/generic/carts.h" #include "bus/generic/slot.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "sound/dac.h" #include "emupal.h" #include "screen.h" @@ -336,21 +335,21 @@ void pockstat_state::set_interrupt_line(uint32_t line, int state) const uint32_t new_irq = m_intc_regs.hold & m_intc_regs.enable & INT_IRQ_MASK; if (new_irq) { - m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, ASSERT_LINE); } else { - m_maincpu->set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_IRQ_LINE, CLEAR_LINE); } const uint32_t new_fiq = m_intc_regs.hold & m_intc_regs.enable & INT_FIQ_MASK; if (new_fiq) { - m_maincpu->set_input_line(ARM7_FIRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, ASSERT_LINE); } else { - m_maincpu->set_input_line(ARM7_FIRQ_LINE, CLEAR_LINE); + m_maincpu->set_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, CLEAR_LINE); } } @@ -934,7 +933,7 @@ void pockstat_state::machine_start() void pockstat_state::machine_reset() { - m_maincpu->set_state_int(ARM7_R15, 0x4000000); + m_maincpu->set_state_int(arm7_cpu_device::ARM7_R15, 0x4000000); m_flash_write_enable_count = 0; m_flash_write_count = 0; diff --git a/src/mame/tvgames/generalplus_gpl32612.cpp b/src/mame/tvgames/generalplus_gpl32612.cpp index 5afd315952f..af190c1e141 100644 --- a/src/mame/tvgames/generalplus_gpl32612.cpp +++ b/src/mame/tvgames/generalplus_gpl32612.cpp @@ -23,7 +23,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "bus/generic/slot.h" #include "bus/generic/carts.h" #include "softlist_dev.h" diff --git a/src/mame/tvgames/gpm4530a_lexibook_jg7420.cpp b/src/mame/tvgames/gpm4530a_lexibook_jg7420.cpp index 9ce8574ad15..fee77505602 100644 --- a/src/mame/tvgames/gpm4530a_lexibook_jg7420.cpp +++ b/src/mame/tvgames/gpm4530a_lexibook_jg7420.cpp @@ -6,7 +6,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "machine/spi_sdcard.h" #include "screen.h" diff --git a/src/mame/tvgames/monkey_king_3b.cpp b/src/mame/tvgames/monkey_king_3b.cpp index 7f92741565b..ca19b80f97c 100644 --- a/src/mame/tvgames/monkey_king_3b.cpp +++ b/src/mame/tvgames/monkey_king_3b.cpp @@ -65,7 +65,6 @@ TODO: #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "emupal.h" #include "screen.h" diff --git a/src/mame/tvgames/titan_soc.cpp b/src/mame/tvgames/titan_soc.cpp index 6403e66dece..f6a7629c85a 100644 --- a/src/mame/tvgames/titan_soc.cpp +++ b/src/mame/tvgames/titan_soc.cpp @@ -64,7 +64,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "emupal.h" #include "screen.h" diff --git a/src/mame/vtech/innotv_innotabmax.cpp b/src/mame/vtech/innotv_innotabmax.cpp index 72e3925f40c..6aa0a7b0816 100644 --- a/src/mame/vtech/innotv_innotabmax.cpp +++ b/src/mame/vtech/innotv_innotabmax.cpp @@ -60,7 +60,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "bus/generic/slot.h" #include "bus/generic/carts.h" diff --git a/src/mame/vtech/storio.cpp b/src/mame/vtech/storio.cpp index d4d85fe0b1e..765b98f58d3 100644 --- a/src/mame/vtech/storio.cpp +++ b/src/mame/vtech/storio.cpp @@ -24,7 +24,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "bus/generic/slot.h" #include "bus/generic/carts.h" diff --git a/src/mame/vtech/vtech_innotab.cpp b/src/mame/vtech/vtech_innotab.cpp index 79ed5bf2264..022a681937e 100644 --- a/src/mame/vtech/vtech_innotab.cpp +++ b/src/mame/vtech/vtech_innotab.cpp @@ -15,7 +15,6 @@ #include "emu.h" #include "cpu/arm7/arm7.h" -#include "cpu/arm7/arm7core.h" #include "bus/generic/slot.h" #include "bus/generic/carts.h" -- cgit v1.2.3