From ab60bb8d0b602b933ddb536e6dd9d3fa5b04c9d2 Mon Sep 17 00:00:00 2001 From: Maxim Poliakovski Date: Thu, 21 Mar 2024 18:00:04 +0100 Subject: [PATCH] memctrlbase: cosmetic improvements. --- devices/memctrl/memctrlbase.cpp | 27 +++++++++++----------- devices/memctrl/memctrlbase.h | 41 ++++++++++++++++++--------------- 2 files changed, 37 insertions(+), 31 deletions(-) diff --git a/devices/memctrl/memctrlbase.cpp b/devices/memctrl/memctrlbase.cpp index 4a00f48..29c1371 100644 --- a/devices/memctrl/memctrlbase.cpp +++ b/devices/memctrl/memctrlbase.cpp @@ -1,6 +1,6 @@ /* DingusPPC - The Experimental PowerPC Macintosh emulator -Copyright (C) 2018-21 divingkatae and maximum +Copyright (C) 2018-24 divingkatae and maximum (theweirdo) spatium (Contact divingkatae#1017 or powermax#2286 on Discord for more info) @@ -22,20 +22,12 @@ along with this program. If not, see . #include #include -#include // to shut up MSVC errors (: +#include #include #include #include #include -static inline bool match_mem_entry(const AddressMapEntry* entry, - const uint32_t start, const uint32_t end, - MMIODevice* dev_instance) -{ - return start == entry->start && end == entry->end && - (!dev_instance || dev_instance == entry->devobj); -} - MemCtrlBase::~MemCtrlBase() { for (auto& entry : address_map) { if (entry) @@ -51,6 +43,15 @@ MemCtrlBase::~MemCtrlBase() { } +static inline bool match_mem_entry(const AddressMapEntry* entry, + const uint32_t start, const uint32_t end, + MMIODevice* dev_instance) +{ + return start == entry->start && end == entry->end && + (!dev_instance || dev_instance == entry->devobj); +} + + AddressMapEntry* MemCtrlBase::find_range(uint32_t addr) { for (auto& entry : address_map) { if (addr >= entry->start && addr <= entry->end) @@ -149,11 +150,11 @@ bool MemCtrlBase::add_mem_region(uint32_t start_addr, uint32_t size, { AddressMapEntry *entry; - /* error if a memory region for the given range already exists */ + // bail out if a memory region for the given range already exists if (!is_range_free(start_addr, size)) return false; - uint8_t* reg_content = new uint8_t[size](); /* () intializer clears the memory to zero */ + uint8_t* reg_content = new uint8_t[size](); // allocate and clear to zero this->mem_regions.push_back(reg_content); @@ -249,7 +250,7 @@ bool MemCtrlBase::add_mmio_region(uint32_t start_addr, uint32_t size, MMIODevice { AddressMapEntry *entry; - /* error if a memory region for the given range already exists */ + // bail out if a memory region for the given range already exists if (!is_range_free(start_addr, size)) return false; diff --git a/devices/memctrl/memctrlbase.h b/devices/memctrl/memctrlbase.h index 2cda8fd..44e51e2 100644 --- a/devices/memctrl/memctrlbase.h +++ b/devices/memctrl/memctrlbase.h @@ -1,6 +1,6 @@ /* DingusPPC - The Experimental PowerPC Macintosh emulator -Copyright (C) 2018-22 divingkatae and maximum +Copyright (C) 2018-24 divingkatae and maximum (theweirdo) spatium (Contact divingkatae#1017 or powermax#2286 on Discord for more info) @@ -28,7 +28,7 @@ along with this program. If not, see . class MMIODevice; -// Common DRAM capacities. +/* Common DRAM capacities. */ enum { DRAM_CAP_2MB = (1 << 21), DRAM_CAP_4MB = (1 << 22), @@ -40,21 +40,21 @@ enum { }; enum RangeType { - RT_ROM = 1, /* read-only memory */ - RT_RAM = 2, /* random access memory */ - RT_MMIO = 4, /* memory mapped I/O */ - RT_MIRROR = 8 /* region mirror (content of another region is acessible - at some other address) */ + RT_ROM = 1, // read-only memory + RT_RAM = 2, // random access memory + RT_MMIO = 4, // memory mapped I/O + RT_MIRROR = 8 // region mirror (content of another region acessible at some + // other address) }; /** Defines the format for the address map entry. */ typedef struct AddressMapEntry { - uint32_t start; /* first address of the corresponding range */ - uint32_t end; /* last address of the corresponding range */ - uint32_t mirror; /* mirror address for RT_MIRROR */ - uint32_t type; /* range type */ - MMIODevice* devobj; /* pointer to device object */ - unsigned char* mem_ptr; /* direct pointer to data for memory objects */ + uint32_t start; // first address of the corresponding range + uint32_t end; // last address of the corresponding range + uint32_t mirror; // starting address of the origin for RT_MIRROR + uint32_t type; // range type + MMIODevice* devobj; // pointer to device object + unsigned char* mem_ptr; // direct pointer to data for memory objects } AddressMapEntry; @@ -67,13 +67,16 @@ public: virtual bool add_ram_region(uint32_t start_addr, uint32_t size); virtual bool add_mem_mirror(uint32_t start_addr, uint32_t dest_addr); - virtual bool add_mmio_region(uint32_t start_addr, uint32_t size, MMIODevice* dev_instance); - virtual bool remove_mmio_region(uint32_t start_addr, uint32_t size, MMIODevice* dev_instance); + virtual bool add_mmio_region(uint32_t start_addr, uint32_t size, + MMIODevice* dev_instance); + virtual bool remove_mmio_region(uint32_t start_addr, uint32_t size, + MMIODevice* dev_instance); virtual bool set_data(uint32_t reg_addr, const uint8_t* data, uint32_t size); AddressMapEntry* find_range(uint32_t addr); - AddressMapEntry* find_range_exact(uint32_t addr, uint32_t size, MMIODevice* dev_instance); + AddressMapEntry* find_range_exact(uint32_t addr, uint32_t size, + MMIODevice* dev_instance); AddressMapEntry* find_range_contains(uint32_t addr, uint32_t size); AddressMapEntry* find_range_overlaps(uint32_t addr, uint32_t size); bool is_range_free(uint32_t addr, uint32_t size); @@ -82,11 +85,13 @@ public: protected: bool add_mem_region( - uint32_t start_addr, uint32_t size, uint32_t dest_addr, uint32_t type, uint8_t init_val); + uint32_t start_addr, uint32_t size, uint32_t dest_addr, uint32_t type, + uint8_t init_val + ); private: std::vector mem_regions; std::vector address_map; }; -#endif /* MEMORY_CONTROLLER_BASE_H */ +#endif // MEMORY_CONTROLLER_BASE_H