diff --git a/src/ARMeilleure/State/ExecutionContext.cs b/src/ARMeilleure/State/ExecutionContext.cs index 5d8144d4e..0b0a83c9f 100644 --- a/src/ARMeilleure/State/ExecutionContext.cs +++ b/src/ARMeilleure/State/ExecutionContext.cs @@ -169,11 +169,6 @@ namespace ARMeilleure.State internal void OnSupervisorCall(ulong address, int imm) { - if (Optimizations.EnableDebugging) - { - DebugPc = Pc; // TODO: Is this the best place to update DebugPc? - } - _supervisorCallback?.Invoke(this, address, imm); } diff --git a/src/Ryujinx.HLE/Debugger/Debugger.cs b/src/Ryujinx.HLE/Debugger/Debugger.cs index 608ab977a..3ec4dbb93 100644 --- a/src/Ryujinx.HLE/Debugger/Debugger.cs +++ b/src/Ryujinx.HLE/Debugger/Debugger.cs @@ -86,38 +86,38 @@ namespace Ryujinx.HLE.Debugger { case >= 0 and <= 31: { - ulong value = ss.ReadLengthAsLEHex(16); + ulong value = ss.ReadLengthAsHex(16); state.SetX(gdbRegId, value); return true; } case 32: { - ulong value = ss.ReadLengthAsLEHex(16); + ulong value = ss.ReadLengthAsHex(16); state.DebugPc = value; return true; } case 33: { - ulong value = ss.ReadLengthAsLEHex(8); + ulong value = ss.ReadLengthAsHex(8); state.Pstate = (uint)value; return true; } case >= 34 and <= 65: { - ulong value0 = ss.ReadLengthAsLEHex(16); - ulong value1 = ss.ReadLengthAsLEHex(16); + ulong value0 = ss.ReadLengthAsHex(16); + ulong value1 = ss.ReadLengthAsHex(16); state.SetV(gdbRegId - 34, new V128(value0, value1)); return true; } case 66: { - ulong value = ss.ReadLengthAsLEHex(8); + ulong value = ss.ReadLengthAsHex(8); state.Fpsr = (uint)value; return true; } case 67: { - ulong value = ss.ReadLengthAsLEHex(8); + ulong value = ss.ReadLengthAsHex(8); state.Fpcr = (uint)value; return true; } @@ -158,32 +158,32 @@ namespace Ryujinx.HLE.Debugger { case >= 0 and <= 14: { - ulong value = ss.ReadLengthAsLEHex(8); + ulong value = ss.ReadLengthAsHex(8); state.SetX(gdbRegId, value); return true; } case 15: { - ulong value = ss.ReadLengthAsLEHex(8); + ulong value = ss.ReadLengthAsHex(8); state.DebugPc = value; return true; } case 16: { - ulong value = ss.ReadLengthAsLEHex(8); + ulong value = ss.ReadLengthAsHex(8); state.Pstate = (uint)value; return true; } case >= 17 and <= 32: { - ulong value0 = ss.ReadLengthAsLEHex(16); - ulong value1 = ss.ReadLengthAsLEHex(16); + ulong value0 = ss.ReadLengthAsHex(16); + ulong value1 = ss.ReadLengthAsHex(16); state.SetV(gdbRegId - 17, new V128(value0, value1)); return true; } case >= 33 and <= 64: { - ulong value = ss.ReadLengthAsLEHex(16); + ulong value = ss.ReadLengthAsHex(16); int regId = (gdbRegId - 33); int regNum = regId / 2; int shift = regId % 2; @@ -193,7 +193,7 @@ namespace Ryujinx.HLE.Debugger } case 65: { - ulong value = ss.ReadLengthAsLEHex(8); + ulong value = ss.ReadLengthAsHex(8); state.Fpsr = (uint)value & FpcrMask; state.Fpcr = (uint)value & ~FpcrMask; return true; @@ -208,40 +208,30 @@ namespace Ryujinx.HLE.Debugger while (!_shuttingDown) { IMessage msg = Messages.Take(); - try { - switch (msg) - { - case BreakInMessage: - Logger.Notice.Print(LogClass.GdbStub, "Break-in requested"); - CommandQuery(); - break; - - case SendNackMessage: - WriteStream.WriteByte((byte)'-'); - break; - - case CommandMessage { Command: var cmd }: - Logger.Debug?.Print(LogClass.GdbStub, $"Received Command: {cmd}"); - WriteStream.WriteByte((byte)'+'); - ProcessCommand(cmd); - break; - - case ThreadBreakMessage { Context: var ctx }: - DebugProcess.DebugStop(); - Reply($"T05thread:{ctx.ThreadUid:x};"); - break; - - case KillMessage: - return; - } - } - catch (IOException e) + switch (msg) { - Logger.Error?.Print(LogClass.GdbStub, "Error while processing GDB messages", e); - } - catch (NullReferenceException e) - { - Logger.Error?.Print(LogClass.GdbStub, "Error while processing GDB messages", e); + case BreakInMessage: + Logger.Notice.Print(LogClass.GdbStub, "Break-in requested"); + CommandQuery(); + break; + + case SendNackMessage: + WriteStream.WriteByte((byte)'-'); + break; + + case CommandMessage { Command: var cmd }: + Logger.Debug?.Print(LogClass.GdbStub, $"Received Command: {cmd}"); + WriteStream.WriteByte((byte)'+'); + ProcessCommand(cmd); + break; + + case ThreadBreakMessage { Context: var ctx }: + DebugProcess.DebugStop(); + Reply($"T05thread:{ctx.ThreadUid:x};"); + break; + + case KillMessage: + return; } } } diff --git a/src/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs b/src/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs index c24d5c3cc..7edf263e2 100644 --- a/src/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs +++ b/src/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs @@ -1283,12 +1283,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process } _kernelContext.CriticalSection.Leave(); - bool stepTimedOut = false; - if (!StepBarrier.SignalAndWait(TimeSpan.FromMilliseconds(2000))) - { - Logger.Warning?.Print(LogClass.Kernel, $"Failed to step thread {target.ThreadUid} in time."); - stepTimedOut = true; - } + StepBarrier.SignalAndWait(); _kernelContext.CriticalSection.Enter(); steppingThread = null; @@ -1307,12 +1302,6 @@ namespace Ryujinx.HLE.HOS.Kernel.Process target.Suspend(ThreadSchedState.ThreadPauseFlag); } _kernelContext.CriticalSection.Leave(); - - if (stepTimedOut) - { - return false; - } - StepBarrier.SignalAndWait(); return true; }