1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright(c) 2016-20 Intel Corporation. 4 */ 5 6 #ifndef DEFINES_H 7 #define DEFINES_H 8 9 #include <stdint.h> 10 11 #define PAGE_SIZE 4096 12 #define PAGE_MASK (~(PAGE_SIZE - 1)) 13 14 #define __aligned(x) __attribute__((__aligned__(x))) 15 #define __packed __attribute__((packed)) 16 #define __used __attribute__((used)) 17 #define __section(x)__attribute__((__section__(x))) 18 19 #include "../../../../arch/x86/include/asm/sgx.h" 20 #include "../../../../arch/x86/include/asm/enclu.h" 21 #include "../../../../arch/x86/include/uapi/asm/sgx.h" 22 23 enum encl_op_type { 24 ENCL_OP_PUT_TO_BUFFER, 25 ENCL_OP_GET_FROM_BUFFER, 26 ENCL_OP_PUT_TO_ADDRESS, 27 ENCL_OP_GET_FROM_ADDRESS, 28 ENCL_OP_NOP, 29 ENCL_OP_EACCEPT, 30 ENCL_OP_EMODPE, 31 ENCL_OP_INIT_TCS_PAGE, 32 ENCL_OP_MAX, 33 }; 34 35 struct encl_op_header { 36 uint64_t type; 37 }; 38 39 struct encl_op_put_to_buf { 40 struct encl_op_header header; 41 uint64_t value; 42 }; 43 44 struct encl_op_get_from_buf { 45 struct encl_op_header header; 46 uint64_t value; 47 }; 48 49 struct encl_op_put_to_addr { 50 struct encl_op_header header; 51 uint64_t value; 52 uint64_t addr; 53 }; 54 55 struct encl_op_get_from_addr { 56 struct encl_op_header header; 57 uint64_t value; 58 uint64_t addr; 59 }; 60 61 struct encl_op_eaccept { 62 struct encl_op_header header; 63 uint64_t epc_addr; 64 uint64_t flags; 65 uint64_t ret; 66 }; 67 68 struct encl_op_emodpe { 69 struct encl_op_header header; 70 uint64_t epc_addr; 71 uint64_t flags; 72 }; 73 74 struct encl_op_init_tcs_page { 75 struct encl_op_header header; 76 uint64_t tcs_page; 77 uint64_t ssa; 78 uint64_t entry; 79 }; 80 81 #endif /* DEFINES_H */ 82