From 5d36ef2d304a22ebc19b916eab35830a301cc1cb Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Fri, 29 Dec 2017 13:43:25 +0100 Subject: [PATCH] fixed build errors, nw --- scripts/src/cpu.lua | 2 +- src/devices/cpu/e132xs/e132xs.cpp | 25 +++++++++++++++++++++++ src/devices/cpu/e132xs/e132xs.h | 3 +++ src/devices/cpu/e132xs/e132xsfe.h | 34 +++++++++++++++++++++++++++++++ 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 src/devices/cpu/e132xs/e132xsfe.h diff --git a/scripts/src/cpu.lua b/scripts/src/cpu.lua index a0f45cea54f..c5992ad7db3 100644 --- a/scripts/src/cpu.lua +++ b/scripts/src/cpu.lua @@ -13,7 +13,7 @@ -- Dynamic recompiler objects -------------------------------------------------- -if (CPUS["SH"]~=null or CPUS["MIPS"]~=null or CPUS["POWERPC"]~=null or CPUS["RSP"]~=null or CPUS["ARM7"]~=null or CPUS["ADSP21062"]~=null or CPUS["MB86235"]~=null) then +if (CPUS["E1"]~=null or CPUS["SH"]~=null or CPUS["MIPS"]~=null or CPUS["POWERPC"]~=null or CPUS["RSP"]~=null or CPUS["ARM7"]~=null or CPUS["ADSP21062"]~=null or CPUS["MB86235"]~=null) then files { MAME_DIR .. "src/devices/cpu/drcbec.cpp", MAME_DIR .. "src/devices/cpu/drcbec.h", diff --git a/src/devices/cpu/e132xs/e132xs.cpp b/src/devices/cpu/e132xs/e132xs.cpp index 82fa7c839d4..056b7dfad4f 100644 --- a/src/devices/cpu/e132xs/e132xs.cpp +++ b/src/devices/cpu/e132xs/e132xs.cpp @@ -144,6 +144,7 @@ #include "emu.h" #include "e132xs.h" +#include "e132xsfe.h" #include "debugger.h" @@ -152,6 +153,9 @@ //#define VERBOSE 1 #include "logmacro.h" +/* size of the execution code cache */ +#define CACHE_SIZE (32 * 1024 * 1024) + //************************************************************************** // INTERNAL ADDRESS MAP //************************************************************************** @@ -199,6 +203,27 @@ hyperstone_device::hyperstone_device(const machine_config &mconfig, const char * , m_program_config("program", ENDIANNESS_BIG, prg_data_width, 32, 0, internal_map) , m_io_config("io", ENDIANNESS_BIG, io_data_width, 15) , m_icount(0) + , m_cache(CACHE_SIZE + sizeof(hyperstone_device)) + , m_drcuml(nullptr) + , m_drcfe(nullptr) + , m_drcoptions(0) + , m_cache_dirty(0) + , m_entry(nullptr) + , m_nocode(nullptr) + , m_out_of_cycles(nullptr) + , m_drc_arg0(0) + , m_drc_arg1(0) + , m_drc_arg2(0) + , m_drc_arg3(0) + , m_mem_read8(nullptr) + , m_mem_write8(nullptr) + , m_mem_read16(nullptr) + , m_mem_write16(nullptr) + , m_mem_read32(nullptr) + , m_mem_write32(nullptr) + , m_io_read32(nullptr) + , m_io_write32(nullptr) + , m_enable_drc(false) { } diff --git a/src/devices/cpu/e132xs/e132xs.h b/src/devices/cpu/e132xs/e132xs.h index 0e144945fa7..8b38862f3c1 100644 --- a/src/devices/cpu/e132xs/e132xs.h +++ b/src/devices/cpu/e132xs/e132xs.h @@ -6,6 +6,9 @@ #pragma once #include "32xsdasm.h" +#include "cpu/drcfe.h" +#include "cpu/drcuml.h" +#include "cpu/drcumlsh.h" /* A note about clock multipliers and dividers: diff --git a/src/devices/cpu/e132xs/e132xsfe.h b/src/devices/cpu/e132xs/e132xsfe.h new file mode 100644 index 00000000000..5301ee13ca1 --- /dev/null +++ b/src/devices/cpu/e132xs/e132xsfe.h @@ -0,0 +1,34 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +#ifndef MAME_CPU_E132XS_E132XSFE_H +#define MAME_CPU_E132XS_E132XSFE_H + +#pragma once + +#include "e132xs.h" +#include "cpu/drcfe.h" + +class e132xs_frontend : public drc_frontend +{ +public: + e132xs_frontend(hyperstone_device *e132xs, uint32_t window_start, uint32_t window_end, uint32_t max_sequence); + void flush(); + +protected: + // required overrides + virtual bool describe(opcode_desc &desc, const opcode_desc *prev) override; + +private: + inline uint32_t imm_length(opcode_desc &desc, uint16_t op); + inline uint16_t read_word(opcode_desc &desc); + inline uint16_t read_imm1(opcode_desc &desc); + inline uint16_t read_imm2(opcode_desc &desc); + inline uint32_t read_ldstxx_imm(opcode_desc &desc); + inline uint32_t read_limm(opcode_desc &desc, uint16_t op); + inline int32_t decode_pcrel(opcode_desc &desc, uint16_t op); + inline int32_t decode_call(opcode_desc &desc); + + hyperstone_device *m_cpu; +}; + +#endif /* MAME_CPU_E132XS_E132XSFE_H */ \ No newline at end of file