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 |