xref: /aosp_15_r20/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef _UAPI_ASM_X86_SGX_H
8*8d67ca89SAndroid Build Coastguard Worker #define _UAPI_ASM_X86_SGX_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
10*8d67ca89SAndroid Build Coastguard Worker #include <linux/ioctl.h>
11*8d67ca89SAndroid Build Coastguard Worker enum sgx_page_flags {
12*8d67ca89SAndroid Build Coastguard Worker   SGX_PAGE_MEASURE = 0x01,
13*8d67ca89SAndroid Build Coastguard Worker };
14*8d67ca89SAndroid Build Coastguard Worker #define SGX_MAGIC 0xA4
15*8d67ca89SAndroid Build Coastguard Worker #define SGX_IOC_ENCLAVE_CREATE _IOW(SGX_MAGIC, 0x00, struct sgx_enclave_create)
16*8d67ca89SAndroid Build Coastguard Worker #define SGX_IOC_ENCLAVE_ADD_PAGES _IOWR(SGX_MAGIC, 0x01, struct sgx_enclave_add_pages)
17*8d67ca89SAndroid Build Coastguard Worker #define SGX_IOC_ENCLAVE_INIT _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init)
18*8d67ca89SAndroid Build Coastguard Worker #define SGX_IOC_ENCLAVE_PROVISION _IOW(SGX_MAGIC, 0x03, struct sgx_enclave_provision)
19*8d67ca89SAndroid Build Coastguard Worker #define SGX_IOC_VEPC_REMOVE_ALL _IO(SGX_MAGIC, 0x04)
20*8d67ca89SAndroid Build Coastguard Worker #define SGX_IOC_ENCLAVE_RESTRICT_PERMISSIONS _IOWR(SGX_MAGIC, 0x05, struct sgx_enclave_restrict_permissions)
21*8d67ca89SAndroid Build Coastguard Worker #define SGX_IOC_ENCLAVE_MODIFY_TYPES _IOWR(SGX_MAGIC, 0x06, struct sgx_enclave_modify_types)
22*8d67ca89SAndroid Build Coastguard Worker #define SGX_IOC_ENCLAVE_REMOVE_PAGES _IOWR(SGX_MAGIC, 0x07, struct sgx_enclave_remove_pages)
23*8d67ca89SAndroid Build Coastguard Worker struct sgx_enclave_create {
24*8d67ca89SAndroid Build Coastguard Worker   __u64 src;
25*8d67ca89SAndroid Build Coastguard Worker };
26*8d67ca89SAndroid Build Coastguard Worker struct sgx_enclave_add_pages {
27*8d67ca89SAndroid Build Coastguard Worker   __u64 src;
28*8d67ca89SAndroid Build Coastguard Worker   __u64 offset;
29*8d67ca89SAndroid Build Coastguard Worker   __u64 length;
30*8d67ca89SAndroid Build Coastguard Worker   __u64 secinfo;
31*8d67ca89SAndroid Build Coastguard Worker   __u64 flags;
32*8d67ca89SAndroid Build Coastguard Worker   __u64 count;
33*8d67ca89SAndroid Build Coastguard Worker };
34*8d67ca89SAndroid Build Coastguard Worker struct sgx_enclave_init {
35*8d67ca89SAndroid Build Coastguard Worker   __u64 sigstruct;
36*8d67ca89SAndroid Build Coastguard Worker };
37*8d67ca89SAndroid Build Coastguard Worker struct sgx_enclave_provision {
38*8d67ca89SAndroid Build Coastguard Worker   __u64 fd;
39*8d67ca89SAndroid Build Coastguard Worker };
40*8d67ca89SAndroid Build Coastguard Worker struct sgx_enclave_restrict_permissions {
41*8d67ca89SAndroid Build Coastguard Worker   __u64 offset;
42*8d67ca89SAndroid Build Coastguard Worker   __u64 length;
43*8d67ca89SAndroid Build Coastguard Worker   __u64 permissions;
44*8d67ca89SAndroid Build Coastguard Worker   __u64 result;
45*8d67ca89SAndroid Build Coastguard Worker   __u64 count;
46*8d67ca89SAndroid Build Coastguard Worker };
47*8d67ca89SAndroid Build Coastguard Worker struct sgx_enclave_modify_types {
48*8d67ca89SAndroid Build Coastguard Worker   __u64 offset;
49*8d67ca89SAndroid Build Coastguard Worker   __u64 length;
50*8d67ca89SAndroid Build Coastguard Worker   __u64 page_type;
51*8d67ca89SAndroid Build Coastguard Worker   __u64 result;
52*8d67ca89SAndroid Build Coastguard Worker   __u64 count;
53*8d67ca89SAndroid Build Coastguard Worker };
54*8d67ca89SAndroid Build Coastguard Worker struct sgx_enclave_remove_pages {
55*8d67ca89SAndroid Build Coastguard Worker   __u64 offset;
56*8d67ca89SAndroid Build Coastguard Worker   __u64 length;
57*8d67ca89SAndroid Build Coastguard Worker   __u64 count;
58*8d67ca89SAndroid Build Coastguard Worker };
59*8d67ca89SAndroid Build Coastguard Worker struct sgx_enclave_run;
60*8d67ca89SAndroid Build Coastguard Worker typedef int(* sgx_enclave_user_handler_t) (long rdi, long rsi, long rdx, long rsp, long r8, long r9, struct sgx_enclave_run * run);
61*8d67ca89SAndroid Build Coastguard Worker struct sgx_enclave_run {
62*8d67ca89SAndroid Build Coastguard Worker   __u64 tcs;
63*8d67ca89SAndroid Build Coastguard Worker   __u32 function;
64*8d67ca89SAndroid Build Coastguard Worker   __u16 exception_vector;
65*8d67ca89SAndroid Build Coastguard Worker   __u16 exception_error_code;
66*8d67ca89SAndroid Build Coastguard Worker   __u64 exception_addr;
67*8d67ca89SAndroid Build Coastguard Worker   __u64 user_handler;
68*8d67ca89SAndroid Build Coastguard Worker   __u64 user_data;
69*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved[216];
70*8d67ca89SAndroid Build Coastguard Worker };
71*8d67ca89SAndroid Build Coastguard Worker typedef int(* vdso_sgx_enter_enclave_t) (unsigned long rdi, unsigned long rsi, unsigned long rdx, unsigned int function, unsigned long r8, unsigned long r9, struct sgx_enclave_run * run);
72*8d67ca89SAndroid Build Coastguard Worker #endif
73