blob: 5dc165bc4cd033fb2e851c3f5732aa2f1afe80c1 [file] [log] [blame]
Elliott Hughes5e7f8f12022-10-01 15:10:58 +00001/****************************************************************************
2 ****************************************************************************
3 ***
4 *** This header was automatically generated from a Linux kernel header
5 *** of the same name, to make information necessary for userspace to
6 *** call into the kernel available to libc. It contains only constants,
7 *** structures, and macros generated from the original header, and thus,
8 *** contains no copyrightable information.
9 ***
10 *** To edit the content of this header, modify the corresponding
11 *** source file (e.g. under external/kernel-headers/original/) then
12 *** run bionic/libc/kernel/tools/update_all.py
13 ***
14 *** Any manual change here will be lost the next time this script will
15 *** be run. You've been warned!
16 ***
17 ****************************************************************************
18 ****************************************************************************/
19#ifndef __LINUX_KVM_RISCV_H
20#define __LINUX_KVM_RISCV_H
21#ifndef __ASSEMBLY__
22#include <linux/types.h>
23#include <asm/ptrace.h>
24#define __KVM_HAVE_READONLY_MEM
25#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
26#define KVM_INTERRUPT_SET - 1U
27#define KVM_INTERRUPT_UNSET - 2U
28struct kvm_regs {
29};
30struct kvm_fpu {
31};
32struct kvm_debug_exit_arch {
33};
34struct kvm_guest_debug_arch {
35};
36struct kvm_sync_regs {
37};
38struct kvm_sregs {
39};
40struct kvm_riscv_config {
41 unsigned long isa;
Christopher Ferris6cd53a52022-12-12 23:39:16 +000042 unsigned long zicbom_block_size;
Elliott Hughes5e7f8f12022-10-01 15:10:58 +000043};
44struct kvm_riscv_core {
45 struct user_regs_struct regs;
46 unsigned long mode;
47};
48#define KVM_RISCV_MODE_S 1
49#define KVM_RISCV_MODE_U 0
50struct kvm_riscv_csr {
51 unsigned long sstatus;
52 unsigned long sie;
53 unsigned long stvec;
54 unsigned long sscratch;
55 unsigned long sepc;
56 unsigned long scause;
57 unsigned long stval;
58 unsigned long sip;
59 unsigned long satp;
60 unsigned long scounteren;
61};
62struct kvm_riscv_timer {
63 __u64 frequency;
64 __u64 time;
65 __u64 compare;
66 __u64 state;
67};
68enum KVM_RISCV_ISA_EXT_ID {
69 KVM_RISCV_ISA_EXT_A = 0,
70 KVM_RISCV_ISA_EXT_C,
71 KVM_RISCV_ISA_EXT_D,
72 KVM_RISCV_ISA_EXT_F,
73 KVM_RISCV_ISA_EXT_H,
74 KVM_RISCV_ISA_EXT_I,
75 KVM_RISCV_ISA_EXT_M,
Christopher Ferris7447a1c2022-10-04 18:24:44 -070076 KVM_RISCV_ISA_EXT_SVPBMT,
77 KVM_RISCV_ISA_EXT_SSTC,
Christopher Ferris6cd53a52022-12-12 23:39:16 +000078 KVM_RISCV_ISA_EXT_SVINVAL,
79 KVM_RISCV_ISA_EXT_ZIHINTPAUSE,
80 KVM_RISCV_ISA_EXT_ZICBOM,
Elliott Hughes5e7f8f12022-10-01 15:10:58 +000081 KVM_RISCV_ISA_EXT_MAX,
82};
83#define KVM_RISCV_TIMER_STATE_OFF 0
84#define KVM_RISCV_TIMER_STATE_ON 1
85#define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
86#define KVM_REG_RISCV_TYPE_MASK 0x00000000FF000000
87#define KVM_REG_RISCV_TYPE_SHIFT 24
88#define KVM_REG_RISCV_CONFIG (0x01 << KVM_REG_RISCV_TYPE_SHIFT)
89#define KVM_REG_RISCV_CONFIG_REG(name) (offsetof(struct kvm_riscv_config, name) / sizeof(unsigned long))
90#define KVM_REG_RISCV_CORE (0x02 << KVM_REG_RISCV_TYPE_SHIFT)
91#define KVM_REG_RISCV_CORE_REG(name) (offsetof(struct kvm_riscv_core, name) / sizeof(unsigned long))
92#define KVM_REG_RISCV_CSR (0x03 << KVM_REG_RISCV_TYPE_SHIFT)
93#define KVM_REG_RISCV_CSR_REG(name) (offsetof(struct kvm_riscv_csr, name) / sizeof(unsigned long))
94#define KVM_REG_RISCV_TIMER (0x04 << KVM_REG_RISCV_TYPE_SHIFT)
95#define KVM_REG_RISCV_TIMER_REG(name) (offsetof(struct kvm_riscv_timer, name) / sizeof(__u64))
96#define KVM_REG_RISCV_FP_F (0x05 << KVM_REG_RISCV_TYPE_SHIFT)
97#define KVM_REG_RISCV_FP_F_REG(name) (offsetof(struct __riscv_f_ext_state, name) / sizeof(__u32))
98#define KVM_REG_RISCV_FP_D (0x06 << KVM_REG_RISCV_TYPE_SHIFT)
99#define KVM_REG_RISCV_FP_D_REG(name) (offsetof(struct __riscv_d_ext_state, name) / sizeof(__u64))
100#define KVM_REG_RISCV_ISA_EXT (0x07 << KVM_REG_RISCV_TYPE_SHIFT)
101#endif
102#endif