daedalus/Source/OSHLE/patch_tlb_hle.inl
2021-10-23 21:48:59 +11:00

93 lines
2.7 KiB
C++

#define TEST_DISABLE_TLB_FUNCS DAEDALUS_PROFILE(__FUNCTION__);
//*****************************************************************************
//
//*****************************************************************************
// Todo: Implement me
u32 Patch_osMapTLB()
{
TEST_DISABLE_TLB_FUNCS
//osMapTLB(s32, OSPageMask, void *, u32, u32, s32)
#ifdef DAEDALUS_DEBUG_CONSOLE
u32 w = gGPR[REG_a0]._u32_0;
u32 x = gGPR[REG_a1]._u32_0;
u32 y = gGPR[REG_a2]._u32_0;
u32 z = gGPR[REG_a3]._u32_0;
u32 a = Read32Bits(gGPR[REG_sp]._u32_0 + 0x10);
u32 b = Read32Bits(gGPR[REG_sp]._u32_0 + 0x14);
DBGConsole_Msg(0, "[WosMapTLB(0x%08x,0x%08x,0x%0#8x,0x%08x,0x%08x,0x%08x)]",
w,x,y,z,a,b);
#endif
return PATCH_RET_NOT_PROCESSED;
}
//*****************************************************************************
//
//*****************************************************************************
// ENTRYHI left untouched after call
u32 Patch___osProbeTLB()
{
TEST_DISABLE_TLB_FUNCS
u32 addr = gGPR[REG_a0]._u32_0;
//DBGConsole_Msg(0, "Probe: 0x%08x -> 0x%08x", VAddr, dwPAddr);
gGPR[REG_v0]._s64 = (s64)OS_HLE___osProbeTLB( addr );
return PATCH_RET_JR_RA;
}
//*****************************************************************************
//
//*****************************************************************************
u32 Patch_osVirtualToPhysical_Mario()
{
TEST_DISABLE_TLB_FUNCS
u32 addr = gGPR[REG_a0]._u32_0;
//DBGConsole_Msg(0, "osVirtualToPhysical(0x%08x)", addr);
gGPR[REG_v0]._s64 = (s64)ConvertToPhysical( addr );
return PATCH_RET_JR_RA;
}
//*****************************************************************************
//
//*****************************************************************************
// Identical - just optimised
u32 Patch_osVirtualToPhysical_Rugrats()
{
TEST_DISABLE_TLB_FUNCS
u32 addr = gGPR[REG_a0]._u32_0;
//DBGConsole_Msg(0, "osVirtualToPhysical(0x%08x)", (u32)gGPR[REG_a0]);
gGPR[REG_v0]._s64 = (s64)ConvertToPhysical( addr );
return PATCH_RET_JR_RA;
}
//*****************************************************************************
//
//*****************************************************************************
// Todo: Implement me
u32 Patch_osMapTLBRdb()
{
return PATCH_RET_NOT_PROCESSED;
}
//*****************************************************************************
//
//*****************************************************************************
// Todo: Implement me
u32 Patch_osUnmapTLBAll_Mario()
{
return PATCH_RET_NOT_PROCESSED;
}
//*****************************************************************************
//
//*****************************************************************************
// Identical to mario, different loop structure
u32 Patch_osUnmapTLBAll_Rugrats()
{
return PATCH_RET_NOT_PROCESSED;
}