diff options
Diffstat (limited to 'tools/testing/selftests/kvm/include/riscv/processor.h')
| -rw-r--r-- | tools/testing/selftests/kvm/include/riscv/processor.h | 49 | 
1 files changed, 10 insertions, 39 deletions
diff --git a/tools/testing/selftests/kvm/include/riscv/processor.h b/tools/testing/selftests/kvm/include/riscv/processor.h index ce473fe251dd..5f389166338c 100644 --- a/tools/testing/selftests/kvm/include/riscv/processor.h +++ b/tools/testing/selftests/kvm/include/riscv/processor.h @@ -50,6 +50,16 @@ static inline uint64_t __kvm_reg_id(uint64_t type, uint64_t subtype,  bool __vcpu_has_ext(struct kvm_vcpu *vcpu, uint64_t ext); +static inline bool __vcpu_has_isa_ext(struct kvm_vcpu *vcpu, uint64_t isa_ext) +{ +	return __vcpu_has_ext(vcpu, RISCV_ISA_EXT_REG(isa_ext)); +} + +static inline bool __vcpu_has_sbi_ext(struct kvm_vcpu *vcpu, uint64_t sbi_ext) +{ +	return __vcpu_has_ext(vcpu, RISCV_SBI_EXT_REG(sbi_ext)); +} +  struct ex_regs {  	unsigned long ra;  	unsigned long sp; @@ -154,45 +164,6 @@ void vm_install_interrupt_handler(struct kvm_vm *vm, exception_handler_fn handle  #define PGTBL_PAGE_SIZE				PGTBL_L0_BLOCK_SIZE  #define PGTBL_PAGE_SIZE_SHIFT			PGTBL_L0_BLOCK_SHIFT -/* SBI return error codes */ -#define SBI_SUCCESS				0 -#define SBI_ERR_FAILURE				-1 -#define SBI_ERR_NOT_SUPPORTED			-2 -#define SBI_ERR_INVALID_PARAM			-3 -#define SBI_ERR_DENIED				-4 -#define SBI_ERR_INVALID_ADDRESS			-5 -#define SBI_ERR_ALREADY_AVAILABLE		-6 -#define SBI_ERR_ALREADY_STARTED			-7 -#define SBI_ERR_ALREADY_STOPPED			-8 - -#define SBI_EXT_EXPERIMENTAL_START		0x08000000 -#define SBI_EXT_EXPERIMENTAL_END		0x08FFFFFF - -#define KVM_RISCV_SELFTESTS_SBI_EXT		SBI_EXT_EXPERIMENTAL_END -#define KVM_RISCV_SELFTESTS_SBI_UCALL		0 -#define KVM_RISCV_SELFTESTS_SBI_UNEXP		1 - -enum sbi_ext_id { -	SBI_EXT_BASE = 0x10, -	SBI_EXT_STA = 0x535441, -}; - -enum sbi_ext_base_fid { -	SBI_EXT_BASE_PROBE_EXT = 3, -}; - -struct sbiret { -	long error; -	long value; -}; - -struct sbiret sbi_ecall(int ext, int fid, unsigned long arg0, -			unsigned long arg1, unsigned long arg2, -			unsigned long arg3, unsigned long arg4, -			unsigned long arg5); - -bool guest_sbi_probe_extension(int extid, long *out_val); -  static inline void local_irq_enable(void)  {  	csr_set(CSR_SSTATUS, SR_SIE);  | 
