You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2024/03/09 03:52:18 UTC
(nuttx) branch master updated: riscv/k230: minor revision on PMP settings
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 02d097ac4d riscv/k230: minor revision on PMP settings
02d097ac4d is described below
commit 02d097ac4d57746d27d8dbebeeae8958b766e041
Author: Yanfeng Liu <yf...@qq.com>
AuthorDate: Fri Mar 8 15:01:28 2024 +0800
riscv/k230: minor revision on PMP settings
This patch simplifies PMP handling for K230 using common APIs.
It also uses `g_misa` variable to expose the MISA issue.
Signed-off-by: Yanfeng Liu <yf...@qq.com>
---
arch/risc-v/src/k230/k230_hart.c | 20 +++++++-------------
arch/risc-v/src/k230/k230_hart.h | 5 -----
arch/risc-v/src/k230/k230_userspace.c | 5 ++---
3 files changed, 9 insertions(+), 21 deletions(-)
diff --git a/arch/risc-v/src/k230/k230_hart.c b/arch/risc-v/src/k230/k230_hart.c
index 73cbce2f23..8fc69a2bb1 100644
--- a/arch/risc-v/src/k230/k230_hart.c
+++ b/arch/risc-v/src/k230/k230_hart.c
@@ -87,7 +87,7 @@
#if !defined(CONFIG_BUILD_KERNEL) || defined(CONFIG_NUTTSBI)
-static bool g_big = false; /* true if running on big core */
+static volatile uint64_t g_misa = 0;
/****************************************************************************
* Private Functions
@@ -127,28 +127,21 @@ static void k230_hart_cleanup(void)
void k230_hart_init(void)
{
- /* TODO: when called from sbi_start(), MISA is 0 somehow. */
-
- g_big = (READ_CSR(CSR_MISA) & (1 << 21));
-
k230_hart_cleanup();
WRITE_CSR(CSR_MXSTATUS, XSTATUS);
WRITE_CSR(CSR_MHCR, MHCR);
WRITE_CSR(CSR_MCOR, MCOR);
WRITE_CSR(CSR_MSMPR, MSMPR);
- WRITE_CSR(CSR_MCCR2, g_big ? MCCR2_BIG : MCCR2);
- WRITE_CSR(CSR_MHINT, g_big ? MHINT_BIG : MHINT);
+ WRITE_CSR(CSR_MCCR2, MCCR2);
+ WRITE_CSR(CSR_MHINT, MHINT);
#ifdef RISCV_PBMT
SET_CSR(CSR_MENVCFG, MENVCFG_PBMT);
#endif
+ /* TODO: why 0 when reading from NuttSBI S-mode? */
-#ifdef CONFIG_NUTTSBI
- /* Some PMP entries might have been locked */
-
- k230_add_pmp(PMPCFG_A_NAPOT | PMPCFG_RWX_MASK, 0, 1024ul << 30);
-#endif
+ while (!(g_misa = READ_CSR(CSR_MISA)));
}
/****************************************************************************
@@ -158,7 +151,8 @@ void k230_hart_init(void)
bool k230_hart_is_big(void)
{
- return g_big;
+ sinfo("g_misa=%lx\n", g_misa);
+ return g_misa & (1 << 21);
}
/****************************************************************************
diff --git a/arch/risc-v/src/k230/k230_hart.h b/arch/risc-v/src/k230/k230_hart.h
index 6fca55b0e8..cd5a5cf9a1 100644
--- a/arch/risc-v/src/k230/k230_hart.h
+++ b/arch/risc-v/src/k230/k230_hart.h
@@ -25,11 +25,6 @@
* Preprocessor Macros
****************************************************************************/
-/* add PMP entry with (attr, base, size) */
-
-#define k230_add_pmp(a, b, s) riscv_config_pmp_region( \
- riscv_next_free_pmp_region(), a, b, s)
-
#define CSR_MSECCFG 0x747
#define CSR_MSECCFGH 0x757
diff --git a/arch/risc-v/src/k230/k230_userspace.c b/arch/risc-v/src/k230/k230_userspace.c
index e6b7641cb4..c1e1135a90 100644
--- a/arch/risc-v/src/k230/k230_userspace.c
+++ b/arch/risc-v/src/k230/k230_userspace.c
@@ -34,7 +34,6 @@
#include "k230_userspace.h"
#include "riscv_internal.h"
-#include "k230_hart.h"
#ifdef CONFIG_BUILD_PROTECTED
@@ -128,8 +127,8 @@ void k230_userspace(void)
static void configure_mpu(void)
{
- k230_add_pmp(UFLASH_F, UFLASH_START, UFLASH_SIZE);
- k230_add_pmp(USRAM_F, USRAM_START, USRAM_SIZE);
+ riscv_append_pmp_region(UFLASH_F, UFLASH_START, UFLASH_SIZE);
+ riscv_append_pmp_region(USRAM_F, USRAM_START, USRAM_SIZE);
}
#endif /* CONFIG_BUILD_PROTECTED */