[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 07/11] RISC-V: Adding T-Head XMAE support
From: |
Christoph Muellner |
Subject: |
[PATCH 07/11] RISC-V: Adding T-Head XMAE support |
Date: |
Tue, 6 Sep 2022 14:22:39 +0200 |
From: Christoph Müllner <christoph.muellner@vrull.eu>
This patch adds support for the T-Head specific extended memory
attributes. Similar like Svpbmt, this support does not have much effect
as most behaviour is not modelled in QEMU.
We also don't set any EDATA information, because XMAE discovery is done
using the vendor ID in the Linux kernel.
Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
---
target/riscv/cpu.c | 1 +
target/riscv/cpu.h | 1 +
target/riscv/cpu_helper.c | 6 ++++--
3 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index e2d74fa701..990a1f57af 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -927,6 +927,7 @@ static Property riscv_cpu_extensions[] = {
DEFINE_PROP_BOOL("xtheadcondmov", RISCVCPU, cfg.ext_xtheadcondmov, false),
DEFINE_PROP_BOOL("xtheadmac", RISCVCPU, cfg.ext_xtheadmac, false),
DEFINE_PROP_BOOL("xtheadsync", RISCVCPU, cfg.ext_xtheadsync, false),
+ DEFINE_PROP_BOOL("xtheadxmae", RISCVCPU, cfg.ext_xtheadxmae, false),
DEFINE_PROP_BOOL("xventanacondops", RISCVCPU, cfg.ext_XVentanaCondOps,
false),
/* These are experimental so mark with 'x-' */
diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h
index d0dc4ab031..1982d9293f 100644
--- a/target/riscv/cpu.h
+++ b/target/riscv/cpu.h
@@ -447,6 +447,7 @@ struct RISCVCPUConfig {
bool ext_xtheadcondmov;
bool ext_xtheadmac;
bool ext_xtheadsync;
+ bool ext_xtheadxmae;
bool ext_XVentanaCondOps;
uint8_t pmu_num;
diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c
index 59b3680b1b..d7941e64e1 100644
--- a/target/riscv/cpu_helper.c
+++ b/target/riscv/cpu_helper.c
@@ -927,7 +927,8 @@ restart:
if (riscv_cpu_sxl(env) == MXL_RV32) {
ppn = pte >> PTE_PPN_SHIFT;
- } else if (cpu->cfg.ext_svpbmt || cpu->cfg.ext_svnapot) {
+ } else if (cpu->cfg.ext_svpbmt || cpu->cfg.ext_svnapot ||
+ cpu->cfg.ext_xtheadxmae) {
ppn = (pte & (target_ulong)PTE_PPN_MASK) >> PTE_PPN_SHIFT;
} else {
ppn = pte >> PTE_PPN_SHIFT;
@@ -939,7 +940,8 @@ restart:
if (!(pte & PTE_V)) {
/* Invalid PTE */
return TRANSLATE_FAIL;
- } else if (!cpu->cfg.ext_svpbmt && (pte & PTE_PBMT)) {
+ } else if (!cpu->cfg.ext_svpbmt && (pte & PTE_PBMT) &&
+ !cpu->cfg.ext_xtheadxmae) {
return TRANSLATE_FAIL;
} else if (!(pte & (PTE_R | PTE_W | PTE_X))) {
/* Inner PTE, continue walking */
--
2.37.2
- Re: [PATCH 03/11] RISC-V: Adding T-Head SYNC instructions, (continued)
- [PATCH 04/11] RISC-V: Adding T-Head Bitmanip instructions, Christoph Muellner, 2022/09/06
- [PATCH 02/11] RISC-V: Adding T-Head CMO instructions, Christoph Muellner, 2022/09/06
- [PATCH 06/11] RISC-V: Adding T-Head multiply-accumulate instructions, Christoph Muellner, 2022/09/06
- [PATCH 05/11] RISC-V: Adding T-Head CondMov instructions, Christoph Muellner, 2022/09/06
- [PATCH 07/11] RISC-V: Adding T-Head XMAE support,
Christoph Muellner <=
- [PATCH 08/11] RISC-V: Adding T-Head MemPair extension, Christoph Muellner, 2022/09/06
- [PATCH 10/11] RISC-V: Adding T-Head FMemIdx extension, Christoph Muellner, 2022/09/06
- [PATCH 09/11] RISC-V: Adding T-Head MemIdx extension, Christoph Muellner, 2022/09/06
- [PATCH 11/11] RISC-V: Add initial support for T-Head C906 and C910 CPUs, Christoph Muellner, 2022/09/06