summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic_32.cpp38
-rw-r--r--src/video_core/host_shaders/opengl_present_scaleforce.frag2
2 files changed, 19 insertions, 21 deletions
diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp
index 28d062e7a..2846d4ca8 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp
@@ -91,27 +91,25 @@ public:
void ExceptionRaised(u32 pc, Dynarmic::A32::Exception exception) override {
switch (exception) {
- case Dynarmic::A32::Exception::NoExecuteFault:
- LOG_CRITICAL(Core_ARM, "Cannot execute instruction at unmapped address {:#08x}", pc);
- ReturnException(pc, PrefetchAbort);
- return;
- case Dynarmic::A32::Exception::AccessViolation:
- if (pc == 0 || pc < 0x1000) {
- LOG_CRITICAL(Core_ARM, "Null pointer dereference at {:#08x}", pc);
- ReturnException(pc, DataAbort);
+ case Dynarmic::A32::Exception::UndefinedInstruction:
+ LOG_CRITICAL(Core_ARM, "Undefined instruction at PC = 0x{:08X}", pc);
+ m_parent.GetContext(m_parent.m_breakpoint_context);
+ m_parent.m_jit->HaltExecution(DataAbort);
+ break;
+ case Dynarmic::A32::Exception::NoExecuteFault:
+ LOG_CRITICAL(Core_ARM, "Cannot execute instruction at unmapped address {:#08x}", pc);
+ ReturnException(pc, PrefetchAbort);
return;
- }
- [[fallthrough]];
- default:
- if (m_debugger_enabled) {
- ReturnException(pc, InstructionBreakpoint);
- return;
- }
-
- m_parent.LogBacktrace(m_process);
- LOG_CRITICAL(Core_ARM,
- "ExceptionRaised(exception = {}, pc = {:08X}, code = {:08X}, thumb = {})",
- exception, pc, m_memory.Read32(pc), m_parent.IsInThumbMode());
+ default:
+ if (m_debugger_enabled) {
+ ReturnException(pc, InstructionBreakpoint);
+ return;
+ }
+
+ m_parent.LogBacktrace(m_process);
+ LOG_CRITICAL(Core_ARM,
+ "ExceptionRaised(exception = {}, pc = {:08X}, code = {:08X}, thumb = {})",
+ exception, pc, m_memory.Read32(pc), m_parent.IsInThumbMode());
}
}
diff --git a/src/video_core/host_shaders/opengl_present_scaleforce.frag b/src/video_core/host_shaders/opengl_present_scaleforce.frag
index 01948e591..5558b676c 100644
--- a/src/video_core/host_shaders/opengl_present_scaleforce.frag
+++ b/src/video_core/host_shaders/opengl_present_scaleforce.frag
@@ -10,7 +10,7 @@
#ifdef CITRON_USE_FP16
#extension GL_AMD_gpu_shader_half_float : enable
-#extension GL_NV_gpu_shader5 : enable
+#extension GL_EXT_shader_explicit_arithmetic_types_float16 : require
#define lfloat float16_t
#define lvec2 f16vec2