From 8c5fda2d53092138dc1fb6a65dc40f1fe6c1f62a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Quentin?= Date: Fri, 17 Nov 2023 11:49:40 +0100 Subject: [PATCH] Fix zero/copy data in esp-riscv-rt (#952) * Fix zero/copy data in esp-riscv-rt * CHANGELOG.md --- esp-riscv-rt/CHANGELOG.md | 1 + esp-riscv-rt/src/lib.rs | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/esp-riscv-rt/CHANGELOG.md b/esp-riscv-rt/CHANGELOG.md index b0395dc72..a663c74d0 100644 --- a/esp-riscv-rt/CHANGELOG.md +++ b/esp-riscv-rt/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed ### Fixed +- Fix overwriting rtc-uninit-data when there is no rtc-bss data (#952) ### Removed diff --git a/esp-riscv-rt/src/lib.rs b/esp-riscv-rt/src/lib.rs index 99e6d645d..e3e594958 100644 --- a/esp-riscv-rt/src/lib.rs +++ b/esp-riscv-rt/src/lib.rs @@ -305,26 +305,31 @@ _abs_start: r#" la a0, _bss_start la a1, _bss_end + bge a0, a1, 2f mv a3, x0 1: sw a3, 0(a0) addi a0, a0, 4 blt a0, a1, 1b + 2: "#, #[cfg(feature = "zero-rtc-fast-bss")] r#" la a0, _rtc_fast_bss_start la a1, _rtc_fast_bss_end + bge a0, a1, 2f mv a3, x0 1: sw a3, 0(a0) addi a0, a0, 4 blt a0, a1, 1b + 2: "#, #[cfg(feature = "init-data")] r#" la a0, _data_start la a1, _data_end + bge a0, a1, 2f la a2, _sidata 1: lw a3, 0(a2) @@ -332,11 +337,13 @@ _abs_start: addi a0, a0, 4 addi a2, a2, 4 blt a0, a1, 1b + 2: "#, #[cfg(feature = "init-rw-text")] r#" la a0, _srwtext la a1, _erwtext + bge a0, a1, 2f la a2, _irwtext 1: lw a3, 0(a2) @@ -344,11 +351,13 @@ _abs_start: addi a0, a0, 4 addi a2, a2, 4 blt a0, a1, 1b + 2: "#, #[cfg(feature = "init-rtc-fast-data")] r#" la a0, _rtc_fast_data_start la a1, _rtc_fast_data_end + bge a0, a1, 2f la a2, _irtc_fast_data 1: lw a3, 0(a2) @@ -356,11 +365,13 @@ _abs_start: addi a0, a0, 4 addi a2, a2, 4 blt a0, a1, 1b + 2: "#, #[cfg(feature = "init-rtc-fast-text")] r#" la a0, _srtc_fast_text la a1, _ertc_fast_text + bge a0, a1, 2f la a2, _irtc_fast_text 1: lw a3, 0(a2) @@ -368,6 +379,7 @@ _abs_start: addi a0, a0, 4 addi a2, a2, 4 blt a0, a1, 1b + 2: "#, r#" li x1, 0