mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2024-11-30 18:34:38 +01:00
thermosphere: fix software breakpoints
This commit is contained in:
parent
3556c12960
commit
e6fdd6bc98
@ -58,7 +58,7 @@ static size_t findClosestSoftwareBreakpointSlot(uintptr_t address)
|
||||
static inline bool doApplySoftwareBreakpoint(size_t id)
|
||||
{
|
||||
SoftwareBreakpoint *bp = &g_softwareBreakpointManager.breakpoints[id];
|
||||
u32 brkInst = 0xF2000000 | bp->uid;
|
||||
u32 brkInst = 0xD4200000 | (bp->uid << 5);
|
||||
|
||||
size_t sz = guestReadWriteMemory(bp->address, 4, &bp->savedInstruction, &brkInst);
|
||||
bp->applied = sz == 4;
|
||||
@ -181,7 +181,7 @@ int addSoftwareBreakpoint(uintptr_t addr, bool persistent)
|
||||
bp->address = addr;
|
||||
bp->persistent = persistent;
|
||||
bp->applied = false;
|
||||
bp->uid = 0x2000 + g_softwareBreakpointManager.bpUniqueCounter++;
|
||||
bp->uid = (u16)(0x2000 + g_softwareBreakpointManager.bpUniqueCounter++);
|
||||
|
||||
int rc = applySoftwareBreakpoint(id) ? 0 : -EFAULT;
|
||||
recursiveSpinlockUnlock(&g_softwareBreakpointManager.lock);
|
||||
|
@ -27,7 +27,7 @@
|
||||
typedef struct SoftwareBreakpoint {
|
||||
uintptr_t address; // VA
|
||||
u32 savedInstruction;
|
||||
u32 uid;
|
||||
u16 uid;
|
||||
bool persistent;
|
||||
bool applied;
|
||||
atomic_bool triedToApplyOrRevert;
|
||||
|
Loading…
Reference in New Issue
Block a user