diff --git a/Cargo.lock b/Cargo.lock index 8329c4a1a8..5f79aab95f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -464,6 +464,7 @@ dependencies = [ "caliptra-builder", "caliptra-cpu", "caliptra-drivers", + "caliptra-gen-linker-scripts", "caliptra-registers", "caliptra_common", "cfg-if 1.0.0", diff --git a/fmc/test-fw/test-rt/Cargo.toml b/fmc/test-fw/test-rt/Cargo.toml index 0349f870e6..753c1ee9e8 100644 --- a/fmc/test-fw/test-rt/Cargo.toml +++ b/fmc/test-fw/test-rt/Cargo.toml @@ -16,6 +16,8 @@ ureg.workspace = true [build-dependencies] cfg-if.workspace = true +caliptra_common = { workspace = true, default-features = false } +caliptra-gen-linker-scripts.workspace = true [dev-dependencies] caliptra-builder.workspace = true diff --git a/fmc/test-fw/test-rt/build.rs b/fmc/test-fw/test-rt/build.rs index 0068d64421..a7670891c1 100644 --- a/fmc/test-fw/test-rt/build.rs +++ b/fmc/test-fw/test-rt/build.rs @@ -6,11 +6,14 @@ fn main() { use std::env; use std::fs; use std::path::PathBuf; + use caliptra_gen_linker_scripts::gen_memory_x; let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); - // Put the linker script somewhere the linker can find it. - fs::write(out_dir.join("memory.x"), include_bytes!("memory.x")).unwrap(); + fs::write(out_dir.join("memory.x"),gen_memory_x(caliptra_common::RUNTIME_ORG, caliptra_common::RUNTIME_SIZE) + .as_bytes()) + .expect("Unable to generate memory.x"); + println!("cargo:rustc-link-search={}", out_dir.display()); println!("cargo:rerun-if-changed=memory.x"); diff --git a/fmc/test-fw/test-rt/memory.x b/fmc/test-fw/test-rt/memory.x deleted file mode 100644 index 405acd02ef..0000000000 --- a/fmc/test-fw/test-rt/memory.x +++ /dev/null @@ -1,45 +0,0 @@ - - -ROM_ORG = 0x00000000; -META_ORG = ROM_SIZE; -ICCM_ORG = 0x40004000; /* Range [0x40000000 - 0x40003FFF] is reserved for FMC */ -DCCM_ORG = 0x50000000; -FHT_ORG = 0x50003000; -DATA_ORG = 0x50004C00; -STACK_ORG = 0x5001C000; -ESTACK_ORG = 0x5001F800; -NSTACK_ORG = 0x5001FC00; - - -ROM_SIZE = 48K; -MBOX_SIZE = 128K; -ICCM_SIZE = 112K; -DCCM_SIZE = 128K; -MAN1_SIZE = 6K; -MAN2_SIZE = 6K; -FHT_SIZE = 2K; -DATA_SIZE = 93K; -STACK_SIZE = 14K; -ESTACK_SIZE = 1K; -NSTACK_SIZE = 1K; - - -MEMORY -{ - ROM (rx) : ORIGIN = ROM_ORG, LENGTH = ROM_SIZE - META (r) : ORIGIN = META_ORG, LENGTH = META_SIZE - ICCM (rx) : ORIGIN = ICCM_ORG, LENGTH = ICCM_SIZE - FHT (rw) : ORIGIN = FHT_ORG, LENGTH = FHT_SIZE - DATA (rw) : ORIGIN = DATA_ORG, LENGTH = DATA_SIZE - STACK(rw) : ORIGIN = STACK_ORG, LENGTH = STACK_SIZE - ESTACK (rw) : ORIGIN = ESTACK_ORG, LENGTH = ESTACK_SIZE - NSTACK (rw) : ORIGIN = NSTACK_ORG, LENGTH = NSTACK_SIZE -} -/* https://sourceware.org/binutils/docs/ld/REGION_005fALIAS.html#REGION_005fALIAS */ -REGION_ALIAS("REGION_TEXT", ICCM); -REGION_ALIAS("REGION_RODATA", ICCM); -REGION_ALIAS("REGION_DATA", DATA); -REGION_ALIAS("REGION_BSS", DATA); -REGION_ALIAS("REGION_STACK", STACK); -REGION_ALIAS("REGION_ESTACK", ESTACK); -REGION_ALIAS("REGION_NSTACK", NSTACK);