Update memory address to support debug

Have separated debug linker scripts to support debug vs. release

Change-Id: I218ebe261a27782c40557715c4a4c8e939081392
diff --git a/app/.cargo/config.toml b/app/.cargo/config.toml
index 63e62c3..4db3c2d 100644
--- a/app/.cargo/config.toml
+++ b/app/.cargo/config.toml
@@ -1,9 +1,10 @@
 [build]
 target = "riscv32imc-unknown-none-elf"
 target-dir = "../../../out/matcha"
+# linker script flag "-C" "link-arg=-Tlayout_matcha.ld" is defined externally
+# to separate debug vs. release mode.
 rustflags = [
-    "-C", "relocation-model=static",
-    "-C", "link-arg=-Tlayout_matcha.ld",
+    "-C", "relocation-model=static"
 ]
 
 # this doesn't work in our version of cargo yet
diff --git a/app/layout_matcha_debug.ld b/app/layout_matcha_debug.ld
new file mode 100644
index 0000000..096b5a4
--- /dev/null
+++ b/app/layout_matcha_debug.ld
@@ -0,0 +1,18 @@
+/* Layout for the RISC-V 32 boards, used by the examples in this repository. */
+
+MEMORY {
+  /*
+   * The TBF header can change in size so use 0x40 combined with
+   * --protected-region-size with elf2tab to cover a header upto that
+   * size.
+   *
+   * Note that the SRAM address may need to be changed depending on
+   * the kernel binary, check for the actual address of APP_MEMORY!
+   */
+  FLASH (rx) : ORIGIN = 0x20800040, LENGTH = 0x800000 - 0x40
+  SRAM (rwx) : ORIGIN = 0x10800000, LENGTH = 0x800000
+}
+
+MPU_MIN_ALIGN = 1K;
+
+INCLUDE layout_generic.ld
diff --git a/platform/.cargo/config.toml b/platform/.cargo/config.toml
index d92c351..cadd9fd 100644
--- a/platform/.cargo/config.toml
+++ b/platform/.cargo/config.toml
@@ -1,8 +1,9 @@
 [build]
 target = "riscv32imc-unknown-none-elf"
 target-dir = "../../../out/matcha"
+# linker script flag "-C" "link-arg=-Tlayout.ld" is defined externally
+# to separate debug vs. release mode.
 rustflags = [
-    "-C", "link-arg=-Tlayout.ld",
     "-C", "linker=rust-lld",
     "-C", "linker-flavor=ld.lld",
     "-C", "relocation-model=dynamic-no-pic",
diff --git a/platform/layout_debug.ld b/platform/layout_debug.ld
new file mode 100644
index 0000000..4ef628e
--- /dev/null
+++ b/platform/layout_debug.ld
@@ -0,0 +1,25 @@
+MEMORY
+{
+  /*
+  For debugging, use 8M rom, 8M prog, 16M ram.
+  */
+  rom   (rx)  : ORIGIN = 0x20000000, LENGTH = 0x0800000
+  prog  (rx)  : ORIGIN = 0x20800000, LENGTH = 0x0800000
+  ram   (!rx) : ORIGIN = 0x10000000, LENGTH = 0x1000000
+}
+
+MPU_MIN_ALIGN = 1K;
+SECTIONS {
+    /*
+     * The flash header needs to match what the boot ROM for OpenTitan is
+     * expecting.  At the moment, it contains only the entry point, but it
+     * will eventually contain the signature -- and (hopefully?!) some
+     * versioning information to make it slightly easier to debug when the
+     * boot ROM and Tock are out of sync with respect to the definition...
+     */
+    .flash_header : {
+        LONG(_stext)
+    } > rom
+}
+
+INCLUDE kernel_layout.ld