Implement SvcSetMemoryAttribute

This commit is contained in:
gdkchan 2018-02-25 22:53:01 -03:00
parent 068754fec5
commit 0371553a27

View file

@ -234,6 +234,36 @@ namespace ChocolArm64.Memory
BaseEntry.Perm); BaseEntry.Perm);
} }
public void ClearAttrBit(long Position, long Size, int Bit)
{
while (Size > 0)
{
PTEntry Entry = GetPTEntry(Position);
Entry.Attr &= ~(1 << Bit);
SetPTEntry(Position, Entry);
Position += PageSize;
Size -= PageSize;
}
}
public void SetAttrBit(long Position, long Size, int Bit)
{
while (Size > 0)
{
PTEntry Entry = GetPTEntry(Position);
Entry.Attr |= (1 << Bit);
SetPTEntry(Position, Entry);
Position += PageSize;
Size -= PageSize;
}
}
public bool HasPermission(long Position, AMemoryPerm Perm) public bool HasPermission(long Position, AMemoryPerm Perm)
{ {
return GetPTEntry(Position).Perm.HasFlag(Perm); return GetPTEntry(Position).Perm.HasFlag(Perm);