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.
This commit is contained in:
David Marcec 2018-10-09 11:10:30 +11:00
parent fd891ee9c0
commit c50f66a8eb

View file

@ -303,12 +303,19 @@ static ResultCode ArbitrateUnlock(VAddr mutex_addr) {
/// Break program execution /// Break program execution
static void Break(u64 reason, u64 info1, u64 info2) { static void Break(u64 reason, u64 info1, u64 info2) {
if ((reason & (1 << 31)) == 0) {
LOG_CRITICAL( LOG_CRITICAL(
Debug_Emulated, Debug_Emulated,
"Emulated program broke execution! reason=0x{:016X}, info1=0x{:016X}, info2=0x{:016X}", "Emulated program broke execution! reason=0x{:016X}, info1=0x{:016X}, info2=0x{:016X}",
reason, info1, info2); 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); ASSERT(false);
} }
}
/// Used to output a message on a debug hardware unit - does nothing on a retail unit /// Used to output a message on a debug hardware unit - does nothing on a retail unit
static void OutputDebugString(VAddr address, u64 len) { static void OutputDebugString(VAddr address, u64 len) {