mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-07 15:31:26 +12:00
Some draft
This commit is contained in:
parent
c61fe621b0
commit
e4d5e7c78b
2 changed files with 21 additions and 4 deletions
|
@ -1176,14 +1176,28 @@ s32 cellGcmCallback(vm::ptr<CellGcmContextData> context, u32 count)
|
||||||
const u32 address = context->current;
|
const u32 address = context->current;
|
||||||
const u32 upper = offsetTable.ioAddress[address >> 20]; // 12 bits
|
const u32 upper = offsetTable.ioAddress[address >> 20]; // 12 bits
|
||||||
assert(upper != 0xFFFF);
|
assert(upper != 0xFFFF);
|
||||||
u32 offset = (upper << 20) | (address & 0xFFFFF);
|
const u32 offset = (upper << 20) | (address & 0xFFFFF);
|
||||||
//ctrl.put.exchange(be_t<u32>::make(offset)); // update put pointer
|
//ctrl.put.exchange(be_t<u32>::make(offset)); // update put pointer
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: this may be wrong
|
|
||||||
|
|
||||||
vm::write32(context->current, CELL_GCM_METHOD_FLAG_JUMP | CELL_GCM_METHOD_FLAG_NON_INCREMENT | (0)); // set JUMP cmd
|
// preparations for changing the place (for optimized FIFO mode)
|
||||||
|
//auto cmd = vm::ptr<u32>::make(context->current.ToLE());
|
||||||
|
//cmd[0] = 0x41D6C;
|
||||||
|
//cmd[1] = 0x20;
|
||||||
|
//cmd[2] = 0x41D74;
|
||||||
|
//cmd[3] = 0; // some incrementing by module value
|
||||||
|
//context->current += 0x10;
|
||||||
|
|
||||||
|
{
|
||||||
|
const u32 address = context->begin;
|
||||||
|
const u32 upper = offsetTable.ioAddress[address >> 20]; // 12 bits
|
||||||
|
assert(upper != 0xFFFF);
|
||||||
|
const u32 offset = (upper << 20) | (address & 0xFFFFF);
|
||||||
|
vm::write32(context->current, CELL_GCM_METHOD_FLAG_JUMP | offset); // set JUMP cmd
|
||||||
|
}
|
||||||
|
|
||||||
context->current = context->begin; // rewind to the beginning
|
context->current = context->begin; // rewind to the beginning
|
||||||
|
// TODO: something is missing
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include "ELF32.h"
|
#include "ELF32.h"
|
||||||
#include "Emu/Cell/SPUThread.h"
|
#include "Emu/Cell/SPUThread.h"
|
||||||
#include "Emu/ARMv7/ARMv7Thread.h"
|
#include "Emu/ARMv7/ARMv7Thread.h"
|
||||||
|
#include "Emu/ARMv7/PSVFuncList.h"
|
||||||
#include "Emu/System.h"
|
#include "Emu/System.h"
|
||||||
|
|
||||||
namespace loader
|
namespace loader
|
||||||
|
@ -88,6 +89,8 @@ namespace loader
|
||||||
case MACHINE_MIPS: break;
|
case MACHINE_MIPS: break;
|
||||||
case MACHINE_ARM:
|
case MACHINE_ARM:
|
||||||
{
|
{
|
||||||
|
list_known_psv_modules();
|
||||||
|
|
||||||
auto armv7_thr_stop_data = vm::psv::ptr<u32>::make(Memory.PSV.RAM.AllocAlign(3 * 4));
|
auto armv7_thr_stop_data = vm::psv::ptr<u32>::make(Memory.PSV.RAM.AllocAlign(3 * 4));
|
||||||
armv7_thr_stop_data[0] = 0xf870; // HACK
|
armv7_thr_stop_data[0] = 0xf870; // HACK
|
||||||
armv7_thr_stop_data[1] = 0x0001; // index 1
|
armv7_thr_stop_data[1] = 0x0001; // index 1
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue