Properly zero the shadow memory on Sonata.
diff --git a/sdk/boards/sonata.json b/sdk/boards/sonata.json
index 021378e..a79244d 100644
--- a/sdk/boards/sonata.json
+++ b/sdk/boards/sonata.json
@@ -36,7 +36,12 @@
             "edge_triggered": true
         }
     ],
-    "defines" : ["IBEX", "SUNBURST"],
+    "defines" : [
+        "IBEX",
+        "SUNBURST",
+        "SUNBURST_SHADOW_BASE=0x30000000",
+        "SUNBURST_SHADOW_SIZE=0x4000"
+    ],
     "driver_includes" : [
         "../include/platform/sunburst",
         "../include/platform/generic-riscv"
diff --git a/sdk/include/platform/sunburst/platform-early_boot.inc b/sdk/include/platform/sunburst/platform-early_boot.inc
new file mode 100644
index 0000000..d21e9fe
--- /dev/null
+++ b/sdk/include/platform/sunburst/platform-early_boot.inc
@@ -0,0 +1,7 @@
+	// The shadow memory may not be zeroed, ensure it is before we start or
+	// random capability loads will fail.
+	li         a0, SUNBURST_SHADOW_BASE
+	cspecialr  ca4, mtdc
+	csetaddr   ca0, ca4, a0
+	li         a1, SUNBURST_SHADOW_BASE + SUNBURST_SHADOW_SIZE
+	cjal       .Lfill_block