HLE cellGcmSys: Make IOTable accurate

Affects cellGcmAddressToOffset when using addresses above 0xC0000000
This commit is contained in:
Eladash 2020-02-15 18:11:16 +02:00 committed by Ani
parent 1aa11440e0
commit 6de91a1691
2 changed files with 5 additions and 6 deletions

View File

@ -93,13 +93,12 @@ void InitOffsetTable()
{
const auto cfg = g_fxo->get<gcm_config>();
cfg->offsetTable.ioAddress.set(vm::alloc(3072 * sizeof(u16), vm::main));
cfg->offsetTable.eaAddress.set(vm::alloc(512 * sizeof(u16), vm::main));
const u32 addr = vm::alloc((3072 + 512) * sizeof(u16), vm::main);
std::memset(cfg->offsetTable.ioAddress.get_ptr(), 0xFF, 3072 * sizeof(u16));
std::memset(cfg->offsetTable.eaAddress.get_ptr(), 0xFF, 512 * sizeof(u16));
cfg->offsetTable.ioAddress.set(addr);
cfg->offsetTable.eaAddress.set(addr + (3072 * sizeof(u16)));
cfg->reserved_size = 0;
std::memset(vm::base(addr), 0xFF, (3072 + 512) * sizeof(u16));
}
//----------------------------------------------------------------------------

View File

@ -30,7 +30,7 @@ struct gcm_config
CellGcmContextData current_context;
gcmInfo gcm_info;
CellGcmOffsetTable offsetTable;
CellGcmOffsetTable offsetTable{};
u16 IoMapTable[0xC00]{};
shared_mutex gcmio_mutex;