mirror of https://github.com/PCSX2/pcsx2.git
ee: use enum for mmap_GetRamPageInfo returned value
This commit is contained in:
parent
ef063b07b4
commit
e4f407ae7c
|
@ -891,13 +891,6 @@ void eeMemoryReserve::Release()
|
||||||
// code below.
|
// code below.
|
||||||
//
|
//
|
||||||
|
|
||||||
enum vtlb_ProtectionMode
|
|
||||||
{
|
|
||||||
ProtMode_None = 0, // page is 'unaccounted' -- neither protected nor unprotected
|
|
||||||
ProtMode_Write, // page is under write protection (exception handler)
|
|
||||||
ProtMode_Manual // page is under manual protection (self-checked at execution)
|
|
||||||
};
|
|
||||||
|
|
||||||
struct vtlb_PageProtectionInfo
|
struct vtlb_PageProtectionInfo
|
||||||
{
|
{
|
||||||
// Ram De-mapping -- used to convert fully translated/mapped offsets (which reside with
|
// Ram De-mapping -- used to convert fully translated/mapped offsets (which reside with
|
||||||
|
@ -914,12 +907,10 @@ static __aligned16 vtlb_PageProtectionInfo m_PageProtectInfo[Ps2MemSize::MainRam
|
||||||
|
|
||||||
|
|
||||||
// returns:
|
// returns:
|
||||||
// -1 - unchecked block (resides in ROM, thus is integrity is constant)
|
// ProtMode_NotRequired - unchecked block (resides in ROM, thus is integrity is constant)
|
||||||
// 0 - page is using Write protection
|
// Or the current mode
|
||||||
// 1 - page is using manual protection (recompiler must include execution-time
|
|
||||||
// self-checking of block integrity)
|
|
||||||
//
|
//
|
||||||
int mmap_GetRamPageInfo( u32 paddr )
|
vtlb_ProtectionMode mmap_GetRamPageInfo( u32 paddr )
|
||||||
{
|
{
|
||||||
pxAssert( eeMem );
|
pxAssert( eeMem );
|
||||||
|
|
||||||
|
@ -929,10 +920,11 @@ int mmap_GetRamPageInfo( u32 paddr )
|
||||||
uptr rampage = ptr - (uptr)eeMem->Main;
|
uptr rampage = ptr - (uptr)eeMem->Main;
|
||||||
|
|
||||||
if (rampage >= Ps2MemSize::MainRam)
|
if (rampage >= Ps2MemSize::MainRam)
|
||||||
return -1; //not in ram, no tracking done ...
|
return ProtMode_NotRequired; //not in ram, no tracking done ...
|
||||||
|
|
||||||
rampage >>= 12;
|
rampage >>= 12;
|
||||||
return ( m_PageProtectInfo[rampage].Mode == ProtMode_Manual ) ? 1 : 0;
|
|
||||||
|
return m_PageProtectInfo[rampage].Mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
// paddr - physically mapped PS2 address
|
// paddr - physically mapped PS2 address
|
||||||
|
|
|
@ -116,7 +116,15 @@ extern void memBindConditionalHandlers();
|
||||||
|
|
||||||
extern void memMapVUmicro();
|
extern void memMapVUmicro();
|
||||||
|
|
||||||
extern int mmap_GetRamPageInfo( u32 paddr );
|
enum vtlb_ProtectionMode
|
||||||
|
{
|
||||||
|
ProtMode_None = 0, // page is 'unaccounted' -- neither protected nor unprotected
|
||||||
|
ProtMode_Write, // page is under write protection (exception handler)
|
||||||
|
ProtMode_Manual, // page is under manual protection (self-checked at execution)
|
||||||
|
ProtMode_NotRequired // page doesn't require any protection
|
||||||
|
};
|
||||||
|
|
||||||
|
extern vtlb_ProtectionMode mmap_GetRamPageInfo( u32 paddr );
|
||||||
extern void mmap_MarkCountedRamPage( u32 paddr );
|
extern void mmap_MarkCountedRamPage( u32 paddr );
|
||||||
extern void mmap_ResetBlockTracking();
|
extern void mmap_ResetBlockTracking();
|
||||||
|
|
||||||
|
|
|
@ -1646,21 +1646,22 @@ static void memory_protect_recompiled_code(u32 startpc, u32 size)
|
||||||
|
|
||||||
// note: blocks are guaranteed to reside within the confines of a single page.
|
// note: blocks are guaranteed to reside within the confines of a single page.
|
||||||
|
|
||||||
const int PageType = mmap_GetRamPageInfo( inpage_ptr );
|
const vtlb_ProtectionMode PageType = mmap_GetRamPageInfo( inpage_ptr );
|
||||||
//const u32 pgsz = std::min(0x1000 - inpage_offs, inpage_sz);
|
//const u32 pgsz = std::min(0x1000 - inpage_offs, inpage_sz);
|
||||||
const u32 pgsz = inpage_sz;
|
const u32 pgsz = inpage_sz;
|
||||||
|
|
||||||
switch (PageType)
|
switch (PageType)
|
||||||
{
|
{
|
||||||
case -1:
|
case ProtMode_NotRequired:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0:
|
case ProtMode_None:
|
||||||
|
case ProtMode_Write:
|
||||||
mmap_MarkCountedRamPage( inpage_ptr );
|
mmap_MarkCountedRamPage( inpage_ptr );
|
||||||
manual_page[inpage_ptr >> 12] = 0;
|
manual_page[inpage_ptr >> 12] = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
case ProtMode_Manual:
|
||||||
xMOV( ecx, inpage_ptr );
|
xMOV( ecx, inpage_ptr );
|
||||||
xMOV( edx, pgsz / 4 );
|
xMOV( edx, pgsz / 4 );
|
||||||
//xMOV( eax, startpc ); // uncomment this to access startpc (as eax) in dyna_block_discard
|
//xMOV( eax, startpc ); // uncomment this to access startpc (as eax) in dyna_block_discard
|
||||||
|
|
Loading…
Reference in New Issue