1#![no_std]
11
12pub mod host;
14pub mod interrupt;
16pub mod guest;
18
19const fn eid_from_str(name: &str) -> i32 {
21 match *name.as_bytes() {
22 [a] => i32::from_be_bytes([0, 0, 0, a]),
23 [a, b] => i32::from_be_bytes([0, 0, a, b]),
24 [a, b, c] => i32::from_be_bytes([0, a, b, c]),
25 [a, b, c, d] => i32::from_be_bytes([a, b, c, d]),
26 _ => unreachable!(),
27 }
28}
29#[cfg(test)]
30mod tests {
31 use static_assertions::const_assert_eq;
32 #[test]
34 fn test_cove_host() {
35 use crate::host::*;
36 const_assert_eq!(0x434F5648, EID_COVH);
37 const_assert_eq!(0, GET_TSM_INFO);
38 const_assert_eq!(1, CONVERT_PAGES);
39 const_assert_eq!(2, RECLAIM_PAGES);
40 const_assert_eq!(3, GLOBAL_FENCE);
41 const_assert_eq!(4, LOCAL_FENCE);
42 const_assert_eq!(5, CREATE_TVM);
43 const_assert_eq!(6, FINALIZE_TVM);
44 const_assert_eq!(8, DESTROY_TVM);
45 const_assert_eq!(9, ADD_TVM_MEMORY_REGION);
46 const_assert_eq!(10, ADD_TVM_PAGE_TABLE_PAGES);
47 const_assert_eq!(11, ADD_TVM_MEASURED_PAGES);
48 const_assert_eq!(12, ADD_TVM_ZERO_PAGES);
49 const_assert_eq!(13, ADD_TVM_SHARED_PAGES);
50 const_assert_eq!(14, CREATE_TVM_VCPU);
51 const_assert_eq!(15, RUN_TVM_VCPU);
52 const_assert_eq!(16, TVM_FENCE);
53 const_assert_eq!(17, TVM_INVALIDATE_PAGES);
54 const_assert_eq!(18, TVM_VALIDATE_PAGES);
55 const_assert_eq!(19, TVM_REMOVE_PAGES);
56 }
57
58 #[test]
60 fn test_cove_interrupt() {
61 use crate::interrupt::*;
62 const_assert_eq!(0x434F5649, EID_COVI);
63 const_assert_eq!(0, INIT_TVM_AIA);
64 const_assert_eq!(1, SET_TVM_AIA_CPU_IMSIC_ADDR);
65 const_assert_eq!(2, CONVERT_AIA_IMSIC);
66 const_assert_eq!(3, RECLAIM_TVM_AIA_IMSIC);
67 const_assert_eq!(4, BIND_AIA_IMSIC);
68 const_assert_eq!(5, UNBIND_AIA_IMSIC_BEGIN);
69 const_assert_eq!(6, UNBIND_AIA_IMSIC_END);
70 const_assert_eq!(7, INJECT_TVM_CPU);
71 const_assert_eq!(8, REBIND_AIA_IMSIC_BEGIN);
72 const_assert_eq!(9, REBIND_AIA_IMSIC_CLONE);
73 const_assert_eq!(10, REBIND_AIA_IMSIC_END);
74 }
75
76 #[test]
78 fn test_cove_guest() {
79 use crate::guest::*;
80 const_assert_eq!(0x434F5647, EID_COVG);
81 const_assert_eq!(0, ADD_MMIO_REGION);
82 const_assert_eq!(1, REMOVE_MMIO_REGION);
83 const_assert_eq!(2, SHARE_MEMORY_REGION);
84 const_assert_eq!(3, UNSHARE_MEMORY_REGION);
85 const_assert_eq!(4, ALLOW_EXTERNAL_INTERRUPT);
86 const_assert_eq!(5, DENY_EXTERNAL_INTERRUPT);
87 const_assert_eq!(6, GET_ATTESTATION_CAPABILITIES);
88 const_assert_eq!(7, EXTEND_MEASUREMENT);
89 const_assert_eq!(8, GET_EVIDENCE);
90 const_assert_eq!(9, RETRIEVE_SECRET);
91 const_assert_eq!(10, READ_MEASUREMENT);
92 }
93}