diff options
author | 2021-02-14 11:05:57 -0500 | |
---|---|---|
committer | 2021-02-14 11:05:57 -0500 | |
commit | bc0146c2038c46f789a246d5616afd7c425157f3 (patch) | |
tree | b4d39194034b4c6e56ccd4035d25636034be43ca /src/devices/cpu | |
parent | 91310bcdeb7ab0ff661738b212017bf836f4e8ad (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')
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(¶mmem[ARRAY_LENGTH(test->param)]), flagmask); + UML_GETFLGS(block, MEM(¶mmem[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 *)¶mmem[ARRAY_LENGTH(test->param)], params, &testinst, handles[1]->code, handles[2]->code, flagmask); + bevalidate_verify_state(drcuml, &istate, &fstate, test, *(uint32_t *)¶mmem[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 = ¶ms[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; |