From 8233c250deb8fe2954897adc0fa0f4ee65b8f270 Mon Sep 17 00:00:00 2001 From: wuzhenghui Date: Thu, 12 Dec 2024 10:37:13 +0800 Subject: [PATCH] feat(esp_hw_support): add branch prediction config retention --- .../esp_hw_support/lowpower/port/esp32p4/rvsleep-frames.h | 1 + components/esp_hw_support/lowpower/port/esp32p4/sleep_cpu.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/components/esp_hw_support/lowpower/port/esp32p4/rvsleep-frames.h b/components/esp_hw_support/lowpower/port/esp32p4/rvsleep-frames.h index 0d1735bf7a..76c88a8d0b 100644 --- a/components/esp_hw_support/lowpower/port/esp32p4/rvsleep-frames.h +++ b/components/esp_hw_support/lowpower/port/esp32p4/rvsleep-frames.h @@ -113,6 +113,7 @@ STRUCT_END(RvCoreCriticalSleepFrame) STRUCT_BEGIN STRUCT_FIELD (long, 4, RV_SLP_CTX_MSCRATCH, mscratch) STRUCT_FIELD (long, 4, RV_SLP_CTX_MISA, misa) + STRUCT_FIELD (long, 4, RV_SLP_CTX_MHCR, mhcr) STRUCT_FIELD (long, 4, RV_SLP_CTX_TSELECT, tselect) STRUCT_FIELD (long, 4, RV_SLP_CTX_TDATA1, tdata1) STRUCT_FIELD (long, 4, RV_SLP_CTX_TDATA2, tdata2) diff --git a/components/esp_hw_support/lowpower/port/esp32p4/sleep_cpu.c b/components/esp_hw_support/lowpower/port/esp32p4/sleep_cpu.c index 409b2495b4..79d9da85ec 100644 --- a/components/esp_hw_support/lowpower/port/esp32p4/sleep_cpu.c +++ b/components/esp_hw_support/lowpower/port/esp32p4/sleep_cpu.c @@ -192,6 +192,7 @@ static TCM_IRAM_ATTR RvCoreNonCriticalSleepFrame * rv_core_noncritical_regs_save frame->mscratch = RV_READ_CSR(mscratch); frame->misa = RV_READ_CSR(misa); + frame->mhcr = RV_READ_CSR(MHCR); frame->tselect = RV_READ_CSR(tselect); frame->tdata1 = RV_READ_CSR(tdata1); frame->tdata2 = RV_READ_CSR(tdata2); @@ -260,6 +261,7 @@ static TCM_IRAM_ATTR void rv_core_noncritical_regs_restore(void) RV_WRITE_CSR(mscratch, frame->mscratch); RV_WRITE_CSR(misa, frame->misa); + RV_WRITE_CSR(MHCR, frame->mhcr); RV_WRITE_CSR(tselect, frame->tselect); RV_WRITE_CSR(tdata1, frame->tdata1); RV_WRITE_CSR(tdata2, frame->tdata2);