|
1 |
| -#![no_std] |
| 1 | +#![no_std] |
2 | 2 | #![deny(warnings, unsafe_code, unstable_features)]
|
3 | 3 |
|
4 | 4 | // §3
|
@@ -32,132 +32,133 @@ const fn eid_from_str(name: &str) -> i32 {
|
32 | 32 | }
|
33 | 33 |
|
34 | 34 | /// Checks during compilation, and provides an item list for developers.
|
35 |
| -mod static_test { |
36 |
| - use static_assertions::const_assert_eq as eq; |
| 35 | +#[cfg(test)] |
| 36 | +mod tests { |
| 37 | + use static_assertions::{ |
| 38 | + assert_eq_align, assert_eq_size, assert_fields, assert_impl_all, const_assert_eq, |
| 39 | + }; |
37 | 40 | // §3
|
38 |
| - mod binary { |
39 |
| - use super::eq; |
| 41 | + #[test] |
| 42 | + fn test_binary() { |
40 | 43 | use crate::binary::*;
|
41 |
| - |
42 |
| - use static_assertions::*; |
43 | 44 | assert_eq_align!(SbiRet, usize);
|
44 | 45 | assert_eq_size!(SbiRet, [usize; 2]);
|
45 | 46 | assert_fields!(SbiRet: error);
|
46 | 47 | assert_fields!(SbiRet: value);
|
47 | 48 | assert_impl_all!(SbiRet: Copy, Clone, PartialEq, Eq, core::fmt::Debug);
|
48 | 49 |
|
49 |
| - eq!(0, RET_SUCCESS as isize); |
50 |
| - eq!(-1, RET_ERR_FAILED as isize); |
51 |
| - eq!(-2, RET_ERR_NOT_SUPPORTED as isize); |
52 |
| - eq!(-3, RET_ERR_INVALID_PARAM as isize); |
53 |
| - eq!(-4, RET_ERR_DENIED as isize); |
54 |
| - eq!(-5, RET_ERR_INVALID_ADDRESS as isize); |
55 |
| - eq!(-6, RET_ERR_ALREADY_AVAILABLE as isize); |
56 |
| - eq!(-7, RET_ERR_ALREADY_STARTED as isize); |
57 |
| - eq!(-8, RET_ERR_ALREADY_STOPPED as isize); |
| 50 | + const_assert_eq!(0, RET_SUCCESS as isize); |
| 51 | + const_assert_eq!(-1, RET_ERR_FAILED as isize); |
| 52 | + const_assert_eq!(-2, RET_ERR_NOT_SUPPORTED as isize); |
| 53 | + const_assert_eq!(-3, RET_ERR_INVALID_PARAM as isize); |
| 54 | + const_assert_eq!(-4, RET_ERR_DENIED as isize); |
| 55 | + const_assert_eq!(-5, RET_ERR_INVALID_ADDRESS as isize); |
| 56 | + const_assert_eq!(-6, RET_ERR_ALREADY_AVAILABLE as isize); |
| 57 | + const_assert_eq!(-7, RET_ERR_ALREADY_STARTED as isize); |
| 58 | + const_assert_eq!(-8, RET_ERR_ALREADY_STOPPED as isize); |
58 | 59 | }
|
59 | 60 | // §4
|
60 |
| - mod base { |
61 |
| - use super::eq; |
| 61 | + #[test] |
| 62 | + fn test_base() { |
62 | 63 | use crate::base::*;
|
63 |
| - eq!(0x10, EID_BASE); |
64 |
| - eq!(0, GET_SBI_SPEC_VERSION); |
65 |
| - eq!(1, GET_SBI_IMPL_ID); |
66 |
| - eq!(2, GET_SBI_IMPL_VERSION); |
67 |
| - eq!(3, PROBE_EXTENSION); |
68 |
| - eq!(4, GET_MVENDORID); |
69 |
| - eq!(5, GET_MARCHID); |
70 |
| - eq!(6, GET_MIMPID); |
71 |
| - eq!(0, impl_id::BBL); |
72 |
| - eq!(1, impl_id::OPEN_SBI); |
73 |
| - eq!(2, impl_id::XVISOR); |
74 |
| - eq!(3, impl_id::KVM); |
75 |
| - eq!(4, impl_id::RUST_SBI); |
76 |
| - eq!(5, impl_id::DIOSIX); |
77 |
| - eq!(6, impl_id::COFFER); |
| 64 | + const_assert_eq!(0x10, EID_BASE); |
| 65 | + const_assert_eq!(0, GET_SBI_SPEC_VERSION); |
| 66 | + const_assert_eq!(1, GET_SBI_IMPL_ID); |
| 67 | + const_assert_eq!(2, GET_SBI_IMPL_VERSION); |
| 68 | + const_assert_eq!(3, PROBE_EXTENSION); |
| 69 | + const_assert_eq!(4, GET_MVENDORID); |
| 70 | + const_assert_eq!(5, GET_MARCHID); |
| 71 | + const_assert_eq!(6, GET_MIMPID); |
| 72 | + const_assert_eq!(0, impl_id::BBL); |
| 73 | + const_assert_eq!(1, impl_id::OPEN_SBI); |
| 74 | + const_assert_eq!(2, impl_id::XVISOR); |
| 75 | + const_assert_eq!(3, impl_id::KVM); |
| 76 | + const_assert_eq!(4, impl_id::RUST_SBI); |
| 77 | + const_assert_eq!(5, impl_id::DIOSIX); |
| 78 | + const_assert_eq!(6, impl_id::COFFER); |
78 | 79 | }
|
79 | 80 | // §5
|
80 |
| - mod legacy { |
81 |
| - use super::eq; |
| 81 | + #[test] |
| 82 | + fn test_legacy() { |
82 | 83 | use crate::legacy::*;
|
83 |
| - eq!(0, LEGACY_SET_TIMER); |
84 |
| - eq!(1, LEGACY_CONSOLE_PUTCHAR); |
85 |
| - eq!(2, LEGACY_CONSOLE_GETCHAR); |
86 |
| - eq!(3, LEGACY_CLEAR_IPI); |
87 |
| - eq!(4, LEGACY_SEND_IPI); |
88 |
| - eq!(5, LEGACY_REMOTE_FENCE_I); |
89 |
| - eq!(6, LEGACY_REMOTE_SFENCE_VMA); |
90 |
| - eq!(7, LEGACY_REMOTE_SFENCE_VMA_ASID); |
91 |
| - eq!(8, LEGACY_SHUTDOWN); |
| 84 | + const_assert_eq!(0, LEGACY_SET_TIMER); |
| 85 | + const_assert_eq!(1, LEGACY_CONSOLE_PUTCHAR); |
| 86 | + const_assert_eq!(2, LEGACY_CONSOLE_GETCHAR); |
| 87 | + const_assert_eq!(3, LEGACY_CLEAR_IPI); |
| 88 | + const_assert_eq!(4, LEGACY_SEND_IPI); |
| 89 | + const_assert_eq!(5, LEGACY_REMOTE_FENCE_I); |
| 90 | + const_assert_eq!(6, LEGACY_REMOTE_SFENCE_VMA); |
| 91 | + const_assert_eq!(7, LEGACY_REMOTE_SFENCE_VMA_ASID); |
| 92 | + const_assert_eq!(8, LEGACY_SHUTDOWN); |
92 | 93 | }
|
93 | 94 | // §6
|
94 |
| - mod time { |
95 |
| - use super::eq; |
| 95 | + #[test] |
| 96 | + fn test_time() { |
96 | 97 | use crate::time::*;
|
97 |
| - eq!(0x54494D45, EID_TIME); |
98 |
| - eq!(0, SET_TIMER); |
| 98 | + const_assert_eq!(0x54494D45, EID_TIME); |
| 99 | + const_assert_eq!(0, SET_TIMER); |
99 | 100 | }
|
100 | 101 | // §7
|
101 |
| - mod spi { |
102 |
| - use super::eq; |
| 102 | + #[test] |
| 103 | + fn test_spi() { |
103 | 104 | use crate::spi::*;
|
104 |
| - eq!(0x735049, EID_SPI); |
105 |
| - eq!(0, SEND_IPI); |
| 105 | + const_assert_eq!(0x735049, EID_SPI); |
| 106 | + const_assert_eq!(0, SEND_IPI); |
106 | 107 | }
|
107 | 108 | // §8
|
108 |
| - mod rfnc { |
109 |
| - use super::eq; |
| 109 | + #[test] |
| 110 | + fn test_rfnc() { |
110 | 111 | use crate::rfnc::*;
|
111 |
| - eq!(0x52464E43, EID_RFNC); |
112 |
| - eq!(0, REMOTE_FENCE_I); |
113 |
| - eq!(1, REMOTE_SFENCE_VMA); |
114 |
| - eq!(2, REMOTE_SFENCE_VMA_ASID); |
115 |
| - eq!(3, REMOTE_HFENCE_GVMA_VMID); |
116 |
| - eq!(4, REMOTE_HFENCE_GVMA); |
117 |
| - eq!(5, REMOTE_HFENCE_VVMA_ASID); |
118 |
| - eq!(6, REMOTE_HFENCE_VVMA); |
| 112 | + const_assert_eq!(0x52464E43, EID_RFNC); |
| 113 | + const_assert_eq!(0, REMOTE_FENCE_I); |
| 114 | + const_assert_eq!(1, REMOTE_SFENCE_VMA); |
| 115 | + const_assert_eq!(2, REMOTE_SFENCE_VMA_ASID); |
| 116 | + const_assert_eq!(3, REMOTE_HFENCE_GVMA_VMID); |
| 117 | + const_assert_eq!(4, REMOTE_HFENCE_GVMA); |
| 118 | + const_assert_eq!(5, REMOTE_HFENCE_VVMA_ASID); |
| 119 | + const_assert_eq!(6, REMOTE_HFENCE_VVMA); |
119 | 120 | }
|
120 | 121 | // §9
|
121 |
| - mod hsm { |
122 |
| - use super::eq; |
| 122 | + #[test] |
| 123 | + fn test_hsm() { |
123 | 124 | use crate::hsm::*;
|
124 |
| - eq!(0x48534D, EID_HSM); |
125 |
| - eq!(0, HART_STATE_STARTED); |
126 |
| - eq!(1, HART_STATE_STOPPED); |
127 |
| - eq!(2, HART_STATE_START_PENDING); |
128 |
| - eq!(3, HART_STATE_STOP_PENDING); |
129 |
| - eq!(4, HART_STATE_SUSPENDED); |
130 |
| - eq!(5, HART_STATE_SUSPEND_PENDING); |
131 |
| - eq!(6, HART_STATE_RESUME_PENDING); |
132 |
| - eq!(0x0000_0000, HART_SUSPEND_TYPE_RETENTIVE); |
133 |
| - eq!(0x8000_0000, HART_SUSPEND_TYPE_NON_RETENTIVE); |
134 |
| - eq!(0, HART_START); |
135 |
| - eq!(1, HART_STOP); |
136 |
| - eq!(2, HART_GET_STATUS); |
137 |
| - eq!(3, HART_SUSPEND); |
| 125 | + const_assert_eq!(0x48534D, EID_HSM); |
| 126 | + const_assert_eq!(0, HART_STATE_STARTED); |
| 127 | + const_assert_eq!(1, HART_STATE_STOPPED); |
| 128 | + const_assert_eq!(2, HART_STATE_START_PENDING); |
| 129 | + const_assert_eq!(3, HART_STATE_STOP_PENDING); |
| 130 | + const_assert_eq!(4, HART_STATE_SUSPENDED); |
| 131 | + const_assert_eq!(5, HART_STATE_SUSPEND_PENDING); |
| 132 | + const_assert_eq!(6, HART_STATE_RESUME_PENDING); |
| 133 | + const_assert_eq!(0x0000_0000, HART_SUSPEND_TYPE_RETENTIVE); |
| 134 | + const_assert_eq!(0x8000_0000, HART_SUSPEND_TYPE_NON_RETENTIVE); |
| 135 | + const_assert_eq!(0, HART_START); |
| 136 | + const_assert_eq!(1, HART_STOP); |
| 137 | + const_assert_eq!(2, HART_GET_STATUS); |
| 138 | + const_assert_eq!(3, HART_SUSPEND); |
138 | 139 | }
|
139 | 140 | // §10
|
140 |
| - mod srst { |
141 |
| - use super::eq; |
| 141 | + #[test] |
| 142 | + fn test_srst() { |
142 | 143 | use crate::srst::*;
|
143 |
| - eq!(0x53525354, EID_SRST); |
144 |
| - eq!(0, RESET_TYPE_SHUTDOWN); |
145 |
| - eq!(1, RESET_TYPE_COLD_REBOOT); |
146 |
| - eq!(2, RESET_TYPE_WARM_REBOOT); |
147 |
| - eq!(0, RESET_REASON_NO_REASON); |
148 |
| - eq!(1, RESET_REASON_SYSTEM_FAILURE); |
149 |
| - eq!(0, SYSTEM_RESET); |
| 144 | + const_assert_eq!(0x53525354, EID_SRST); |
| 145 | + const_assert_eq!(0, RESET_TYPE_SHUTDOWN); |
| 146 | + const_assert_eq!(1, RESET_TYPE_COLD_REBOOT); |
| 147 | + const_assert_eq!(2, RESET_TYPE_WARM_REBOOT); |
| 148 | + const_assert_eq!(0, RESET_REASON_NO_REASON); |
| 149 | + const_assert_eq!(1, RESET_REASON_SYSTEM_FAILURE); |
| 150 | + const_assert_eq!(0, SYSTEM_RESET); |
150 | 151 | }
|
151 | 152 | // §11
|
152 |
| - mod pmu { |
153 |
| - use super::eq; |
| 153 | + #[test] |
| 154 | + fn test_pmu() { |
154 | 155 | use crate::pmu::*;
|
155 |
| - eq!(0x504D55, EID_PMU); |
156 |
| - eq!(0, PMU_NUM_COUNTERS); |
157 |
| - eq!(1, PMU_COUNTER_GET_INFO); |
158 |
| - eq!(2, PMU_COUNTER_CONFIG_MATCHING); |
159 |
| - eq!(3, PMU_COUNTER_START); |
160 |
| - eq!(4, PMU_COUNTER_STOP); |
161 |
| - eq!(5, PMU_COUNTER_FW_READ); |
| 156 | + const_assert_eq!(0x504D55, EID_PMU); |
| 157 | + const_assert_eq!(0, PMU_NUM_COUNTERS); |
| 158 | + const_assert_eq!(1, PMU_COUNTER_GET_INFO); |
| 159 | + const_assert_eq!(2, PMU_COUNTER_CONFIG_MATCHING); |
| 160 | + const_assert_eq!(3, PMU_COUNTER_START); |
| 161 | + const_assert_eq!(4, PMU_COUNTER_STOP); |
| 162 | + const_assert_eq!(5, PMU_COUNTER_FW_READ); |
162 | 163 | }
|
163 | 164 | }
|
0 commit comments