From fbf1f40f4419d3d1ddc90f6d85ec6182f38b6d08 Mon Sep 17 00:00:00 2001 From: Zach Halvorsen Date: Mon, 21 Oct 2024 23:31:11 +0000 Subject: [PATCH] Add feature to skip clearing SRAM in ROM. This allows ROM builds to skip clearing SRAM with the feature `skip-clear-sram`. This can be useful for simulation builds where clearing SRAM takes a significant amount of time. --- rom/dev/Cargo.toml | 1 + rom/dev/src/start.S | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/rom/dev/Cargo.toml b/rom/dev/Cargo.toml index 9442fa3807..a0d3f8b09b 100644 --- a/rom/dev/Cargo.toml +++ b/rom/dev/Cargo.toml @@ -60,6 +60,7 @@ itrng = ["caliptra-hw-model/itrng"] verilator = ["caliptra-hw-model/verilator"] no-fmc = [] fake-rom = [] +skip-clear-sram = [] no-cfi = ["caliptra-image-verify/no-cfi", "caliptra-drivers/no-cfi"] slow_tests = [] "hw-1.0" = ["caliptra-builder/hw-1.0", "caliptra-drivers/hw-1.0", "caliptra-registers/hw-1.0", "caliptra-hw-model/hw-1.0"] diff --git a/rom/dev/src/start.S b/rom/dev/src/start.S index 2e2a57a37f..b00d43a07a 100644 --- a/rom/dev/src/start.S +++ b/rom/dev/src/start.S @@ -104,6 +104,7 @@ _start: andi t1, t1, 0x3 bne t1, x0, post_ecc_init +#ifndef CARGO_FEATURE_SKIP_CLEAR_SRAM // // Cold Boot // @@ -117,6 +118,7 @@ _start: la a0, DCCM_ORG // dest la a1, DCCM_SIZE // len call _zero_mem256 +#endif // CARGO_FEATURE_SKIP_CLEAR_SRAM post_ecc_init: @@ -354,9 +356,11 @@ exit_rom: // Save the FMC address addi a3, a0, 0 +#ifndef CARGO_FEATURE_SKIP_CLEAR_SRAM la a0, STACK_ORG // dest la a1, STACK_SIZE // len call _zero_mem256 +#endif // CARGO_FEATURE_SKIP_CLEAR_SRAM // Clear all registers li x1, 0; li x2, 0; li x3, 0; li x4, 0;