Print stack trace on invalid memory accesses (#461)
* Print stack trace on invalid memory accesses * Rebased, change code region base address for 39-bits address space, print stack trace on break and undefined instructions too
This commit is contained in:
parent
0e1e094b7a
commit
2cb8541462
5 changed files with 53 additions and 1 deletions
|
@ -1,3 +1,4 @@
|
|||
using ChocolArm64.Events;
|
||||
using ChocolArm64.Exceptions;
|
||||
using ChocolArm64.State;
|
||||
using System;
|
||||
|
@ -51,6 +52,8 @@ namespace ChocolArm64.Memory
|
|||
|
||||
private byte*** PageTable;
|
||||
|
||||
public event EventHandler<AInvalidAccessEventArgs> InvalidAccess;
|
||||
|
||||
public AMemory(IntPtr Ram)
|
||||
{
|
||||
Monitors = new Dictionary<int, ArmMonitor>();
|
||||
|
@ -512,6 +515,8 @@ Unmapped:
|
|||
return (byte*)Ptr + (Position & PageMask);
|
||||
}
|
||||
|
||||
InvalidAccess?.Invoke(this, new AInvalidAccessEventArgs(Position));
|
||||
|
||||
throw new VmmPageFaultException(Position);
|
||||
}
|
||||
|
||||
|
@ -560,6 +565,8 @@ Unmapped:
|
|||
return (byte*)Ptr + (Position & PageMask);
|
||||
}
|
||||
|
||||
InvalidAccess?.Invoke(this, new AInvalidAccessEventArgs(Position));
|
||||
|
||||
throw new VmmPageFaultException(Position);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue