summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Marcec <dmarcecguzman@gmail.com>2018-10-09 03:11:14 +0200
committerDavid Marcec <dmarcecguzman@gmail.com>2018-10-09 03:11:14 +0200
commitf5631e78d146146dad15607d94ca5d1623ae6696 (patch)
tree114f1b881f7e2008d6a2d9cd67ef50e7f0103fc8
parentActual kill execution when the bit isn't set, not the other way around (diff)
downloadyuzu-f5631e78d146146dad15607d94ca5d1623ae6696.tar
yuzu-f5631e78d146146dad15607d94ca5d1623ae6696.tar.gz
yuzu-f5631e78d146146dad15607d94ca5d1623ae6696.tar.bz2
yuzu-f5631e78d146146dad15607d94ca5d1623ae6696.tar.lz
yuzu-f5631e78d146146dad15607d94ca5d1623ae6696.tar.xz
yuzu-f5631e78d146146dad15607d94ca5d1623ae6696.tar.zst
yuzu-f5631e78d146146dad15607d94ca5d1623ae6696.zip
-rw-r--r--src/core/hle/kernel/svc.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index 2cae5c8f0..b488b508d 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -301,19 +301,27 @@ 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) {
- if ((reason & (1 << 31)) == 0) {
- LOG_CRITICAL(
+ 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);
- ASSERT(false);
} else {
- LOG_ERROR(
+ LOG_CRITICAL(
Debug_Emulated,
"Emulated program broke execution! reason=0x{:016X}, info1=0x{:016X}, info2=0x{:016X}",
reason, info1, info2);
+ ASSERT(false);
}
}