Skip to content

Commit cf8651f

Browse files
clementlegerpalmer-dabbelt
authored andcommitted
riscv: sbi: add Firmware Feature (FWFT) SBI extensions definitions
The Firmware Features extension (FWFT) was added as part of the SBI 3.0 specification. Add SBI definitions to use this extension. Signed-off-by: Clément Léger <[email protected]> Reviewed-by: Samuel Holland <[email protected]> Tested-by: Samuel Holland <[email protected]> Reviewed-by: Deepak Gupta <[email protected]> Reviewed-by: Andrew Jones <[email protected]> Reviewed-by: Atish Patra <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Palmer Dabbelt <[email protected]>
1 parent 82f2b0b commit cf8651f

File tree

1 file changed

+33
-0
lines changed
  • arch/riscv/include/asm

1 file changed

+33
-0
lines changed

arch/riscv/include/asm/sbi.h

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ enum sbi_ext_id {
3535
SBI_EXT_DBCN = 0x4442434E,
3636
SBI_EXT_STA = 0x535441,
3737
SBI_EXT_NACL = 0x4E41434C,
38+
SBI_EXT_FWFT = 0x46574654,
3839

3940
/* Experimentals extensions must lie within this range */
4041
SBI_EXT_EXPERIMENTAL_START = 0x08000000,
@@ -402,6 +403,33 @@ enum sbi_ext_nacl_feature {
402403
#define SBI_NACL_SHMEM_SRET_X(__i) ((__riscv_xlen / 8) * (__i))
403404
#define SBI_NACL_SHMEM_SRET_X_LAST 31
404405

406+
/* SBI function IDs for FW feature extension */
407+
#define SBI_EXT_FWFT_SET 0x0
408+
#define SBI_EXT_FWFT_GET 0x1
409+
410+
enum sbi_fwft_feature_t {
411+
SBI_FWFT_MISALIGNED_EXC_DELEG = 0x0,
412+
SBI_FWFT_LANDING_PAD = 0x1,
413+
SBI_FWFT_SHADOW_STACK = 0x2,
414+
SBI_FWFT_DOUBLE_TRAP = 0x3,
415+
SBI_FWFT_PTE_AD_HW_UPDATING = 0x4,
416+
SBI_FWFT_POINTER_MASKING_PMLEN = 0x5,
417+
SBI_FWFT_LOCAL_RESERVED_START = 0x6,
418+
SBI_FWFT_LOCAL_RESERVED_END = 0x3fffffff,
419+
SBI_FWFT_LOCAL_PLATFORM_START = 0x40000000,
420+
SBI_FWFT_LOCAL_PLATFORM_END = 0x7fffffff,
421+
422+
SBI_FWFT_GLOBAL_RESERVED_START = 0x80000000,
423+
SBI_FWFT_GLOBAL_RESERVED_END = 0xbfffffff,
424+
SBI_FWFT_GLOBAL_PLATFORM_START = 0xc0000000,
425+
SBI_FWFT_GLOBAL_PLATFORM_END = 0xffffffff,
426+
};
427+
428+
#define SBI_FWFT_PLATFORM_FEATURE_BIT BIT(30)
429+
#define SBI_FWFT_GLOBAL_FEATURE_BIT BIT(31)
430+
431+
#define SBI_FWFT_SET_FLAG_LOCK BIT(0)
432+
405433
/* SBI spec version fields */
406434
#define SBI_SPEC_VERSION_DEFAULT 0x1
407435
#define SBI_SPEC_VERSION_MAJOR_SHIFT 24
@@ -419,6 +447,11 @@ enum sbi_ext_nacl_feature {
419447
#define SBI_ERR_ALREADY_STARTED -7
420448
#define SBI_ERR_ALREADY_STOPPED -8
421449
#define SBI_ERR_NO_SHMEM -9
450+
#define SBI_ERR_INVALID_STATE -10
451+
#define SBI_ERR_BAD_RANGE -11
452+
#define SBI_ERR_TIMEOUT -12
453+
#define SBI_ERR_IO -13
454+
#define SBI_ERR_DENIED_LOCKED -14
422455

423456
extern unsigned long sbi_spec_version;
424457
struct sbiret {

0 commit comments

Comments
 (0)