summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-10-09 22:57:37 +0200
committerGitHub <noreply@github.com>2018-10-09 22:57:37 +0200
commitfe16905de1433064ffcf601755d364f4c0438ea4 (patch)
tree2b07c1f1bd1e06cc504f40575126ecdbc2e3c7e8
parentMerge pull request #1465 from lioncash/telemetry (diff)
parentAdded bitfield instead of manually checking if the bit is set (diff)
downloadyuzu-fe16905de1433064ffcf601755d364f4c0438ea4.tar
yuzu-fe16905de1433064ffcf601755d364f4c0438ea4.tar.gz
yuzu-fe16905de1433064ffcf601755d364f4c0438ea4.tar.bz2
yuzu-fe16905de1433064ffcf601755d364f4c0438ea4.tar.lz
yuzu-fe16905de1433064ffcf601755d364f4c0438ea4.tar.xz
yuzu-fe16905de1433064ffcf601755d364f4c0438ea4.tar.zst
yuzu-fe16905de1433064ffcf601755d364f4c0438ea4.zip
-rw-r--r--src/core/hle/kernel/svc.cpp25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index 6c4af7e47..b488b508d 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -301,13 +301,28 @@ static ResultCode ArbitrateUnlock(VAddr mutex_addr) {
return Mutex::Release(mutex_addr);
}
+struct BreakReason {
+ union {
+ u64 raw;
+ BitField<31, 1, u64> dont_kill_application;
+ };
+};
+
/// 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);
+ BreakReason break_reason{reason};
+ if (break_reason.dont_kill_application) {
+ LOG_ERROR(
+ Debug_Emulated,
+ "Emulated program broke execution! reason=0x{:016X}, info1=0x{:016X}, info2=0x{:016X}",
+ reason, info1, info2);
+ } else {
+ LOG_CRITICAL(
+ 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