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 23enum 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 35struct encl_op_header { 36 uint64_t type; 37}; 38 39struct encl_op_put_to_buf { 40 struct encl_op_header header; 41 uint64_t value; 42}; 43 44struct encl_op_get_from_buf { 45 struct encl_op_header header; 46 uint64_t value; 47}; 48 49struct encl_op_put_to_addr { 50 struct encl_op_header header; 51 uint64_t value; 52 uint64_t addr; 53}; 54 55struct encl_op_get_from_addr { 56 struct encl_op_header header; 57 uint64_t value; 58 uint64_t addr; 59}; 60 61struct encl_op_eaccept { 62 struct encl_op_header header; 63 uint64_t epc_addr; 64 uint64_t flags; 65 uint64_t ret; 66}; 67 68struct encl_op_emodpe { 69 struct encl_op_header header; 70 uint64_t epc_addr; 71 uint64_t flags; 72}; 73 74struct 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