mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2025-08-24 15:31:22 +01:00
lib: sbi: Enable Control Transfer Records (CTR) Ext using xstateen.
The Control Transfer Records (CTR) extension provides a method to record a limited branch history in register-accessible internal chip storage. This extension is similar to Arch LBR in x86 and BRBE in ARM. The Extension has been stable and the latest release can be found here https://github.com/riscv/riscv-control-transfer-records/release Signed-off-by: Rajnesh Kanwal <rkanwal@rivosinc.com> Reviewed-by: Atish Patra <atishp@rivosinc.com> Reviewed-by: Anup Patel <anup@brainfault.org> Link: https://lore.kernel.org/r/20250307124451.122828-1-rkanwal@rivosinc.com Signed-off-by: Anup Patel <anup@brainfault.org>
This commit is contained in:

committed by
Anup Patel

parent
afa0e3091b
commit
aa40c53ce4
@@ -105,6 +105,11 @@ static void mstatus_init(struct sbi_scratch *scratch)
|
||||
else
|
||||
mstateen_val &= ~(SMSTATEEN0_SVSLCT);
|
||||
|
||||
if (sbi_hart_has_extension(scratch, SBI_HART_EXT_SSCTR))
|
||||
mstateen_val |= SMSTATEEN0_CTR;
|
||||
else
|
||||
mstateen_val &= ~SMSTATEEN0_CTR;
|
||||
|
||||
csr_write(CSR_MSTATEEN0, mstateen_val);
|
||||
#if __riscv_xlen == 32
|
||||
csr_write(CSR_MSTATEEN0H, mstateen_val >> 32);
|
||||
@@ -688,6 +693,8 @@ const struct sbi_hart_ext_data sbi_hart_ext[] = {
|
||||
__SBI_HART_EXT_DATA(zicfilp, SBI_HART_EXT_ZICFILP),
|
||||
__SBI_HART_EXT_DATA(zicfiss, SBI_HART_EXT_ZICFISS),
|
||||
__SBI_HART_EXT_DATA(ssdbltrp, SBI_HART_EXT_SSDBLTRP),
|
||||
__SBI_HART_EXT_DATA(smctr, SBI_HART_EXT_SMCTR),
|
||||
__SBI_HART_EXT_DATA(ssctr, SBI_HART_EXT_SSCTR),
|
||||
};
|
||||
|
||||
_Static_assert(SBI_HART_EXT_MAX == array_size(sbi_hart_ext),
|
||||
|
Reference in New Issue
Block a user