[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC v4 16/16] target/riscv: rvb: support and turn on B-extension from c
From: |
frank . chang |
Subject: |
[RFC v4 16/16] target/riscv: rvb: support and turn on B-extension from command line |
Date: |
Wed, 13 Jan 2021 15:13:48 +0800 |
From: Kito Cheng <kito.cheng@sifive.com>
B-extension is default off, use cpu rv32 or rv64 with x-b=true to
enable B-extension.
Signed-off-by: Kito Cheng <kito.cheng@sifive.com>
Signed-off-by: Frank Chang <frank.chang@sifive.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
target/riscv/cpu.c | 4 ++++
target/riscv/cpu.h | 2 ++
2 files changed, 6 insertions(+)
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index 8227d7aea9d..7379a0abc6c 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -472,6 +472,9 @@ static void riscv_cpu_realize(DeviceState *dev, Error
**errp)
if (cpu->cfg.ext_h) {
target_misa |= RVH;
}
+ if (cpu->cfg.ext_b) {
+ target_misa |= RVB;
+ }
if (cpu->cfg.ext_v) {
target_misa |= RVV;
if (!is_power_of_2(cpu->cfg.vlen)) {
@@ -542,6 +545,7 @@ static Property riscv_cpu_properties[] = {
DEFINE_PROP_BOOL("s", RISCVCPU, cfg.ext_s, true),
DEFINE_PROP_BOOL("u", RISCVCPU, cfg.ext_u, true),
/* This is experimental so mark with 'x-' */
+ DEFINE_PROP_BOOL("x-b", RISCVCPU, cfg.ext_b, false),
DEFINE_PROP_BOOL("x-h", RISCVCPU, cfg.ext_h, false),
DEFINE_PROP_BOOL("x-v", RISCVCPU, cfg.ext_v, false),
DEFINE_PROP_BOOL("Counters", RISCVCPU, cfg.ext_counters, true),
diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h
index 6339e848192..d5271906db4 100644
--- a/target/riscv/cpu.h
+++ b/target/riscv/cpu.h
@@ -72,6 +72,7 @@
#define RVS RV('S')
#define RVU RV('U')
#define RVH RV('H')
+#define RVB RV('B')
/* S extension denotes that Supervisor mode exists, however it is possible
to have a core that support S mode but does not have an MMU and there
@@ -282,6 +283,7 @@ struct RISCVCPU {
bool ext_f;
bool ext_d;
bool ext_c;
+ bool ext_b;
bool ext_s;
bool ext_u;
bool ext_h;
--
2.17.1
- [RFC v4 07/16] target/riscv: rvb: sign-extend instructions, (continued)
- [RFC v4 07/16] target/riscv: rvb: sign-extend instructions, frank . chang, 2021/01/13
- [RFC v4 08/16] target/riscv: add gen_shifti() and gen_shiftiw() helper functions, frank . chang, 2021/01/13
- [RFC v4 09/16] target/riscv: rvb: single-bit instructions, frank . chang, 2021/01/13
- [RFC v4 10/16] target/riscv: rvb: shift ones, frank . chang, 2021/01/13
- [RFC v4 11/16] target/riscv: rvb: rotate (left/right), frank . chang, 2021/01/13
- [RFC v4 12/16] target/riscv: rvb: generalized reverse, frank . chang, 2021/01/13
- [RFC v4 13/16] target/riscv: rvb: generalized or-combine, frank . chang, 2021/01/13
- [RFC v4 14/16] target/riscv: rvb: address calculation, frank . chang, 2021/01/13
- [RFC v4 15/16] target/riscv: rvb: add/shift with prefix zero-extend, frank . chang, 2021/01/13
- [RFC v4 16/16] target/riscv: rvb: support and turn on B-extension from command line,
frank . chang <=