diff --git a/src/Infrastructure b/src/Infrastructure
index 6051fed..8f76c22 160000
--- a/src/Infrastructure
+++ b/src/Infrastructure
@@ -1 +1 @@
-Subproject commit 6051fed8acdfe58f9e60d72eda56132827d3cef3
+Subproject commit 8f76c2265b2607fad7beed11825118e4d4766690
diff --git a/src/Plugins/VerilatorPlugin/Verilated/Peripherals/VerilatedCPU.cs b/src/Plugins/VerilatorPlugin/Verilated/Peripherals/VerilatedCPU.cs
index 097f91b..73845b8 100644
--- a/src/Plugins/VerilatorPlugin/Verilated/Peripherals/VerilatedCPU.cs
+++ b/src/Plugins/VerilatorPlugin/Verilated/Peripherals/VerilatedCPU.cs
@@ -193,8 +193,7 @@
                             case ExecutionMode.Continuous:
                                 verilatedPeripheral.Send(ActionType.SingleStepMode, 0, 0);
                                 break;
-                            case ExecutionMode.SingleStepNonBlocking:
-                            case ExecutionMode.SingleStepBlocking:
+                            case ExecutionMode.SingleStep:
                                 verilatedPeripheral.Send(ActionType.SingleStepMode, 0, 1);
                                 break;
                         }
diff --git a/src/Plugins/VerilatorPlugin/Verilated/Peripherals/VerilatedRiscV32.cs b/src/Plugins/VerilatorPlugin/Verilated/Peripherals/VerilatedRiscV32.cs
index 11f7328..f3ab007 100644
--- a/src/Plugins/VerilatorPlugin/Verilated/Peripherals/VerilatedRiscV32.cs
+++ b/src/Plugins/VerilatorPlugin/Verilated/Peripherals/VerilatedRiscV32.cs
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2010-2023 Antmicro
+// Copyright (c) 2010-2024 Antmicro
 //
 //  This file is licensed under the MIT License.
 //  Full license text is available in 'licenses/MIT.txt'.
@@ -62,12 +62,13 @@
             return mapping.Values.OrderBy(x => x.Index);
         }
 
-        public void EnterSingleStepModeSafely(HaltArguments args, bool? blocking = null)
+        public void EnterSingleStepModeSafely(HaltArguments args)
         {
             // this method should only be called from CPU thread,
             // but we should check it anyway
             CheckCpuThreadId();
-            ChangeExecutionModeToSingleStep(blocking);
+
+            ExecutionMode = ExecutionMode.SingleStep;
 
             UpdateHaltedState();
             InvokeHalted(args);
diff --git a/tools/sel4_extensions/seL4Extensions.cs b/tools/sel4_extensions/seL4Extensions.cs
index 7eadc60..541e233 100644
--- a/tools/sel4_extensions/seL4Extensions.cs
+++ b/tools/sel4_extensions/seL4Extensions.cs
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2010-2022 Antmicro
+// Copyright (c) 2010-2024 Antmicro
 //
 // This file is licensed under the MIT License.
 // Full license text is available in 'licenses/MIT.txt'.
@@ -291,7 +291,7 @@
             // We changed context, remove this hook as we don't need it anymore
             cpu.RemoveHook(address, HandleThreadSwitch);
             cpu.Pause();
-            cpu.EnterSingleStepModeSafely(new HaltArguments(HaltReason.Breakpoint, cpu.Id, address, BreakpointType.MemoryBreakpoint), true);
+            cpu.EnterSingleStepModeSafely(new HaltArguments(HaltReason.Breakpoint, cpu.Id, address, BreakpointType.MemoryBreakpoint));
         }
 
         private void HandleBreakpoint(ICpuSupportingGdb cpu, ulong address)
@@ -304,7 +304,7 @@
 
             ClearTemporaryBreakpoint(address, threadName);
             cpu.Pause();
-            cpu.EnterSingleStepModeSafely(new HaltArguments(HaltReason.Breakpoint, cpu.Id, address, BreakpointType.MemoryBreakpoint), true);
+            cpu.EnterSingleStepModeSafely(new HaltArguments(HaltReason.Breakpoint, cpu.Id, address, BreakpointType.MemoryBreakpoint));
         }
 
         private void HandleExitUserspace(ICpuSupportingGdb cpu, ulong address)
@@ -315,7 +315,7 @@
             }
 
             cpu.Pause();
-            cpu.EnterSingleStepModeSafely(new HaltArguments(HaltReason.Breakpoint, cpu.Id, address, BreakpointType.MemoryBreakpoint), true);
+            cpu.EnterSingleStepModeSafely(new HaltArguments(HaltReason.Breakpoint, cpu.Id, address, BreakpointType.MemoryBreakpoint));
             if(exitUserspaceMode == ExitUserspaceMode.Once)
             {
                 cpu.RemoveHook(address, HandleExitUserspace);
@@ -385,7 +385,7 @@
             {
                 pendingThreadName = null;
                 cpu.Pause();
-                cpu.EnterSingleStepModeSafely(new HaltArguments(HaltReason.Breakpoint, cpu.Id, address, BreakpointType.MemoryBreakpoint), true);
+                cpu.EnterSingleStepModeSafely(new HaltArguments(HaltReason.Breakpoint, cpu.Id, address, BreakpointType.MemoryBreakpoint));
             }
         }
 
