summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2018-10-09 16:57:37 -0400
committerGravatar GitHub2018-10-09 16:57:37 -0400
commitfe16905de1433064ffcf601755d364f4c0438ea4 (patch)
tree2b07c1f1bd1e06cc504f40575126ecdbc2e3c7e8 /src
parentMerge pull request #1465 from lioncash/telemetry (diff)
parentAdded bitfield instead of manually checking if the bit is set (diff)
downloadyuzu-fe16905de1433064ffcf601755d364f4c0438ea4.tar.gz
yuzu-fe16905de1433064ffcf601755d364f4c0438ea4.tar.xz
yuzu-fe16905de1433064ffcf601755d364f4c0438ea4.zip
Merge pull request #1459 from ogniK5377/break
svcBreak, Signalling to the debugger should not kill execution
Diffstat (limited to 'src')
-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) {
301 return Mutex::Release(mutex_addr); 301 return Mutex::Release(mutex_addr);
302} 302}
303 303
304struct BreakReason {
305 union {
306 u64 raw;
307 BitField<31, 1, u64> dont_kill_application;
308 };
309};
310
304/// Break program execution 311/// Break program execution
305static void Break(u64 reason, u64 info1, u64 info2) { 312static void Break(u64 reason, u64 info1, u64 info2) {
306 LOG_CRITICAL( 313 BreakReason break_reason{reason};
307 Debug_Emulated, 314 if (break_reason.dont_kill_application) {
308 "Emulated program broke execution! reason=0x{:016X}, info1=0x{:016X}, info2=0x{:016X}", 315 LOG_ERROR(
309 reason, info1, info2); 316 Debug_Emulated,
310 ASSERT(false); 317 "Emulated program broke execution! reason=0x{:016X}, info1=0x{:016X}, info2=0x{:016X}",
318 reason, info1, info2);
319 } else {
320 LOG_CRITICAL(
321 Debug_Emulated,
322 "Emulated program broke execution! reason=0x{:016X}, info1=0x{:016X}, info2=0x{:016X}",
323 reason, info1, info2);
324 ASSERT(false);
325 }
311} 326}
312 327
313/// Used to output a message on a debug hardware unit - does nothing on a retail unit 328/// Used to output a message on a debug hardware unit - does nothing on a retail unit