Skip to main content

islet_rmm/rmi/
mod.rs

1pub mod constraint;
2pub mod error;
3pub mod features;
4pub mod gpt;
5pub mod metadata;
6pub mod realm;
7pub mod rec;
8pub mod rtt;
9pub mod version;
10
11use crate::define_interface;
12
13define_interface! {
14    command {
15         VERSION                = 0xc400_0150,
16         GRANULE_DELEGATE       = 0xc400_0151,
17         GRANULE_UNDELEGATE     = 0xc400_0152,
18         DATA_CREATE            = 0xc400_0153,
19         DATA_CREATE_UNKNOWN    = 0xc400_0154,
20         DATA_DESTROY           = 0xc400_0155,
21         REALM_ACTIVATE         = 0xc400_0157,
22         REALM_CREATE           = 0xc400_0158,
23         REALM_DESTROY          = 0xc400_0159,
24         REC_CREATE             = 0xc400_015a,
25         REC_DESTROY            = 0xc400_015b,
26         REC_ENTER              = 0xc400_015c,
27         RTT_CREATE             = 0xc400_015d,
28         RTT_DESTROY            = 0xc400_015e,
29         RTT_MAP_UNPROTECTED    = 0xc400_015f,
30         RTT_UNMAP_UNPROTECTED  = 0xc400_0162,
31         RTT_READ_ENTRY         = 0xc400_0161,
32         PSCI_COMPLETE          = 0xc400_0164,
33         FEATURES               = 0xc400_0165,
34         RTT_FOLD               = 0xc400_0166,
35         REC_AUX_COUNT          = 0xc400_0167,
36         RTT_INIT_RIPAS         = 0xc400_0168,
37         RTT_SET_RIPAS          = 0xc400_0169,
38         // vendor calls
39         ISLET_REALM_SET_METADATA = 0xc700_0150,
40    }
41}
42
43pub const REQ_COMPLETE: usize = 0xc400_018f;
44
45pub const RMM_GET_REALM_ATTEST_KEY: usize = 0xC400_01B2;
46pub const RMM_GET_PLAT_TOKEN: usize = 0xC400_01B3;
47pub const RMM_ISLET_GET_VHUK: usize = 0xC700_01B0;
48
49pub const BOOT_COMPLETE: usize = 0xC400_01CF;
50pub const BOOT_SUCCESS: usize = 0x0;
51
52pub const NOT_SUPPORTED_YET: usize = 0xFFFF_EEEE;
53
54pub const ABI_MAJOR_VERSION: usize = 1;
55pub const ABI_MINOR_VERSION: usize = 0;
56
57pub const HASH_ALGO_SHA256: u8 = 0;
58pub const HASH_ALGO_SHA512: u8 = 1;
59
60pub const RET_FAIL: usize = 0x100;
61pub const RET_EXCEPTION_IRQ: usize = 0x0;
62pub const RET_EXCEPTION_SERROR: usize = 0x1;
63pub const RET_EXCEPTION_TRAP: usize = 0x2;
64pub const RET_EXCEPTION_IL: usize = 0x3;
65
66pub const SUCCESS: usize = 0;
67pub const ERROR_INPUT: usize = 1;
68pub const ERROR_REC: usize = 3;
69pub const SUCCESS_REC_ENTER: usize = 4;
70
71pub const PMU_OVERFLOW_NOT_ACTIVE: u8 = 0;
72pub const PMU_OVERFLOW_ACTIVE: u8 = 1;
73
74// RmiRttEntryState represents the state of an RTTE
75pub mod rtt_entry_state {
76    pub const RMI_UNASSIGNED: usize = 0;
77    pub const RMI_ASSIGNED: usize = 1;
78    pub const RMI_TABLE: usize = 2;
79}
80
81pub const MAX_REC_AUX_GRANULES: usize = 16;
82
83pub const EXIT_SYNC: u8 = 0;
84pub const EXIT_IRQ: u8 = 1;
85pub const EXIT_FIQ: u8 = 2;
86pub const EXIT_PSCI: u8 = 3;
87pub const EXIT_RIPAS_CHANGE: u8 = 4;
88pub const EXIT_HOST_CALL: u8 = 5;
89pub const EXIT_SERROR: u8 = 6;