[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v14 10/20] target/riscv: Add zicfiss extension
From: |
Deepak Gupta |
Subject: |
[PATCH v14 10/20] target/riscv: Add zicfiss extension |
Date: |
Thu, 12 Sep 2024 16:53:10 -0700 |
zicfiss [1] riscv cpu extension enables backward control flow integrity.
This patch sets up space for zicfiss extension in cpuconfig. And imple-
ments dependency on A, zicsr, zimop and zcmop extensions.
[1] - https://github.com/riscv/riscv-cfi
Signed-off-by: Deepak Gupta <debug@rivosinc.com>
Co-developed-by: Jim Shu <jim.shu@sifive.com>
Co-developed-by: Andy Chiu <andy.chiu@sifive.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
---
target/riscv/cpu.c | 1 +
target/riscv/cpu_cfg.h | 1 +
target/riscv/tcg/tcg-cpu.c | 23 +++++++++++++++++++++++
3 files changed, 25 insertions(+)
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index b4b578003f..f5513fab03 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -107,6 +107,7 @@ const RISCVIsaExtData isa_edata_arr[] = {
ISA_EXT_DATA_ENTRY(zicclsm, PRIV_VERSION_1_11_0, has_priv_1_11),
ISA_EXT_DATA_ENTRY(ziccrse, PRIV_VERSION_1_11_0, has_priv_1_11),
ISA_EXT_DATA_ENTRY(zicfilp, PRIV_VERSION_1_12_0, ext_zicfilp),
+ ISA_EXT_DATA_ENTRY(zicfiss, PRIV_VERSION_1_13_0, ext_zicfiss),
ISA_EXT_DATA_ENTRY(zicond, PRIV_VERSION_1_12_0, ext_zicond),
ISA_EXT_DATA_ENTRY(zicntr, PRIV_VERSION_1_12_0, ext_zicntr),
ISA_EXT_DATA_ENTRY(zicsr, PRIV_VERSION_1_10_0, ext_zicsr),
diff --git a/target/riscv/cpu_cfg.h b/target/riscv/cpu_cfg.h
index fe7ad85b66..59d6fc445d 100644
--- a/target/riscv/cpu_cfg.h
+++ b/target/riscv/cpu_cfg.h
@@ -68,6 +68,7 @@ struct RISCVCPUConfig {
bool ext_zicbop;
bool ext_zicboz;
bool ext_zicfilp;
+ bool ext_zicfiss;
bool ext_zicond;
bool ext_zihintntl;
bool ext_zihintpause;
diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c
index 963c1c604a..6c0c319499 100644
--- a/target/riscv/tcg/tcg-cpu.c
+++ b/target/riscv/tcg/tcg-cpu.c
@@ -618,6 +618,29 @@ void riscv_cpu_validate_set_extensions(RISCVCPU *cpu,
Error **errp)
cpu->cfg.ext_zihpm = false;
}
+ if (cpu->cfg.ext_zicfiss) {
+ if (!cpu->cfg.ext_zicsr) {
+ error_setg(errp, "zicfiss extension requires zicsr extension");
+ return;
+ }
+ if (!riscv_has_ext(env, RVA)) {
+ error_setg(errp, "zicfiss extension requires A extension");
+ return;
+ }
+ if (!riscv_has_ext(env, RVS)) {
+ error_setg(errp, "zicfiss extension requires S");
+ return;
+ }
+ if (!cpu->cfg.ext_zimop) {
+ error_setg(errp, "zicfiss extension requires zimop extension");
+ return;
+ }
+ if (cpu->cfg.ext_zca && !cpu->cfg.ext_zcmop) {
+ error_setg(errp, "zicfiss with zca requires zcmop extension");
+ return;
+ }
+ }
+
if (!cpu->cfg.ext_zihpm) {
cpu->cfg.pmu_mask = 0;
cpu->pmu_avail_ctrs = 0;
--
2.45.0
- [PATCH v14 00/20] riscv support for control flow integrity extensions, Deepak Gupta, 2024/09/12
- [PATCH v14 01/20] target/riscv: expose *envcfg csr and priv to qemu-user as well, Deepak Gupta, 2024/09/12
- [PATCH v14 02/20] target/riscv: Add zicfilp extension, Deepak Gupta, 2024/09/12
- [PATCH v14 03/20] target/riscv: Introduce elp state and enabling controls for zicfilp, Deepak Gupta, 2024/09/12
- [PATCH v14 04/20] target/riscv: save and restore elp state on priv transitions, Deepak Gupta, 2024/09/12
- [PATCH v14 05/20] target/riscv: additional code information for sw check, Deepak Gupta, 2024/09/12
- [PATCH v14 06/20] target/riscv: tracking indirect branches (fcfi) for zicfilp, Deepak Gupta, 2024/09/12
- [PATCH v14 07/20] target/riscv: zicfilp `lpad` impl and branch tracking, Deepak Gupta, 2024/09/12
- [PATCH v14 08/20] disas/riscv: enable `lpad` disassembly, Deepak Gupta, 2024/09/12
- [PATCH v14 09/20] target/riscv: Expose zicfilp extension as a cpu property, Deepak Gupta, 2024/09/12
- [PATCH v14 10/20] target/riscv: Add zicfiss extension,
Deepak Gupta <=
- [PATCH v14 11/20] target/riscv: introduce ssp and enabling controls for zicfiss, Deepak Gupta, 2024/09/12
- [PATCH v14 12/20] target/riscv: tb flag for shadow stack instructions, Deepak Gupta, 2024/09/12
- [PATCH v14 13/20] target/riscv: mmu changes for zicfiss shadow stack protection, Deepak Gupta, 2024/09/12
- [PATCH v14 14/20] target/riscv: AMO operations always raise store/AMO fault, Deepak Gupta, 2024/09/12
- [PATCH v14 16/20] target/riscv: implement zicfiss instructions, Deepak Gupta, 2024/09/12
- [PATCH v14 17/20] target/riscv: compressed encodings for sspush and sspopchk, Deepak Gupta, 2024/09/12
- [PATCH v14 15/20] target/riscv: update `decode_save_opc` to store extra word2, Deepak Gupta, 2024/09/12
- [PATCH v14 18/20] disas/riscv: enable disassembly for zicfiss instructions, Deepak Gupta, 2024/09/12
- [PATCH v14 19/20] disas/riscv: enable disassembly for compressed sspush/sspopchk, Deepak Gupta, 2024/09/12
- [PATCH v14 20/20] target/riscv: Expose zicfiss extension as a cpu property, Deepak Gupta, 2024/09/12