mirror of https://github.com/RPCS3/rpcs3.git
HLE cellGcmSys: Make IOTable accurate
Affects cellGcmAddressToOffset when using addresses above 0xC0000000
This commit is contained in:
parent
1aa11440e0
commit
6de91a1691
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue