OSDN Git Service

target/riscv: implement Zicboz extension
authorChristoph Muellner <cmuellner@linux.com>
Fri, 24 Feb 2023 13:25:34 +0000 (10:25 -0300)
committerPalmer Dabbelt <palmer@rivosinc.com>
Sun, 5 Mar 2023 19:49:20 +0000 (11:49 -0800)
commita939c500793ae7672defe5e3dc83220576a7b202
tree6565b989712d950973e8b7a3edb239c8c8b6898b
parent2946e1af2704bf6584f57d4e3aec49d1d5f3ecc0
target/riscv: implement Zicboz extension

The RISC-V base cache management operation (CBO) ISA extension has been
ratified. It defines three extensions: Cache-Block Management, Cache-Block
Prefetch and Cache-Block Zero. More information about the spec can be
found at [1].

Let's start by implementing the Cache-Block Zero extension, Zicboz. It
uses the cbo.zero instruction that, as with all CBO instructions that
will be added later, needs to be implemented in an overlap group with
the LQ instruction due to overlapping patterns.

cbo.zero throws a Illegal Instruction/Virtual Instruction exception
depending on CSR state. This is also the case for the remaining cbo
instructions we're going to add next, so create a check_zicbo_envcfg()
that will be used by all Zicbo[mz] instructions.

[1] https://github.com/riscv/riscv-CMOs/blob/master/specifications/cmobase-v1.0.1.pdf

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Co-developed-by: Philipp Tomsich <philipp.tomsich@vrull.eu>
Signed-off-by: Christoph Muellner <cmuellner@linux.com>
Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Reviewed-by: Weiwei Li <liweiwei@iscas.ac.cn>
Message-ID: <20230224132536.552293-3-dbarboza@ventanamicro.com>
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
target/riscv/cpu.c
target/riscv/cpu.h
target/riscv/helper.h
target/riscv/insn32.decode
target/riscv/insn_trans/trans_rvzicbo.c.inc [new file with mode: 0644]
target/riscv/op_helper.c
target/riscv/translate.c