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