summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2021-02-14 11:05:57 -0500
committer AJR <ajrhacker@users.noreply.github.com>2021-02-14 11:05:57 -0500
commitbc0146c2038c46f789a246d5616afd7c425157f3 (patch)
treeb4d39194034b4c6e56ccd4035d25636034be43ca /src/devices/cpu
parent91310bcdeb7ab0ff661738b212017bf836f4e8ad (diff)
Eliminate ARRAY_LENGTH template in favor of C++17's std::size
* osdcomm.h: Move definition of EQUIVALENT_ARRAY to coretmpl.h * sharc.cpp, gt64xxx.cpp, ym2413.cpp, gb_lcd.cpp, snes_ppu.cpp: Use STRUCT_MEMBER for save state registration * gio/newport.cpp, megadrive/svp.cpp, nes_ctrl/bcbattle.cpp, arm7.cpp, tms9995.cpp, pckeybrd.cpp, sa1110.cpp, sa1111.cpp, jangou_blitter.cpp, vic4567.cpp: Use std::fill(_n) instead of memset * emucore.h: Remove obsolete typedef
Diffstat (limited to 'src/devices/cpu')
-rw-r--r--src/devices/cpu/arm7/arm7.cpp46
-rw-r--r--src/devices/cpu/arm7/arm7drc.hxx8
-rw-r--r--src/devices/cpu/cosmac/cosmac.cpp4
-rw-r--r--src/devices/cpu/drcbec.cpp6
-rw-r--r--src/devices/cpu/drcbeut.cpp4
-rw-r--r--src/devices/cpu/drcbex64.cpp14
-rw-r--r--src/devices/cpu/drcbex86.cpp16
-rw-r--r--src/devices/cpu/drcuml.cpp32
-rw-r--r--src/devices/cpu/dsp16/dsp16fe.cpp12
-rw-r--r--src/devices/cpu/dspp/dsppdrc.cpp4
-rw-r--r--src/devices/cpu/i386/i386dasm.cpp2
-rw-r--r--src/devices/cpu/i8085/i8085.cpp2
-rw-r--r--src/devices/cpu/m6502/m6500_1.cpp2
-rw-r--r--src/devices/cpu/m6809/6x09dasm.cpp4
-rw-r--r--src/devices/cpu/mb86235/mb86235drc.cpp4
-rw-r--r--src/devices/cpu/mips/mips1.cpp20
-rw-r--r--src/devices/cpu/mips/mips3drc.cpp8
-rw-r--r--src/devices/cpu/mips/r4000.cpp20
-rw-r--r--src/devices/cpu/nec/necdasm.cpp2
-rw-r--r--src/devices/cpu/powerpc/ppccom.cpp12
-rw-r--r--src/devices/cpu/powerpc/ppcdrc.cpp12
-rw-r--r--src/devices/cpu/romp/romp.cpp2
-rw-r--r--src/devices/cpu/rsp/rspdrc.cpp4
-rw-r--r--src/devices/cpu/sh/sh.cpp8
-rw-r--r--src/devices/cpu/sharc/sharc.cpp57
-rw-r--r--src/devices/cpu/sharc/sharcdrc.cpp4
-rw-r--r--src/devices/cpu/sparc/sparc.cpp6
-rw-r--r--src/devices/cpu/tms32031/tms32031.cpp2
-rw-r--r--src/devices/cpu/tms34010/tms34010.cpp2
-rw-r--r--src/devices/cpu/tms9900/tms9995.cpp2
-rw-r--r--src/devices/cpu/uml.cpp2
-rw-r--r--src/devices/cpu/unsp/unsp.cpp2
32 files changed, 165 insertions, 160 deletions
diff --git a/src/devices/cpu/arm7/arm7.cpp b/src/devices/cpu/arm7/arm7.cpp
index 45ef964463f..107bae63a95 100644
--- a/src/devices/cpu/arm7/arm7.cpp
+++ b/src/devices/cpu/arm7/arm7.cpp
@@ -92,7 +92,7 @@ arm7_cpu_device::arm7_cpu_device(const machine_config &mconfig, device_type type
, m_vectorbase(0)
, m_pc(0)
{
- memset(m_r, 0x00, sizeof(m_r));
+ std::fill(std::begin(m_r), std::end(m_r), 0);
uint32_t arch = ARM9_COPRO_ID_ARCH_V4;
if (m_archFlags & ARCHFLAG_T)
arch = ARM9_COPRO_ID_ARCH_V4T;
@@ -102,9 +102,9 @@ arm7_cpu_device::arm7_cpu_device(const machine_config &mconfig, device_type type
// TODO[RH]: Default to 3-instruction prefetch for unknown ARM variants. Derived cores should set the appropriate value in their constructors.
m_insn_prefetch_depth = 3;
- memset(m_insn_prefetch_buffer, 0, sizeof(uint32_t) * 3);
- memset(m_insn_prefetch_address, 0, sizeof(uint32_t) * 3);
- memset(m_insn_prefetch_valid, 0, sizeof(bool) * 3);
+ std::fill_n(&m_insn_prefetch_buffer[0], 3, 0);
+ std::fill_n(&m_insn_prefetch_address[0], 3, 0);
+ std::fill_n(&m_insn_prefetch_valid[0], 3, false);
m_insn_prefetch_count = 0;
m_insn_prefetch_index = 0;
m_tlb_log = 0;
@@ -198,8 +198,8 @@ arm946es_cpu_device::arm946es_cpu_device(const machine_config &mconfig, device_t
| ARM9_COPRO_ID_PART_ARM946
| ARM9_COPRO_ID_STEP_ARM946_A0;
- memset(ITCM, 0, 0x8000);
- memset(DTCM, 0, 0x4000);
+ std::fill_n(&ITCM[0], 0x8000, 0);
+ std::fill_n(&DTCM[0], 0x4000, 0);
cp15_itcm_base = 0xffffffff;
cp15_itcm_size = 0;
@@ -1080,7 +1080,7 @@ void arm7_cpu_device::state_string_export(const device_state_entry &entry, std::
void arm7_cpu_device::device_reset()
{
- memset(m_r, 0, sizeof(m_r));
+ std::fill(std::begin(m_r), std::end(m_r), 0);
m_pendingIrq = false;
m_pendingFiq = false;
m_pendingAbtD = false;
@@ -1097,7 +1097,7 @@ void arm7_cpu_device::device_reset()
m_fcsePID = 0;
m_pid_offset = 0;
m_domainAccessControl = 0;
- memset(m_decoded_access_control, 0, sizeof(uint8_t) * 16);
+ std::fill_n(&m_decoded_access_control[0], 16, 0);
/* start up in SVC mode with interrupts disabled. */
m_r[eCPSR] = I_MASK | F_MASK | 0x10;
@@ -1106,10 +1106,26 @@ void arm7_cpu_device::device_reset()
m_impstate.cache_dirty = true;
- memset(m_dtlb_entries, 0, sizeof(tlb_entry) * ARRAY_LENGTH(m_dtlb_entries));
- memset(m_itlb_entries, 0, sizeof(tlb_entry) * ARRAY_LENGTH(m_itlb_entries));
- memset(m_dtlb_entry_index, 0, ARRAY_LENGTH(m_dtlb_entry_index));
- memset(m_itlb_entry_index, 0, ARRAY_LENGTH(m_itlb_entry_index));
+ for (auto &entry : m_dtlb_entries)
+ {
+ entry.valid = false;
+ entry.domain = 0;
+ entry.access = 0;
+ entry.table_bits = 0;
+ entry.base_addr = 0;
+ entry.type = 0;
+ }
+ for (auto &entry : m_itlb_entries)
+ {
+ entry.valid = false;
+ entry.domain = 0;
+ entry.access = 0;
+ entry.table_bits = 0;
+ entry.base_addr = 0;
+ entry.type = 0;
+ }
+ std::fill(std::begin(m_dtlb_entry_index), std::end(m_dtlb_entry_index), 0);
+ std::fill(std::begin(m_itlb_entry_index), std::end(m_itlb_entry_index), 0);
}
void arm1176jzf_s_cpu_device::device_reset()
@@ -1789,21 +1805,21 @@ void arm7_cpu_device::arm7_rt_w_callback(offs_t offset, uint32_t data)
{
case 5:
// Flush I
- for (uint32_t i = 0; i < ARRAY_LENGTH(m_itlb_entries); i++)
+ for (uint32_t i = 0; i < std::size(m_itlb_entries); i++)
{
m_itlb_entries[i].valid = false;
}
break;
case 6:
// Flush D
- for (uint32_t i = 0; i < ARRAY_LENGTH(m_dtlb_entries); i++)
+ for (uint32_t i = 0; i < std::size(m_dtlb_entries); i++)
{
m_dtlb_entries[i].valid = false;
}
break;
case 7:
// Flush I+D
- for (uint32_t i = 0; i < ARRAY_LENGTH(m_dtlb_entries); i++)
+ for (uint32_t i = 0; i < std::size(m_dtlb_entries); i++)
{
m_dtlb_entries[i].valid = false;
m_itlb_entries[i].valid = false;
diff --git a/src/devices/cpu/arm7/arm7drc.hxx b/src/devices/cpu/arm7/arm7drc.hxx
index 8edd44438bd..8fb6a8a5aa4 100644
--- a/src/devices/cpu/arm7/arm7drc.hxx
+++ b/src/devices/cpu/arm7/arm7drc.hxx
@@ -95,7 +95,7 @@ void arm7_cpu_device::load_fast_iregs(drcuml_block &block)
{
int regnum;
- for (regnum = 0; regnum < ARRAY_LENGTH(m_impstate.regmap); regnum++)
+ for (regnum = 0; regnum < std::size(m_impstate.regmap); regnum++)
if (m_impstate.regmap[regnum].is_int_register())
UML_DMOV(block, uml::ireg(m_impstate.regmap[regnum].ireg() - uml::REG_I0), uml::mem(&m_r[regnum]));
}
@@ -110,7 +110,7 @@ void arm7_cpu_device::save_fast_iregs(drcuml_block &block)
{
int regnum;
- for (regnum = 0; regnum < ARRAY_LENGTH(m_impstate.regmap); regnum++)
+ for (regnum = 0; regnum < std::size(m_impstate.regmap); regnum++)
if (m_impstate.regmap[regnum].is_int_register())
UML_DMOV(block, uml::mem(&m_r[regnum]), uml::ireg(m_impstate.regmap[regnum].ireg() - uml::REG_I0));
}
@@ -251,7 +251,7 @@ void arm7_cpu_device::arm7drc_set_options(uint32_t options)
void arm7_cpu_device::arm7drc_add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base)
{
- if (m_impstate.fastram_select < ARRAY_LENGTH(m_impstate.fastram))
+ if (m_impstate.fastram_select < std::size(m_impstate.fastram))
{
m_impstate.fastram[m_impstate.fastram_select].start = start;
m_impstate.fastram[m_impstate.fastram_select].end = end;
@@ -268,7 +268,7 @@ void arm7_cpu_device::arm7drc_add_fastram(offs_t start, offs_t end, uint8_t read
void arm7_cpu_device::arm7drc_add_hotspot(offs_t pc, uint32_t opcode, uint32_t cycles)
{
- if (m_impstate.hotspot_select < ARRAY_LENGTH(m_impstate.hotspot))
+ if (m_impstate.hotspot_select < std::size(m_impstate.hotspot))
{
m_impstate.hotspot[m_impstate.hotspot_select].pc = pc;
m_impstate.hotspot[m_impstate.hotspot_select].opcode = opcode;
diff --git a/src/devices/cpu/cosmac/cosmac.cpp b/src/devices/cpu/cosmac/cosmac.cpp
index a40b6e66262..978c4e76fc8 100644
--- a/src/devices/cpu/cosmac/cosmac.cpp
+++ b/src/devices/cpu/cosmac/cosmac.cpp
@@ -528,8 +528,8 @@ void cosmac_device::device_reset()
m_df = 0;
m_p = 0;
- for (int i = 0; i < ARRAY_LENGTH(m_r); i++)
- m_r[i] = machine().rand() & 0xffff;
+ for (uint16_t &r : m_r)
+ r = machine().rand() & 0xffff;
}
diff --git a/src/devices/cpu/drcbec.cpp b/src/devices/cpu/drcbec.cpp
index 90f9a1adff9..d8b30535d6e 100644
--- a/src/devices/cpu/drcbec.cpp
+++ b/src/devices/cpu/drcbec.cpp
@@ -528,7 +528,7 @@ int drcbe_c::execute(code_handle &entry)
newinst = (const drcbec_instruction *)m_hash.get_codeptr(PARAM0, PARAM1);
if (newinst == nullptr)
{
- assert(sp < ARRAY_LENGTH(callstack));
+ assert(sp < std::size(callstack));
m_state.exp = PARAM1;
newinst = (const drcbec_instruction *)inst[2].handle->codeptr();
callstack[sp++] = inst;
@@ -562,7 +562,7 @@ int drcbe_c::execute(code_handle &entry)
[[fallthrough]];
case MAKE_OPCODE_SHORT(OP_CALLH, 4, 0):
- assert(sp < ARRAY_LENGTH(callstack));
+ assert(sp < std::size(callstack));
newinst = (const drcbec_instruction *)inst[0].handle->codeptr();
assert_in_cache(m_cache, newinst);
callstack[sp++] = inst + OPCODE_GET_PWORDS(opcode);
@@ -587,7 +587,7 @@ int drcbe_c::execute(code_handle &entry)
[[fallthrough]];
case MAKE_OPCODE_SHORT(OP_EXH, 4, 0):
- assert(sp < ARRAY_LENGTH(callstack));
+ assert(sp < std::size(callstack));
newinst = (const drcbec_instruction *)inst[0].handle->codeptr();
assert_in_cache(m_cache, newinst);
m_state.exp = PARAM1;
diff --git a/src/devices/cpu/drcbeut.cpp b/src/devices/cpu/drcbeut.cpp
index ce7cf527e3c..8ccd8d31fb3 100644
--- a/src/devices/cpu/drcbeut.cpp
+++ b/src/devices/cpu/drcbeut.cpp
@@ -276,7 +276,7 @@ void drc_map_variables::block_end(drcuml_block &block)
// build a mask of changed variables
int numchanged = 0;
uint32_t varmask = 0;
- for (int varnum = 0; varnum < ARRAY_LENGTH(changed); varnum++)
+ for (int varnum = 0; varnum < std::size(changed); varnum++)
if (changed[varnum])
{
changed[varnum] = false;
@@ -298,7 +298,7 @@ void drc_map_variables::block_end(drcuml_block &block)
*dest++ = (codedelta << 16) | (varmask << 4) | numchanged;
// now output updated variable values
- for (int varnum = 0; varnum < ARRAY_LENGTH(changed); varnum++)
+ for (int varnum = 0; varnum < std::size(changed); varnum++)
if ((varmask >> varnum) & 1)
*dest++ = curvalue[varnum];
diff --git a/src/devices/cpu/drcbex64.cpp b/src/devices/cpu/drcbex64.cpp
index 716dd57b8d0..a25f1262bf4 100644
--- a/src/devices/cpu/drcbex64.cpp
+++ b/src/devices/cpu/drcbex64.cpp
@@ -654,7 +654,7 @@ drcbe_x64::drcbe_x64(drcuml_state &drcuml, device_t &device, drc_cache &cache, u
m_near.drcmap_get_value = (x86code *)&drc_map_variables::static_get_value;
// build the flags map
- for (int entry = 0; entry < ARRAY_LENGTH(m_near.flagsmap); entry++)
+ for (int entry = 0; entry < std::size(m_near.flagsmap); entry++)
{
uint8_t flags = 0;
if (entry & 0x001) flags |= FLAG_C;
@@ -664,7 +664,7 @@ drcbe_x64::drcbe_x64(drcuml_state &drcuml, device_t &device, drc_cache &cache, u
if (entry & 0x800) flags |= FLAG_V;
m_near.flagsmap[entry] = flags;
}
- for (int entry = 0; entry < ARRAY_LENGTH(m_near.flagsunmap); entry++)
+ for (int entry = 0; entry < std::size(m_near.flagsunmap); entry++)
{
uint64_t flags = 0;
if (entry & FLAG_C) flags |= 0x001;
@@ -873,7 +873,7 @@ void drcbe_x64::generate(drcuml_block &block, const instruction *instlist, uint3
for (int inum = 0; inum < numinst; inum++)
{
const instruction &inst = instlist[inum];
- assert(inst.opcode() < ARRAY_LENGTH(s_opcode_table));
+ assert(inst.opcode() < std::size(s_opcode_table));
// must remain in scope until output
std::string dasm;
@@ -1883,7 +1883,7 @@ void drcbe_x64::op_save(Assembler &a, const instruction &inst)
// copy integer registers
int regoffs = offsetof(drcuml_machine_state, r);
- for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.r); regnum++)
+ for (int regnum = 0; regnum < std::size(m_state.r); regnum++)
{
if (int_register_map[regnum] != 0)
a.mov(ptr(rcx, regoffs + 8 * regnum), Gpq(regnum));
@@ -1896,7 +1896,7 @@ void drcbe_x64::op_save(Assembler &a, const instruction &inst)
// copy FP registers
regoffs = offsetof(drcuml_machine_state, f);
- for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.f); regnum++)
+ for (int regnum = 0; regnum < std::size(m_state.f); regnum++)
{
if (float_register_map[regnum] != 0)
a.movsd(ptr(rcx, regoffs + 8 * regnum), Xmm(regnum));
@@ -1927,7 +1927,7 @@ void drcbe_x64::op_restore(Assembler &a, const instruction &inst)
// copy integer registers
int regoffs = offsetof(drcuml_machine_state, r);
- for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.r); regnum++)
+ for (int regnum = 0; regnum < std::size(m_state.r); regnum++)
{
if (int_register_map[regnum] != 0)
a.mov(Gpq(regnum), ptr(rcx, regoffs + 8 * regnum));
@@ -1940,7 +1940,7 @@ void drcbe_x64::op_restore(Assembler &a, const instruction &inst)
// copy FP registers
regoffs = offsetof(drcuml_machine_state, f);
- for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.f); regnum++)
+ for (int regnum = 0; regnum < std::size(m_state.f); regnum++)
{
if (float_register_map[regnum] != 0)
a.movsd(Xmm(regnum), ptr(rcx, regoffs + 8 * regnum));
diff --git a/src/devices/cpu/drcbex86.cpp b/src/devices/cpu/drcbex86.cpp
index 1d894713b43..e13b15163e7 100644
--- a/src/devices/cpu/drcbex86.cpp
+++ b/src/devices/cpu/drcbex86.cpp
@@ -538,7 +538,7 @@ drcbe_x86::drcbe_x86(drcuml_state &drcuml, device_t &device, drc_cache &cache, u
m_reshi(0)
{
// compute hi pointers for each register
- for (int regnum = 0; regnum < ARRAY_LENGTH(int_register_map); regnum++)
+ for (int regnum = 0; regnum < std::size(int_register_map); regnum++)
if (int_register_map[regnum] != 0)
{
m_reglo[int_register_map[regnum]] = &m_state.r[regnum].w.l;
@@ -546,7 +546,7 @@ drcbe_x86::drcbe_x86(drcuml_state &drcuml, device_t &device, drc_cache &cache, u
}
// build the flags map (static but it doesn't hurt to regenerate it)
- for (int entry = 0; entry < ARRAY_LENGTH(flags_map); entry++)
+ for (int entry = 0; entry < std::size(flags_map); entry++)
{
uint8_t flags = 0;
if (entry & 0x001) flags |= FLAG_C;
@@ -556,7 +556,7 @@ drcbe_x86::drcbe_x86(drcuml_state &drcuml, device_t &device, drc_cache &cache, u
if (entry & 0x800) flags |= FLAG_V;
flags_map[entry] = flags;
}
- for (int entry = 0; entry < ARRAY_LENGTH(flags_unmap); entry++)
+ for (int entry = 0; entry < std::size(flags_unmap); entry++)
{
uint32_t flags = 0;
if (entry & FLAG_C) flags |= 0x001;
@@ -712,7 +712,7 @@ void drcbe_x86::reset()
a.mov(ptr(ecx, offsetof(drcuml_machine_state, fmod)), al); // mov state->fmod,al
a.mov(eax, MABS(&m_state.exp)); // mov eax,[exp]
a.mov(ptr(ecx, offsetof(drcuml_machine_state, exp)), eax); // mov state->exp,eax
- for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.r); regnum++)
+ for (int regnum = 0; regnum < std::size(m_state.r); regnum++)
{
uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.l;
uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.h;
@@ -726,7 +726,7 @@ void drcbe_x86::reset()
a.mov(eax, MABS(&m_state.r[regnum].w.h));
a.mov(ptr(ecx, regoffsh), eax);
}
- for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.f); regnum++)
+ for (int regnum = 0; regnum < std::size(m_state.f); regnum++)
{
uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.l;
uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.h;
@@ -740,7 +740,7 @@ void drcbe_x86::reset()
// generate a restore subroutine
m_restore = dst + a.offset();
a.bind(a.newNamedLabel("restore"));
- for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.r); regnum++)
+ for (int regnum = 0; regnum < std::size(m_state.r); regnum++)
{
uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.l;
uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.h;
@@ -754,7 +754,7 @@ void drcbe_x86::reset()
a.mov(eax, ptr(ecx, regoffsh));
a.mov(MABS(&m_state.r[regnum].w.h), eax);
}
- for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.f); regnum++)
+ for (int regnum = 0; regnum < std::size(m_state.f); regnum++)
{
uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.l;
uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.h;
@@ -843,7 +843,7 @@ void drcbe_x86::generate(drcuml_block &block, const instruction *instlist, uint3
for (int inum = 0; inum < numinst; inum++)
{
const instruction &inst = instlist[inum];
- assert(inst.opcode() < ARRAY_LENGTH(s_opcode_table));
+ assert(inst.opcode() < std::size(s_opcode_table));
// must remain in scope until output
std::string dasm;
diff --git a/src/devices/cpu/drcuml.cpp b/src/devices/cpu/drcuml.cpp
index fd93018b35a..771ea230c03 100644
--- a/src/devices/cpu/drcuml.cpp
+++ b/src/devices/cpu/drcuml.cpp
@@ -704,10 +704,10 @@ static void validate_backend(drcuml_state *drcuml)
// iterate over test entries
printf("Backend validation....\n");
- for (tnum = 31; tnum < ARRAY_LENGTH(bevalidate_test_list); tnum++)
+ for (tnum = 31; tnum < std::size(bevalidate_test_list); tnum++)
{
const bevalidate_test *test = &bevalidate_test_list[tnum];
- parameter param[ARRAY_LENGTH(test->param)];
+ parameter param[std::size(test->param)];
char mnemonic[20], *dst;
const char *src;
@@ -726,7 +726,7 @@ static void validate_backend(drcuml_state *drcuml)
*dst++ = *src;
}
*dst = 0;
- printf("Executing test %d/%d (%s)", tnum + 1, (int)ARRAY_LENGTH(bevalidate_test_list), mnemonic);
+ printf("Executing test %d/%d (%s)", tnum + 1, (int)std::size(bevalidate_test_list), mnemonic);
// reset parameter list and iterate
memset(param, 0, sizeof(param));
@@ -750,7 +750,7 @@ static void bevalidate_iterate_over_params(drcuml_state *drcuml, uml::code_handl
drcuml_ptype ptype;
// if no parameters, execute now
- if (pnum >= ARRAY_LENGTH(opinfo->param) || opinfo->param[pnum].typemask == PTYPES_NONE)
+ if (pnum >= std::size(opinfo->param) || opinfo->param[pnum].typemask == PTYPES_NONE)
{
bevalidate_iterate_over_flags(drcuml, handles, test, paramlist);
return;
@@ -838,7 +838,7 @@ static void bevalidate_iterate_over_flags(drcuml_state *drcuml, uml::code_handle
static void bevalidate_execute(drcuml_state *drcuml, uml::code_handle **handles, const bevalidate_test *test, const parameter *paramlist, uint8_t flagmask)
{
- parameter params[ARRAY_LENGTH(test->param)];
+ parameter params[std::size(test->param)];
drcuml_machine_state istate, fstate;
instruction testinst;
drcuml_block *block;
@@ -846,7 +846,7 @@ static void bevalidate_execute(drcuml_state *drcuml, uml::code_handle **handles,
int numparams;
// allocate memory for parameters
- parammem = (uint64_t *)drcuml->cache->alloc_near(sizeof(uint64_t) * (ARRAY_LENGTH(test->param) + 1));
+ parammem = (uint64_t *)drcuml->cache->alloc_near(sizeof(uint64_t) * (std::size(test->param) + 1));
// flush the cache
drcuml->reset();
@@ -888,7 +888,7 @@ static void bevalidate_execute(drcuml_state *drcuml, uml::code_handle **handles,
}
testinst = block->inst[block->nextinst - 1];
UML_HANDLE(block, handles[2]);
- UML_GETFLGS(block, MEM(&parammem[ARRAY_LENGTH(test->param)]), flagmask);
+ UML_GETFLGS(block, MEM(&parammem[std::size(test->param)]), flagmask);
UML_SAVE(block, &fstate);
UML_EXIT(block, IMM(0));
@@ -899,10 +899,10 @@ static void bevalidate_execute(drcuml_state *drcuml, uml::code_handle **handles,
drcuml->execute(*handles[0]);
// verify the results
- bevalidate_verify_state(drcuml, &istate, &fstate, test, *(uint32_t *)&parammem[ARRAY_LENGTH(test->param)], params, &testinst, handles[1]->code, handles[2]->code, flagmask);
+ bevalidate_verify_state(drcuml, &istate, &fstate, test, *(uint32_t *)&parammem[std::size(test->param)], params, &testinst, handles[1]->code, handles[2]->code, flagmask);
// free memory
- drcuml->cache->dealloc(parammem, sizeof(uint64_t) * (ARRAY_LENGTH(test->param) + 1));
+ drcuml->cache->dealloc(parammem, sizeof(uint64_t) * (std::size(test->param) + 1));
}
@@ -922,14 +922,14 @@ static void bevalidate_initialize_random_state(drcuml_state *drcuml, drcuml_bloc
state->exp = machine.rand();
// initialize integer registers to random values
- for (regnum = 0; regnum < ARRAY_LENGTH(state->r); regnum++)
+ for (regnum = 0; regnum < std::size(state->r); regnum++)
{
state->r[regnum].w.h = machine.rand();
state->r[regnum].w.l = machine.rand();
}
// initialize float registers to random values
- for (regnum = 0; regnum < ARRAY_LENGTH(state->f); regnum++)
+ for (regnum = 0; regnum < std::size(state->f); regnum++)
{
*(uint32_t *)&state->f[regnum].s.h = machine.rand();
*(uint32_t *)&state->f[regnum].s.l = machine.rand();
@@ -950,14 +950,14 @@ static void bevalidate_initialize_random_state(drcuml_state *drcuml, drcuml_bloc
static int bevalidate_populate_state(drcuml_block *block, drcuml_machine_state *state, const bevalidate_test *test, const parameter *paramlist, parameter *params, uint64_t *parammem)
{
const opcode_info *opinfo = opcode_info_table[test->opcode()];
- int numparams = ARRAY_LENGTH(test->param);
+ int numparams = std::size(test->param);
int pnum;
// copy flags as-is
state->flags = test->iflags;
// iterate over parameters
- for (pnum = 0; pnum < ARRAY_LENGTH(test->param); pnum++)
+ for (pnum = 0; pnum < std::size(test->param); pnum++)
{
int psize = effective_test_psize(opinfo, pnum, test->size, test->param);
parameter *curparam = &params[pnum];
@@ -1046,7 +1046,7 @@ static int bevalidate_verify_state(drcuml_state *drcuml, const drcuml_machine_st
}
// check destination parameters
- for (pnum = 0; pnum < ARRAY_LENGTH(test->param); pnum++)
+ for (pnum = 0; pnum < std::size(test->param); pnum++)
if (opinfo->param[pnum].output & PIO_OUT)
{
int psize = effective_test_psize(opinfo, pnum, test->size, test->param);
@@ -1094,14 +1094,14 @@ static int bevalidate_verify_state(drcuml_state *drcuml, const drcuml_machine_st
}
// check source integer parameters for unexpected alterations
- for (regnum = 0; regnum < ARRAY_LENGTH(state->r); regnum++)
+ for (regnum = 0; regnum < std::size(state->r); regnum++)
if (ireg[regnum] == 0 && istate->r[regnum].d != state->r[regnum].d)
errend += sprintf(errend, " Register i%d ... result:%08X%08X originally:%08X%08X\n", regnum,
(uint32_t)(state->r[regnum].d >> 32), (uint32_t)state->r[regnum].d,
(uint32_t)(istate->r[regnum].d >> 32), (uint32_t)istate->r[regnum].d);
// check source float parameters for unexpected alterations
- for (regnum = 0; regnum < ARRAY_LENGTH(state->f); regnum++)
+ for (regnum = 0; regnum < std::size(state->f); regnum++)
if (freg[regnum] == 0 && *(uint64_t *)&istate->f[regnum].d != *(uint64_t *)&state->f[regnum].d)
errend += sprintf(errend, " Register f%d ... result:%08X%08X originally:%08X%08X\n", regnum,
(uint32_t)(*(uint64_t *)&state->f[regnum].d >> 32), (uint32_t)*(uint64_t *)&state->f[regnum].d,
diff --git a/src/devices/cpu/dsp16/dsp16fe.cpp b/src/devices/cpu/dsp16/dsp16fe.cpp
index a972d14d8ff..406cf205433 100644
--- a/src/devices/cpu/dsp16/dsp16fe.cpp
+++ b/src/devices/cpu/dsp16/dsp16fe.cpp
@@ -564,9 +564,9 @@ bool dsp16_device_base::frontend::describe_do(opcode_desc &desc, u16 op)
m_cache_cycles = cycles;
m_cache_last_cycles = cycles + (romcycles - cachecycles);
m_cache_flags = desc.flags & (OPFLAG_READS_MEMORY | OPFLAG_WRITES_MEMORY);
- std::copy_n(desc.regin, ARRAY_LENGTH(desc.regin), m_cache_regin);
- std::copy_n(desc.regout, ARRAY_LENGTH(desc.regout), m_cache_regout);
- std::copy_n(desc.regreq, ARRAY_LENGTH(desc.regreq), m_cache_regreq);
+ std::copy_n(desc.regin, std::size(desc.regin), m_cache_regin);
+ std::copy_n(desc.regout, std::size(desc.regout), m_cache_regout);
+ std::copy_n(desc.regreq, std::size(desc.regreq), m_cache_regreq);
m_cache_valid = true;
desc.cycles += (2U - romcycles) + ((k - 1) * cycles) + (romcycles - cachecycles);
return true;
@@ -589,9 +589,9 @@ bool dsp16_device_base::frontend::describe_redo(opcode_desc &desc, u16 op)
{
desc.cycles += ((k - 1) * m_cache_cycles) + m_cache_last_cycles;
desc.flags |= m_cache_flags;
- std::copy_n(m_cache_regin, ARRAY_LENGTH(desc.regin), desc.regin);
- std::copy_n(m_cache_regout, ARRAY_LENGTH(desc.regout), desc.regout);
- std::copy_n(m_cache_regreq, ARRAY_LENGTH(desc.regreq), desc.regreq);
+ std::copy_n(m_cache_regin, std::size(desc.regin), desc.regin);
+ std::copy_n(m_cache_regout, std::size(desc.regout), desc.regout);
+ std::copy_n(m_cache_regreq, std::size(desc.regreq), desc.regreq);
return true;
}
}
diff --git a/src/devices/cpu/dspp/dsppdrc.cpp b/src/devices/cpu/dspp/dsppdrc.cpp
index 30be59db09b..5ed615d1056 100644
--- a/src/devices/cpu/dspp/dsppdrc.cpp
+++ b/src/devices/cpu/dspp/dsppdrc.cpp
@@ -94,7 +94,7 @@ registers
inline void dspp_device::load_fast_iregs(drcuml_block &block)
{
#if 0 // TODO
- for (uint32_t regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++)
+ for (uint32_t regnum = 0; regnum < std::size(m_regmap); regnum++)
{
if (m_regmap[regnum].is_int_register())
{
@@ -115,7 +115,7 @@ void dspp_device::save_fast_iregs(drcuml_block &block)
#if 0 // TODO
int regnum;
- for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++)
+ for (regnum = 0; regnum < std::size(m_regmap); regnum++)
{
if (m_regmap[regnum].is_int_register())
{
diff --git a/src/devices/cpu/i386/i386dasm.cpp b/src/devices/cpu/i386/i386dasm.cpp
index 374f2a24a41..42f17e65e63 100644
--- a/src/devices/cpu/i386/i386dasm.cpp
+++ b/src/devices/cpu/i386/i386dasm.cpp
@@ -2847,7 +2847,7 @@ void i386_disassembler::decode_opcode(std::ostream &stream, const I386_OPCODE *o
case GROUP:
handle_modrm(modrm_string, base_pc, pc, opcodes);
- for( i=0; i < ARRAY_LENGTH(group_op_table); i++ ) {
+ for( i=0; i < std::size(group_op_table); i++ ) {
if( strcmp(op->mnemonic, group_op_table[i].mnemonic) == 0 ) {
if (op->flags & GROUP_MOD)
decode_opcode(stream, &group_op_table[i].opcode[MODRM_MOD()], op1, base_pc, pc, opcodes);
diff --git a/src/devices/cpu/i8085/i8085.cpp b/src/devices/cpu/i8085/i8085.cpp
index 124544bffd2..7fddcb77af5 100644
--- a/src/devices/cpu/i8085/i8085.cpp
+++ b/src/devices/cpu/i8085/i8085.cpp
@@ -502,7 +502,7 @@ void i8085a_cpu_device::execute_set_input(int irqline, int state)
}
/* remaining sources are level triggered */
- else if (irqline < ARRAY_LENGTH(m_irq_state))
+ else if (irqline < std::size(m_irq_state))
m_irq_state[irqline] = state;
}
diff --git a/src/devices/cpu/m6502/m6500_1.cpp b/src/devices/cpu/m6502/m6500_1.cpp
index 5d7c2d0b485..aaede8b2bff 100644
--- a/src/devices/cpu/m6502/m6500_1.cpp
+++ b/src/devices/cpu/m6502/m6500_1.cpp
@@ -171,7 +171,7 @@ void m6500_1_device::device_reset()
m_cr = 0x00U;
- for (unsigned i = 0; ARRAY_LENGTH(m_port_buf) > i; ++i)
+ for (unsigned i = 0; std::size(m_port_buf) > i; ++i)
{
if (0xffU != m_port_buf[i])
m_port_out_cb[i](m_port_buf[i] = 0xffU);
diff --git a/src/devices/cpu/m6809/6x09dasm.cpp b/src/devices/cpu/m6809/6x09dasm.cpp
index bc366a567fe..e45c1a1bc8c 100644
--- a/src/devices/cpu/m6809/6x09dasm.cpp
+++ b/src/devices/cpu/m6809/6x09dasm.cpp
@@ -808,7 +808,7 @@ const m6x09_base_disassembler::opcodeinfo m6x09_disassembler::m6x09_opcodes[] =
// ======================> m6x09_disassembler
m6x09_disassembler::m6x09_disassembler(m6x09_instruction_level level, const char teregs[16][4])
- : m6x09_base_disassembler(m6x09_opcodes, ARRAY_LENGTH(m6x09_opcodes), level)
+ : m6x09_base_disassembler(m6x09_opcodes, std::size(m6x09_opcodes), level)
, m_teregs(*reinterpret_cast<const std::array<std::array<char, 4>, 16> *>(teregs))
{
}
@@ -1237,7 +1237,7 @@ const m6x09_base_disassembler::opcodeinfo konami_disassembler::konami_opcodes[]
// ======================> konami_disassembler
-konami_disassembler::konami_disassembler() : m6x09_base_disassembler(konami_opcodes, ARRAY_LENGTH(konami_opcodes), M6x09_GENERAL)
+konami_disassembler::konami_disassembler() : m6x09_base_disassembler(konami_opcodes, std::size(konami_opcodes), M6x09_GENERAL)
{
}
diff --git a/src/devices/cpu/mb86235/mb86235drc.cpp b/src/devices/cpu/mb86235/mb86235drc.cpp
index 12e0ab60650..aff4658c4a6 100644
--- a/src/devices/cpu/mb86235/mb86235drc.cpp
+++ b/src/devices/cpu/mb86235/mb86235drc.cpp
@@ -189,7 +189,7 @@ inline void mb86235_device::load_fast_iregs(drcuml_block &block)
{
int regnum;
- for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++)
+ for (regnum = 0; regnum < std::size(m_regmap); regnum++)
{
if (m_regmap[regnum].is_int_register())
{
@@ -207,7 +207,7 @@ void mb86235_device::save_fast_iregs(drcuml_block &block)
{
int regnum;
- for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++)
+ for (regnum = 0; regnum < std::size(m_regmap); regnum++)
{
if (m_regmap[regnum].is_int_register())
{
diff --git a/src/devices/cpu/mips/mips1.cpp b/src/devices/cpu/mips/mips1.cpp
index b60e09fa14c..c5f18b2989e 100644
--- a/src/devices/cpu/mips/mips1.cpp
+++ b/src/devices/cpu/mips/mips1.cpp
@@ -160,7 +160,7 @@ void mips1core_device_base::device_start()
state_add(MIPS1_PC, "PC", m_pc);
state_add(MIPS1_COP0 + COP0_Status, "SR", m_cop0[COP0_Status]);
- for (unsigned i = 0; i < ARRAY_LENGTH(m_r); i++)
+ for (unsigned i = 0; i < std::size(m_r); i++)
state_add(MIPS1_R0 + i, util::string_format("R%d", i).c_str(), m_r[i]);
state_add(MIPS1_HI, "HI", m_hi);
@@ -751,17 +751,17 @@ void mips1core_device_base::generate_exception(u32 exception, bool refill)
{
case 1049: // msgsys
LOGMASKED(LOG_RISCOS, "asid %d syscall msgsys:%s() (%s)\n",
- asid, (m_r[5] < ARRAY_LENGTH(msg_syscalls)) ? msg_syscalls[m_r[5]] : "unknown", machine().describe_context());
+ asid, (m_r[5] < std::size(msg_syscalls)) ? msg_syscalls[m_r[5]] : "unknown", machine().describe_context());
break;
case 1052: // shmsys
LOGMASKED(LOG_RISCOS, "asid %d syscall shmsys:%s() (%s)\n",
- asid, (m_r[5] < ARRAY_LENGTH(shm_syscalls)) ? shm_syscalls[m_r[5]] : "unknown", machine().describe_context());
+ asid, (m_r[5] < std::size(shm_syscalls)) ? shm_syscalls[m_r[5]] : "unknown", machine().describe_context());
break;
case 1053: // semsys
LOGMASKED(LOG_RISCOS, "asid %d syscall semsys:%s() (%s)\n",
- asid, (m_r[5] < ARRAY_LENGTH(sem_syscalls)) ? sem_syscalls[m_r[5]] : "unknown", machine().describe_context());
+ asid, (m_r[5] < std::size(sem_syscalls)) ? sem_syscalls[m_r[5]] : "unknown", machine().describe_context());
break;
case 2151: // bsd_sysmips
@@ -773,7 +773,7 @@ void mips1core_device_base::generate_exception(u32 exception, bool refill)
break;
default:
- if ((m_r[5] > 0x100) && (m_r[5] - 0x100) < ARRAY_LENGTH(mips_syscalls))
+ if ((m_r[5] > 0x100) && (m_r[5] - 0x100) < std::size(mips_syscalls))
LOGMASKED(LOG_RISCOS, "asid %d syscall bsd_sysmips:%s() (%s)\n",
asid, mips_syscalls[m_r[5] - 0x100], machine().describe_context());
else
@@ -784,7 +784,7 @@ void mips1core_device_base::generate_exception(u32 exception, bool refill)
break;
default:
- if ((m_r[4] > 2000) && (m_r[4] - 2000 < ARRAY_LENGTH(bsd_syscalls)) && bsd_syscalls[m_r[4] - 2000])
+ if ((m_r[4] > 2000) && (m_r[4] - 2000 < std::size(bsd_syscalls)) && bsd_syscalls[m_r[4] - 2000])
LOGMASKED(LOG_RISCOS, "asid %d syscall bsd_%s() (%s)\n",
asid, bsd_syscalls[m_r[4] - 2000], machine().describe_context());
else
@@ -833,7 +833,7 @@ void mips1core_device_base::generate_exception(u32 exception, bool refill)
break;
default:
- if ((m_r[2] > 1000) && (m_r[2] - 1000 < ARRAY_LENGTH(sysv_syscalls)) && sysv_syscalls[m_r[2] - 1000])
+ if ((m_r[2] > 1000) && (m_r[2] - 1000 < std::size(sysv_syscalls)) && sysv_syscalls[m_r[2] - 1000])
LOGMASKED(LOG_RISCOS, "asid %d syscall %s() (%s)\n", asid, sysv_syscalls[m_r[2] - 1000], machine().describe_context());
else
LOGMASKED(LOG_RISCOS, "asid %d syscall unknown %d (%s)\n", asid, m_r[2], machine().describe_context());
@@ -1245,7 +1245,7 @@ void mips1_device_base::device_start()
if (m_fcr0)
{
state_add(MIPS1_FCR31, "FCSR", m_fcr31);
- for (unsigned i = 0; i < ARRAY_LENGTH(m_f); i++)
+ for (unsigned i = 0; i < std::size(m_f); i++)
state_add(MIPS1_F0 + i, util::string_format("F%d", i * 2).c_str(), m_f[i]);
}
@@ -1267,7 +1267,7 @@ void mips1_device_base::device_reset()
m_reset_time = total_cycles();
// initialize tlb mru index with identity mapping
- for (unsigned i = 0; i < ARRAY_LENGTH(m_tlb); i++)
+ for (unsigned i = 0; i < std::size(m_tlb); i++)
{
m_tlb_mru[TRANSLATE_READ][i] = i;
m_tlb_mru[TRANSLATE_WRITE][i] = i;
@@ -1979,7 +1979,7 @@ bool mips1_device_base::memory_translate(int spacenum, int intention, offs_t &ad
bool refill = !BIT(address, 31);
bool modify = false;
- for (unsigned i = 0; i < ARRAY_LENGTH(m_tlb); i++)
+ for (unsigned i = 0; i < std::size(m_tlb); i++)
{
unsigned const index = mru[i];
u32 const *const entry = m_tlb[index];
diff --git a/src/devices/cpu/mips/mips3drc.cpp b/src/devices/cpu/mips/mips3drc.cpp
index 665f7b1a0b4..9b3396a09f9 100644
--- a/src/devices/cpu/mips/mips3drc.cpp
+++ b/src/devices/cpu/mips/mips3drc.cpp
@@ -120,7 +120,7 @@ inline void mips3_device::load_fast_iregs(drcuml_block &block)
{
int regnum;
- for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++)
+ for (regnum = 0; regnum < std::size(m_regmap); regnum++)
if (m_regmap[regnum].is_int_register())
UML_DMOV(block, ireg(m_regmap[regnum].ireg() - REG_I0), mem(&m_core->r[regnum]));
}
@@ -135,7 +135,7 @@ inline void mips3_device::save_fast_iregs(drcuml_block &block)
{
int regnum;
- for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++)
+ for (regnum = 0; regnum < std::size(m_regmap); regnum++)
if (m_regmap[regnum].is_int_register())
UML_DMOV(block, mem(&m_core->r[regnum]), ireg(m_regmap[regnum].ireg() - REG_I0));
}
@@ -174,7 +174,7 @@ void mips3_device::clear_fastram(uint32_t select_start)
void mips3_device::add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base)
{
- if (m_fastram_select < ARRAY_LENGTH(m_fastram))
+ if (m_fastram_select < std::size(m_fastram))
{
m_fastram[m_fastram_select].start = start;
m_fastram[m_fastram_select].end = end;
@@ -197,7 +197,7 @@ void mips3_device::add_fastram(offs_t start, offs_t end, uint8_t readonly, void
void mips3_device::mips3drc_add_hotspot(offs_t pc, uint32_t opcode, uint32_t cycles)
{
if (!allow_drc()) return;
- if (m_hotspot_select < ARRAY_LENGTH(m_hotspot))
+ if (m_hotspot_select < std::size(m_hotspot))
{
m_hotspot[m_hotspot_select].pc = pc;
m_hotspot[m_hotspot_select].opcode = opcode;
diff --git a/src/devices/cpu/mips/r4000.cpp b/src/devices/cpu/mips/r4000.cpp
index fcdddbaabe9..d88210c9d79 100644
--- a/src/devices/cpu/mips/r4000.cpp
+++ b/src/devices/cpu/mips/r4000.cpp
@@ -225,7 +225,7 @@ void r4000_base_device::device_reset()
m_cp0[CP0_WatchHi] = 0;
// initialize tlb mru index with identity mapping
- for (unsigned i = 0; i < ARRAY_LENGTH(m_tlb); i++)
+ for (unsigned i = 0; i < std::size(m_tlb); i++)
{
m_tlb_mru[TRANSLATE_READ][i] = i;
m_tlb_mru[TRANSLATE_WRITE][i] = i;
@@ -1411,10 +1411,10 @@ u64 r4000_base_device::cp0_get(unsigned const reg)
{
u8 const wired = m_cp0[CP0_Wired] & 0x3f;
- if (wired < ARRAY_LENGTH(m_tlb))
- return ((total_cycles() - m_cp0_timer_zero) % (ARRAY_LENGTH(m_tlb) - wired) + wired) & 0x3f;
+ if (wired < std::size(m_tlb))
+ return ((total_cycles() - m_cp0_timer_zero) % (std::size(m_tlb) - wired) + wired) & 0x3f;
else
- return ARRAY_LENGTH(m_tlb) - 1;
+ return std::size(m_tlb) - 1;
}
break;
@@ -1525,7 +1525,7 @@ void r4000_base_device::cp0_tlbr()
{
u8 const index = m_cp0[CP0_Index] & 0x3f;
- if (index < ARRAY_LENGTH(m_tlb))
+ if (index < std::size(m_tlb))
{
tlb_entry const &entry = m_tlb[index];
@@ -1538,7 +1538,7 @@ void r4000_base_device::cp0_tlbr()
void r4000_base_device::cp0_tlbwi(u8 const index)
{
- if (index < ARRAY_LENGTH(m_tlb))
+ if (index < std::size(m_tlb))
{
tlb_entry &entry = m_tlb[index];
@@ -1563,9 +1563,9 @@ void r4000_base_device::cp0_tlbwi(u8 const index)
void r4000_base_device::cp0_tlbwr()
{
u8 const wired = m_cp0[CP0_Wired] & 0x3f;
- u8 const unwired = ARRAY_LENGTH(m_tlb) - wired;
+ u8 const unwired = std::size(m_tlb) - wired;
- u8 const index = (unwired > 0) ? ((total_cycles() - m_cp0_timer_zero) % unwired + wired) & 0x3f : (ARRAY_LENGTH(m_tlb) - 1);
+ u8 const index = (unwired > 0) ? ((total_cycles() - m_cp0_timer_zero) % unwired + wired) & 0x3f : (std::size(m_tlb) - 1);
cp0_tlbwi(index);
}
@@ -1573,7 +1573,7 @@ void r4000_base_device::cp0_tlbwr()
void r4000_base_device::cp0_tlbp()
{
m_cp0[CP0_Index] = 0x80000000;
- for (u8 index = 0; index < ARRAY_LENGTH(m_tlb); index++)
+ for (u8 index = 0; index < std::size(m_tlb); index++)
{
tlb_entry const &entry = m_tlb[index];
@@ -3615,7 +3615,7 @@ r4000_base_device::translate_result r4000_base_device::translate(int intention,
bool invalid = false;
bool modify = false;
- for (unsigned i = 0; i < ARRAY_LENGTH(m_tlb); i++)
+ for (unsigned i = 0; i < std::size(m_tlb); i++)
{
unsigned const index = mru[i];
tlb_entry const &entry = m_tlb[index];
diff --git a/src/devices/cpu/nec/necdasm.cpp b/src/devices/cpu/nec/necdasm.cpp
index 690ec4867e2..e09acb5118a 100644
--- a/src/devices/cpu/nec/necdasm.cpp
+++ b/src/devices/cpu/nec/necdasm.cpp
@@ -1414,7 +1414,7 @@ void nec_disassembler::decode_opcode(std::ostream &stream, const NEC_I386_OPCODE
case GROUP:
handle_modrm( pc_base, pc, params );
- for( i=0; i < ARRAY_LENGTH(group_op_table); i++ ) {
+ for( i=0; i < std::size(group_op_table); i++ ) {
if( strcmp(op->mnemonic, group_op_table[i].mnemonic) == 0 )
{
decode_opcode( stream, &group_op_table[i].opcode[MODRM_REG1], op1, pc_base, pc, opcodes, params );
diff --git a/src/devices/cpu/powerpc/ppccom.cpp b/src/devices/cpu/powerpc/ppccom.cpp
index 566be7c820a..1ff153ca1b6 100644
--- a/src/devices/cpu/powerpc/ppccom.cpp
+++ b/src/devices/cpu/powerpc/ppccom.cpp
@@ -1919,7 +1919,7 @@ void ppc_device::ppccom_execute_mfdcr()
/* default handling */
if (m_dcr_read_func.isnull()) {
osd_printf_debug("DCR %03X read\n", m_core->param0);
- if (m_core->param0 < ARRAY_LENGTH(m_dcr))
+ if (m_core->param0 < std::size(m_dcr))
m_core->param1 = m_dcr[m_core->param0];
else
m_core->param1 = 0;
@@ -2011,7 +2011,7 @@ void ppc_device::ppccom_execute_mtdcr()
/* default handling */
if (m_dcr_write_func.isnull()) {
osd_printf_debug("DCR %03X write = %08X\n", m_core->param0, m_core->param1);
- if (m_core->param0 < ARRAY_LENGTH(m_dcr))
+ if (m_core->param0 < std::size(m_dcr))
m_dcr[m_core->param0] = m_core->param1;
} else {
m_dcr_write_func(m_core->param0,m_core->param1);
@@ -2662,7 +2662,7 @@ void ppc_device::ppc4xx_spu_rx_data(uint8_t data)
uint32_t new_rxin;
/* fail if we are going to overflow */
- new_rxin = (m_spu.rxin + 1) % ARRAY_LENGTH(m_spu.rxbuffer);
+ new_rxin = (m_spu.rxin + 1) % std::size(m_spu.rxbuffer);
if (new_rxin == m_spu.rxout)
fatalerror("ppc4xx_spu_rx_data: buffer overrun!\n");
@@ -2741,7 +2741,7 @@ TIMER_CALLBACK_MEMBER( ppc_device::ppc4xx_spu_callback )
/* consume the byte and advance the out pointer */
rxbyte = m_spu.rxbuffer[m_spu.rxout];
- m_spu.rxout = (m_spu.rxout + 1) % ARRAY_LENGTH(m_spu.rxbuffer);
+ m_spu.rxout = (m_spu.rxout + 1) % std::size(m_spu.rxbuffer);
/* if we're not full, copy data to the buffer and update the line status */
if (!(m_spu.regs[SPU4XX_LINE_STATUS] & 0x80))
@@ -2784,7 +2784,7 @@ uint8_t ppc4xx_device::ppc4xx_spu_r(offs_t offset)
break;
default:
- if (offset < ARRAY_LENGTH(m_spu.regs))
+ if (offset < std::size(m_spu.regs))
result = m_spu.regs[offset];
break;
}
@@ -2848,7 +2848,7 @@ void ppc4xx_device::ppc4xx_spu_w(offs_t offset, uint8_t data)
break;
default:
- if (offset < ARRAY_LENGTH(m_spu.regs))
+ if (offset < std::size(m_spu.regs))
m_spu.regs[offset] = data;
break;
}
diff --git a/src/devices/cpu/powerpc/ppcdrc.cpp b/src/devices/cpu/powerpc/ppcdrc.cpp
index 120328a50a0..eb9fdd66966 100644
--- a/src/devices/cpu/powerpc/ppcdrc.cpp
+++ b/src/devices/cpu/powerpc/ppcdrc.cpp
@@ -118,7 +118,7 @@ inline void ppc_device::load_fast_iregs(drcuml_block &block)
{
int regnum;
- for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++)
+ for (regnum = 0; regnum < std::size(m_regmap); regnum++)
{
if (m_regmap[regnum].is_int_register())
{
@@ -137,7 +137,7 @@ void ppc_device::save_fast_iregs(drcuml_block &block)
{
int regnum;
- for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++)
+ for (regnum = 0; regnum < std::size(m_regmap); regnum++)
{
if (m_regmap[regnum].is_int_register())
{
@@ -149,7 +149,7 @@ void ppc_device::save_fast_iregs(drcuml_block &block)
inline void ppc_device::load_fast_fregs(drcuml_block &block)
{
- for (int regnum = 0; regnum < ARRAY_LENGTH(m_fdregmap); regnum++)
+ for (int regnum = 0; regnum < std::size(m_fdregmap); regnum++)
{
if (m_fdregmap[regnum].is_float_register())
{
@@ -160,7 +160,7 @@ inline void ppc_device::load_fast_fregs(drcuml_block &block)
void ppc_device::save_fast_fregs(drcuml_block &block)
{
- for (int regnum = 0; regnum < ARRAY_LENGTH(m_fdregmap); regnum++)
+ for (int regnum = 0; regnum < std::size(m_fdregmap); regnum++)
{
if (m_fdregmap[regnum].is_float_register())
{
@@ -268,7 +268,7 @@ void ppc_device::ppcdrc_set_options(uint32_t options)
void ppc_device::ppcdrc_add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base)
{
- if (m_fastram_select < ARRAY_LENGTH(m_fastram))
+ if (m_fastram_select < std::size(m_fastram))
{
m_fastram[m_fastram_select].start = start;
m_fastram[m_fastram_select].end = end;
@@ -285,7 +285,7 @@ void ppc_device::ppcdrc_add_fastram(offs_t start, offs_t end, uint8_t readonly,
void ppc_device::ppcdrc_add_hotspot(offs_t pc, uint32_t opcode, uint32_t cycles)
{
- if (m_hotspot_select < ARRAY_LENGTH(m_hotspot))
+ if (m_hotspot_select < std::size(m_hotspot))
{
m_hotspot[m_hotspot_select].pc = pc;
m_hotspot[m_hotspot_select].opcode = opcode;
diff --git a/src/devices/cpu/romp/romp.cpp b/src/devices/cpu/romp/romp.cpp
index 7f987b81e96..d68988cb876 100644
--- a/src/devices/cpu/romp/romp.cpp
+++ b/src/devices/cpu/romp/romp.cpp
@@ -63,7 +63,7 @@ void romp_device::device_start()
state_add(ROMP_SCR + ICS, "ICS", m_scr[ICS]);
state_add(ROMP_SCR + CS, "CS", m_scr[CS]);
- for (unsigned i = 0; i < ARRAY_LENGTH(m_gpr); i++)
+ for (unsigned i = 0; i < std::size(m_gpr); i++)
state_add(ROMP_GPR + i, util::string_format("R%d", i).c_str(), m_gpr[i]);
// register state for saving
diff --git a/src/devices/cpu/rsp/rspdrc.cpp b/src/devices/cpu/rsp/rspdrc.cpp
index 4e5df7c80a0..d2e89b4a77a 100644
--- a/src/devices/cpu/rsp/rspdrc.cpp
+++ b/src/devices/cpu/rsp/rspdrc.cpp
@@ -91,7 +91,7 @@ inline void rsp_device::load_fast_iregs(drcuml_block &block)
{
int regnum;
- for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++)
+ for (regnum = 0; regnum < std::size(m_regmap); regnum++)
if (m_regmap[regnum].is_int_register())
UML_MOV(block, ireg(m_regmap[regnum].ireg() - REG_I0), mem(&m_rsp_state->r[regnum]));
}
@@ -106,7 +106,7 @@ inline void rsp_device::save_fast_iregs(drcuml_block &block)
{
int regnum;
- for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++)
+ for (regnum = 0; regnum < std::size(m_regmap); regnum++)
if (m_regmap[regnum].is_int_register())
UML_MOV(block, mem(&m_rsp_state->r[regnum]), ireg(m_regmap[regnum].ireg() - REG_I0));
}
diff --git a/src/devices/cpu/sh/sh.cpp b/src/devices/cpu/sh/sh.cpp
index 03fecd135ac..4779871d597 100644
--- a/src/devices/cpu/sh/sh.cpp
+++ b/src/devices/cpu/sh/sh.cpp
@@ -2009,7 +2009,7 @@ void cfunc_printf_probe(void *param) { ((sh_common_execution *)param)->func_prin
void sh_common_execution::sh2drc_add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base)
{
- if (m_fastram_select < ARRAY_LENGTH(m_fastram))
+ if (m_fastram_select < std::size(m_fastram))
{
m_fastram[m_fastram_select].start = start;
m_fastram[m_fastram_select].end = end;
@@ -2051,7 +2051,7 @@ void sh_common_execution::alloc_handle(uml::code_handle *&handleptr, const char
void sh_common_execution::load_fast_iregs(drcuml_block &block)
{
- for (int regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++)
+ for (int regnum = 0; regnum < std::size(m_regmap); regnum++)
{
if (m_regmap[regnum].is_int_register())
{
@@ -2068,7 +2068,7 @@ void sh_common_execution::load_fast_iregs(drcuml_block &block)
void sh_common_execution::save_fast_iregs(drcuml_block &block)
{
- for (int regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++)
+ for (int regnum = 0; regnum < std::size(m_regmap); regnum++)
{
if (m_regmap[regnum].is_int_register())
{
@@ -4293,6 +4293,6 @@ void sh_common_execution::sh2drc_add_pcflush(offs_t address)
{
if (!allow_drc()) return;
- if (m_pcfsel < ARRAY_LENGTH(m_pcflushes))
+ if (m_pcfsel < std::size(m_pcflushes))
m_pcflushes[m_pcfsel++] = address;
}
diff --git a/src/devices/cpu/sharc/sharc.cpp b/src/devices/cpu/sharc/sharc.cpp
index d11f7dd96cd..ded941af415 100644
--- a/src/devices/cpu/sharc/sharc.cpp
+++ b/src/devices/cpu/sharc/sharc.cpp
@@ -470,8 +470,6 @@ void adsp21062_device::external_dma_write(uint32_t address, uint64_t data)
void adsp21062_device::device_start()
{
- int saveindex;
-
m_core = (sharc_internal_state *)m_cache.alloc_near(sizeof(sharc_internal_state));
memset(m_core, 0, sizeof(sharc_internal_state));
@@ -672,8 +670,8 @@ void adsp21062_device::device_start()
m_core->fp1 = 1.0f;
save_item(NAME(m_core->pc));
- save_pointer(NAME(&m_core->r[0].r), ARRAY_LENGTH(m_core->r));
- save_pointer(NAME(&m_core->reg_alt[0].r), ARRAY_LENGTH(m_core->reg_alt));
+ save_pointer(NAME(&m_core->r[0].r), std::size(m_core->r));
+ save_pointer(NAME(&m_core->reg_alt[0].r), std::size(m_core->reg_alt));
save_item(NAME(m_core->mrf));
save_item(NAME(m_core->mrb));
@@ -709,18 +707,15 @@ void adsp21062_device::device_start()
save_item(NAME(m_core->dag2_alt.b));
save_item(NAME(m_core->dag2_alt.l));
- for (saveindex = 0; saveindex < ARRAY_LENGTH(m_core->dma); saveindex++)
- {
- save_item(NAME(m_core->dma[saveindex].control), saveindex);
- save_item(NAME(m_core->dma[saveindex].int_index), saveindex);
- save_item(NAME(m_core->dma[saveindex].int_modifier), saveindex);
- save_item(NAME(m_core->dma[saveindex].int_count), saveindex);
- save_item(NAME(m_core->dma[saveindex].chain_ptr), saveindex);
- save_item(NAME(m_core->dma[saveindex].gen_purpose), saveindex);
- save_item(NAME(m_core->dma[saveindex].ext_index), saveindex);
- save_item(NAME(m_core->dma[saveindex].ext_modifier), saveindex);
- save_item(NAME(m_core->dma[saveindex].ext_count), saveindex);
- }
+ save_item(STRUCT_MEMBER(m_core->dma, control));
+ save_item(STRUCT_MEMBER(m_core->dma, int_index));
+ save_item(STRUCT_MEMBER(m_core->dma, int_modifier));
+ save_item(STRUCT_MEMBER(m_core->dma, int_count));
+ save_item(STRUCT_MEMBER(m_core->dma, chain_ptr));
+ save_item(STRUCT_MEMBER(m_core->dma, gen_purpose));
+ save_item(STRUCT_MEMBER(m_core->dma, ext_index));
+ save_item(STRUCT_MEMBER(m_core->dma, ext_modifier));
+ save_item(STRUCT_MEMBER(m_core->dma, ext_count));
save_item(NAME(m_core->mode1));
save_item(NAME(m_core->mode2));
@@ -737,11 +732,8 @@ void adsp21062_device::device_start()
save_item(NAME(m_core->syscon));
save_item(NAME(m_core->sysstat));
- for (saveindex = 0; saveindex < ARRAY_LENGTH(m_core->status_stack); saveindex++)
- {
- save_item(NAME(m_core->status_stack[saveindex].mode1), saveindex);
- save_item(NAME(m_core->status_stack[saveindex].astat), saveindex);
- }
+ save_item(STRUCT_MEMBER(m_core->status_stack, mode1));
+ save_item(STRUCT_MEMBER(m_core->status_stack, astat));
save_item(NAME(m_core->status_stkp));
save_item(NAME(m_core->px));
@@ -754,19 +746,16 @@ void adsp21062_device::device_start()
save_item(NAME(m_core->irq_pending));
save_item(NAME(m_core->active_irq_num));
- for (saveindex = 0; saveindex < ARRAY_LENGTH(m_core->dma_op); saveindex++)
- {
- save_item(NAME(m_core->dma_op[saveindex].src), saveindex);
- save_item(NAME(m_core->dma_op[saveindex].dst), saveindex);
- save_item(NAME(m_core->dma_op[saveindex].chain_ptr), saveindex);
- save_item(NAME(m_core->dma_op[saveindex].src_modifier), saveindex);
- save_item(NAME(m_core->dma_op[saveindex].dst_modifier), saveindex);
- save_item(NAME(m_core->dma_op[saveindex].src_count), saveindex);
- save_item(NAME(m_core->dma_op[saveindex].dst_count), saveindex);
- save_item(NAME(m_core->dma_op[saveindex].pmode), saveindex);
- save_item(NAME(m_core->dma_op[saveindex].chained_direction), saveindex);
- save_item(NAME(m_core->dma_op[saveindex].active), saveindex);
- }
+ save_item(STRUCT_MEMBER(m_core->dma_op, src));
+ save_item(STRUCT_MEMBER(m_core->dma_op, dst));
+ save_item(STRUCT_MEMBER(m_core->dma_op, chain_ptr));
+ save_item(STRUCT_MEMBER(m_core->dma_op, src_modifier));
+ save_item(STRUCT_MEMBER(m_core->dma_op, dst_modifier));
+ save_item(STRUCT_MEMBER(m_core->dma_op, src_count));
+ save_item(STRUCT_MEMBER(m_core->dma_op, dst_count));
+ save_item(STRUCT_MEMBER(m_core->dma_op, pmode));
+ save_item(STRUCT_MEMBER(m_core->dma_op, chained_direction));
+ save_item(STRUCT_MEMBER(m_core->dma_op, active));
save_item(NAME(m_core->dma_status));
diff --git a/src/devices/cpu/sharc/sharcdrc.cpp b/src/devices/cpu/sharc/sharcdrc.cpp
index 91802cc4d61..2ad45389896 100644
--- a/src/devices/cpu/sharc/sharcdrc.cpp
+++ b/src/devices/cpu/sharc/sharcdrc.cpp
@@ -263,7 +263,7 @@ inline void adsp21062_device::load_fast_iregs(drcuml_block &block)
{
int regnum;
- for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++)
+ for (regnum = 0; regnum < std::size(m_regmap); regnum++)
{
if (m_regmap[regnum].is_int_register())
{
@@ -282,7 +282,7 @@ void adsp21062_device::save_fast_iregs(drcuml_block &block)
{
int regnum;
- for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++)
+ for (regnum = 0; regnum < std::size(m_regmap); regnum++)
{
if (m_regmap[regnum].is_int_register())
{
diff --git a/src/devices/cpu/sparc/sparc.cpp b/src/devices/cpu/sparc/sparc.cpp
index 6dec789ca93..73f09cf2170 100644
--- a/src/devices/cpu/sparc/sparc.cpp
+++ b/src/devices/cpu/sparc/sparc.cpp
@@ -49,7 +49,7 @@ sparc_base_device::sparc_base_device(const machine_config &mconfig, device_type
m_debugger_config = address_space_config("debug", ENDIANNESS_BIG, 32, 32);
for (int i = 0; i < 0x10; i++)
{
- snprintf(asi_buf, ARRAY_LENGTH(asi_buf), "asi%X", i);
+ snprintf(asi_buf, std::size(asi_buf), "asi%X", i);
m_asi_config[i] = address_space_config(asi_buf, ENDIANNESS_BIG, 32, 32);
}
}
@@ -417,7 +417,7 @@ void sparc_base_device::device_reset()
m_fp_exception = 0;
m_fp_exception_pending = 0;
m_fpr_pending = 0;
- m_pending_fpr = ARRAY_LENGTH(m_fpr);
+ m_pending_fpr = std::size(m_fpr);
m_fpu_sequence_err = 0;
m_cp_disabled = 0;
m_cp_exception = 0;
@@ -4834,7 +4834,7 @@ inline void sparc_base_device::execute_step()
m_fpr_pending--;
if (!m_fpr_pending)
{
- m_pending_fpr = ARRAY_LENGTH(m_fpr);
+ m_pending_fpr = std::size(m_fpr);
if (m_fp_exception_pending)
{
m_fp_exception_pending = false;
diff --git a/src/devices/cpu/tms32031/tms32031.cpp b/src/devices/cpu/tms32031/tms32031.cpp
index 98365fbbc8a..2e0409b2886 100644
--- a/src/devices/cpu/tms32031/tms32031.cpp
+++ b/src/devices/cpu/tms32031/tms32031.cpp
@@ -432,7 +432,7 @@ tms32032_device::tms32032_device(const machine_config &mconfig, const char *tag,
tms3203x_device::~tms3203x_device()
{
#if (TMS_3203X_LOG_OPCODE_USAGE)
- for (int i = 0; i < ARRAY_LENGTH(m_hits); i++)
+ for (int i = 0; i < std::size(m_hits); i++)
if (m_hits[i] != 0)
printf("%10d - %03X.%X\n", m_hits[i], i / 4, i % 4);
#endif
diff --git a/src/devices/cpu/tms34010/tms34010.cpp b/src/devices/cpu/tms34010/tms34010.cpp
index ab820fc1599..6eaf63b96ae 100644
--- a/src/devices/cpu/tms34010/tms34010.cpp
+++ b/src/devices/cpu/tms34010/tms34010.cpp
@@ -755,7 +755,7 @@ void tms340x0_device::device_start()
save_item(NAME(m_convmp));
save_item(NAME(m_pixelshift));
save_item(NAME(m_gfxcycles));
- save_pointer(NAME(&m_regs[0].reg), ARRAY_LENGTH(m_regs));
+ save_pointer(NAME(&m_regs[0].reg), std::size(m_regs));
set_icountptr(m_icount);
}
diff --git a/src/devices/cpu/tms9900/tms9995.cpp b/src/devices/cpu/tms9900/tms9995.cpp
index 89fdcc8d817..a65647cdf62 100644
--- a/src/devices/cpu/tms9900/tms9995.cpp
+++ b/src/devices/cpu/tms9900/tms9995.cpp
@@ -383,7 +383,7 @@ void tms9995_device::state_string_export(const device_state_entry &entry, std::s
{
static char const statestr[] = "LAECOPX-----IIII";
char flags[17];
- memset(flags, 0x00, ARRAY_LENGTH(flags));
+ std::fill(std::begin(flags), std::end(flags), 0x00);
uint16_t val = 0x8000;
if (entry.index()==STATE_GENFLAGS)
{
diff --git a/src/devices/cpu/uml.cpp b/src/devices/cpu/uml.cpp
index df52f5f1235..8b0c7023f58 100644
--- a/src/devices/cpu/uml.cpp
+++ b/src/devices/cpu/uml.cpp
@@ -766,7 +766,7 @@ void uml::instruction::validate()
}
// make sure we aren't missing any parameters
- if (m_numparams < ARRAY_LENGTH(opinfo.param))
+ if (m_numparams < std::size(opinfo.param))
assert(opinfo.param[m_numparams].typemask == 0);
#endif // MAME_DEBUG
}
diff --git a/src/devices/cpu/unsp/unsp.cpp b/src/devices/cpu/unsp/unsp.cpp
index b285fbc3048..1239a1075ed 100644
--- a/src/devices/cpu/unsp/unsp.cpp
+++ b/src/devices/cpu/unsp/unsp.cpp
@@ -309,7 +309,7 @@ void unsp_20_device::device_start()
void unsp_device::device_reset()
{
- for (int i = 0; i < ARRAY_LENGTH(m_core->m_r); i++)
+ for (int i = 0; i < std::size(m_core->m_r); i++)
{
if (i < m_numregs)
m_core->m_r[i] = 0;