diff --git a/platforms/nexus.repl b/platforms/nexus.repl
index c65e57c..8a33c92 100644
--- a/platforms/nexus.repl
+++ b/platforms/nexus.repl
@@ -50,3 +50,7 @@
     HostReqIRQ -> smc_plic@33
     FinishIRQ -> smc_plic@34
     InstructionFaultIRQ -> smc_plic@35
+
+// Flash/MRAM        [‘h4400_0000 - ‘h47FF_FFFF)  64MB External Non-Volatile Memory
+extflash_mem:
+    size: 0x04000000
diff --git a/platforms/nexus_smc.repl b/platforms/nexus_smc.repl
index 307f4ec..6ce590b 100644
--- a/platforms/nexus_smc.repl
+++ b/platforms/nexus_smc.repl
@@ -28,6 +28,7 @@
 // Control block for the SMC, lets us pause/restart the core at an arbitrary PC.
 smc_control: @ sysbus 0x54020000
     cpu: cpu1
+    pc: 0x50000000
 
 smc_plic:
     0 -> cpu1@9
diff --git a/platforms/secure.repl b/platforms/secure.repl
index ae1fca7..53103a5 100644
--- a/platforms/secure.repl
+++ b/platforms/secure.repl
@@ -104,6 +104,9 @@
     SpiEvent -> plic@132
     numberOfCSLines: 32
 
+extflash: SPI.Micron_MT25Q @ spi_host0 0
+    underlyingMemory: extflash_mem
+
 // SPI_HOST1         [‘h4007_0000 - ‘h4007_0FFF)   4KB SPI HOST 1
 spi_host1: SPI.OpenTitan_SpiHost@ sysbus 0x40310000
     FatalAlert -> alert_handler@20
@@ -340,11 +343,9 @@
 
 // RV_CORE_IBEX      [‘h411F_0000 - ‘h411F_0FFF)   4KB RV Core Ibex
 
-// Flash/MRAM        [‘h4400_0000 - ‘h44FF_FFFF)  16MB External Non-Volatile Memory
-// TODO(b/197745020) - temporarily 36M for debug (non-LTO) rust component builds
-//                     NB: the last 4M are written with the ELF model
-extflash: Memory.MappedMemory @ sysbus 0x44000000
-    size: 0x02400000
+// Flash/MRAM        [‘h4400_0000 - ‘h45FF_FFFF)  32MB External Non-Volatile Memory
+extflash_mem: Memory.MappedMemory @ sysbus 0x44000000
+    size: 0x02000000
 
 // Tag memory for debugging
 sysbus:
diff --git a/platforms/shodan.repl b/platforms/shodan.repl
index b848959..49225c3 100644
--- a/platforms/shodan.repl
+++ b/platforms/shodan.repl
@@ -27,6 +27,9 @@
     rtirq_B -> smc_plic@11 // kTopMatchaPlicIrqIdMailboxSmcRtirq
     eirq_B  -> smc_plic@12 // kTopMatchaPlicIrqIdMailboxSmcEirq
 
+cpio_mem: Memory.MappedMemory @ sysbus 0x46000000
+    size: 0x01000000
+
 vec_controlblock : CPU.SpringbokRiscV32_ControlBlock @ sysbus 0x47000000
     core: cpu2
     mmuNumWindows: 6 // See: go/shodan-vc-memory
diff --git a/platforms/smc.repl b/platforms/smc.repl
index ce84374..596c563 100644
--- a/platforms/smc.repl
+++ b/platforms/smc.repl
@@ -49,6 +49,7 @@
 // Control block for the SMC, lets us pause/restart the core at an arbitrary PC.
 smc_control: CPU.SmcRiscV32_ControlBlock @ sysbus 0x54020000
     cpu: cpu1
+    pc: 0x28000000
 
 // SMC_PLIC
 smc_plic: IRQControllers.PlatformLevelInterruptController @ sysbus 0x60000000 // TOP_MATCHA_RV_PLIC_SMC_BASE_ADDR @ top_matcha.h
diff --git a/shodan_infrastructure/SmcRiscV32.cs b/shodan_infrastructure/SmcRiscV32.cs
index c62c68d..579ecfb 100644
--- a/shodan_infrastructure/SmcRiscV32.cs
+++ b/shodan_infrastructure/SmcRiscV32.cs
@@ -13,6 +13,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+using System;
+using System.Collections.Generic;
+using Antmicro.Renode.Core.Structure.Registers;
 using Antmicro.Renode.Core;
 using Antmicro.Renode.Logging;
 using Antmicro.Renode.Peripherals.Bus;
@@ -21,35 +24,56 @@
 {
   public class SmcRiscV32_ControlBlock : IDoubleWordPeripheral, IKnownSize
   {
-    public SmcRiscV32_ControlBlock(RiscV32 cpu)
+    public SmcRiscV32_ControlBlock(RiscV32 cpu, long pc)
     {
       this.cpu = cpu;
+      this.startPC = pc;
+      DefineRegisters();
+      Reset();
     }
 
     public void Reset() // IPeripheral
     {
     }
 
-    public uint ReadDoubleWord(long offset) // IDoubleWordPeripheral
+    public uint ReadDoubleWord(long addr) // IDoubleWordPeripheral
     {
-      return cpu.PC;
+      return RegistersCollection.Read(addr);
     }
 
-    public void WriteDoubleWord(long offset, uint value) // IDoubleWordPeripheral
+    public void WriteDoubleWord(long addr, uint value) // IDoubleWordPeripheral
     {
-      if (value == 0) {
-        this.Log(LogLevel.Noisy, "Stopping SMC");
-        cpu.PC = 0;
-        cpu.IsHalted = true;
-      }
-      else {
-        this.Log(LogLevel.Noisy, "Starting SMC at 0x{0:X8}", value);
-        cpu.PC = value;
-        cpu.IsHalted = false;
-      }
+      RegistersCollection.Write(addr, value);
     }
 
-    public long Size => 0x4;
+    public long Size => 0x8;
     private RiscV32 cpu;
+    private long startPC;
+
+    public DoubleWordRegisterCollection RegistersCollection { get; private set; }
+    private void DefineRegisters() {
+      var registerDictionary = new Dictionary<long, DoubleWordRegister>
+      {{(long)Registers.BootEnRegwen, new DoubleWordRegister(this)
+        .WithReservedBits(0, 31)
+      },
+      {(long)Registers.BootEnCtrl, new DoubleWordRegister(this)
+        .WithFlag(0, FieldMode.Write, writeCallback: (_, val) => {
+          if (val) {
+            this.Log(LogLevel.Noisy, "Starting SMC at 0x{0:X}", this.startPC);
+            cpu.PC = this.startPC;
+            cpu.IsHalted = false;
+          } else {
+            this.Log(LogLevel.Noisy, "Stopping SMC");
+            cpu.PC = 0;
+            cpu.IsHalted = true;
+          }
+        })
+      }};
+      RegistersCollection = new DoubleWordRegisterCollection(this, registerDictionary);
+    }
+    public enum Registers {
+       BootEnRegwen = 0x0,
+       BootEnCtrl = 0x4,
+    }
   }
 }
