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>(); const auto cfg = g_fxo->get<gcm_config>();
cfg->offsetTable.ioAddress.set(vm::alloc(3072 * sizeof(u16), vm::main)); const u32 addr = vm::alloc((3072 + 512) * sizeof(u16), vm::main);
cfg->offsetTable.eaAddress.set(vm::alloc(512 * sizeof(u16), vm::main));
std::memset(cfg->offsetTable.ioAddress.get_ptr(), 0xFF, 3072 * sizeof(u16)); cfg->offsetTable.ioAddress.set(addr);
std::memset(cfg->offsetTable.eaAddress.get_ptr(), 0xFF, 512 * sizeof(u16)); 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; CellGcmContextData current_context;
gcmInfo gcm_info; gcmInfo gcm_info;
CellGcmOffsetTable offsetTable; CellGcmOffsetTable offsetTable{};
u16 IoMapTable[0xC00]{}; u16 IoMapTable[0xC00]{};
shared_mutex gcmio_mutex; shared_mutex gcmio_mutex;