Newer
Older
#pragma once
/* Just a simple nice wrapper over memory ranges, with constexpr so no overhead */
struct Range {
constexpr Range(unsigned int begin, unsigned long size) :
start(begin), length(size) {}
inline bool contains(unsigned int addr) const
{
return (addr >= start && addr < start + length);
}
inline uint offset(unsigned int addr) const
{
return addr - start;
}
unsigned int start = 0;
unsigned long length = 0;
};
/* Memory ranges. */
constexpr Range RAM = Range(0x00000000, 32 * 1024 * 1024LL);
constexpr Range IO_REGISTERS = Range(0x10000000, 64 * 1024LL);
constexpr Range VU_MEMORY = Range(0x11000000, 40 * 1024LL);
constexpr Range GS_PRIV_REGS = Range(0x12000000, 8 * 1024LL);
constexpr Range IOP_RAM = Range(0x1c000000, 2 * 1024 * 1024LL);
constexpr Range BIOS = Range(0x1fc00000, 4 * 1024 * 1024LL);