diff options
author | Deepak Gupta <debug@rivosinc.com> | 2024-10-08 15:49:56 -0700 |
---|---|---|
committer | Alistair Francis <alistair.francis@wdc.com> | 2024-10-30 11:22:08 +1000 |
commit | b039c9611331ccf61a53b2d26d80a8cfb596e0ce (patch) | |
tree | c734f6116db273a462ce2c842191d6ba02311f1e /scripts/qom-cast-macro-clean-cocci-gen.py | |
parent | 6031102401ae8a69a87b20fbec2aae666625d96a (diff) | |
download | qemu-b039c9611331ccf61a53b2d26d80a8cfb596e0ce.zip qemu-b039c9611331ccf61a53b2d26d80a8cfb596e0ce.tar.gz qemu-b039c9611331ccf61a53b2d26d80a8cfb596e0ce.tar.bz2 |
target/riscv: tracking indirect branches (fcfi) for zicfilp
zicfilp protects forward control flow (if enabled) by enforcing all
indirect call and jmp must land on a landing pad instruction `lpad`. If
target of an indirect call or jmp is not `lpad` then cpu/hart must raise
a sw check exception with tval = 2.
This patch implements the mechanism using TCG. Target architecture branch
instruction must define the end of a TB. Using this property, during
translation of branch instruction, TB flag = FCFI_LP_EXPECTED can be set.
Translation of target TB can check if FCFI_LP_EXPECTED flag is set and a
flag (fcfi_lp_expected) can be set in DisasContext. If `lpad` gets
translated, fcfi_lp_expected flag in DisasContext can be cleared. Else
it'll fault.
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>
Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-ID: <20241008225010.1861630-7-debug@rivosinc.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Diffstat (limited to 'scripts/qom-cast-macro-clean-cocci-gen.py')
0 files changed, 0 insertions, 0 deletions