diff options
author | David Marcec <dmarcecguzman@gmail.com> | 2018-10-09 11:10:30 +1100 |
---|---|---|
committer | David Marcec <dmarcecguzman@gmail.com> | 2018-10-09 11:10:30 +1100 |
commit | c50f66a8eb85abd979508bec8b53cd12394bfd4d (patch) | |
tree | 63bb16c8493c3499802f174758f58e40ae0face5 /src/core/hle/kernel/svc.cpp | |
parent | fd891ee9c0342b603574e57ef178620439927256 (diff) |
svcBreak, Signalling to the debugger should not kill execution
When loading NROs, svcBreak is called to signal to the debugger that a new "module" is loaded. As no debugger is technically attached we shouldn't be killing the programs execution.
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
-rw-r--r-- | src/core/hle/kernel/svc.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 6c4af7e47c..7b594ed16a 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp @@ -303,11 +303,18 @@ static ResultCode ArbitrateUnlock(VAddr mutex_addr) { /// Break program execution static void Break(u64 reason, u64 info1, u64 info2) { - LOG_CRITICAL( - Debug_Emulated, - "Emulated program broke execution! reason=0x{:016X}, info1=0x{:016X}, info2=0x{:016X}", - reason, info1, info2); - ASSERT(false); + if ((reason & (1 << 31)) == 0) { + LOG_CRITICAL( + Debug_Emulated, + "Emulated program broke execution! reason=0x{:016X}, info1=0x{:016X}, info2=0x{:016X}", + reason, info1, info2); + } else { + LOG_ERROR( + Debug_Emulated, + "Emulated program broke execution! reason=0x{:016X}, info1=0x{:016X}, info2=0x{:016X}", + reason, info1, info2); + ASSERT(false); + } } /// Used to output a message on a debug hardware unit - does nothing on a retail unit |