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