1266077Sdes/* SPDX-License-Identifier: GPL-2.0 */
2266077Sdes/*
3266077Sdes * Copyright(c) 2016-20 Intel Corporation.
4266077Sdes */
5266077Sdes
6266077Sdes#ifndef DEFINES_H
7266077Sdes#define DEFINES_H
8266077Sdes
9266077Sdes#include <stdint.h>
10266077Sdes
11266077Sdes#define PAGE_SIZE 4096
12266077Sdes#define PAGE_MASK (~(PAGE_SIZE - 1))
13266077Sdes
14266077Sdes#define __aligned(x) __attribute__((__aligned__(x)))
15266077Sdes#define __packed __attribute__((packed))
16266077Sdes#define __used __attribute__((used))
17266077Sdes#define __section(x)__attribute__((__section__(x)))
18266077Sdes
19266077Sdes#include "../../../../arch/x86/include/asm/sgx.h"
20266077Sdes#include "../../../../arch/x86/include/asm/enclu.h"
21266077Sdes#include "../../../../arch/x86/include/uapi/asm/sgx.h"
22266077Sdes
23266077Sdesenum encl_op_type {
24266077Sdes	ENCL_OP_PUT_TO_BUFFER,
25266077Sdes	ENCL_OP_GET_FROM_BUFFER,
26266077Sdes	ENCL_OP_PUT_TO_ADDRESS,
27266077Sdes	ENCL_OP_GET_FROM_ADDRESS,
28266077Sdes	ENCL_OP_NOP,
29266077Sdes	ENCL_OP_EACCEPT,
30266077Sdes	ENCL_OP_EMODPE,
31266077Sdes	ENCL_OP_INIT_TCS_PAGE,
32266077Sdes	ENCL_OP_MAX,
33266077Sdes};
34266077Sdes
35266077Sdesstruct encl_op_header {
36266077Sdes	uint64_t type;
37266077Sdes};
38276541Sdes
39266077Sdesstruct encl_op_put_to_buf {
40276541Sdes	struct encl_op_header header;
41266077Sdes	uint64_t value;
42266077Sdes};
43266077Sdes
44266077Sdesstruct encl_op_get_from_buf {
45266077Sdes	struct encl_op_header header;
46266077Sdes	uint64_t value;
47266077Sdes};
48266077Sdes
49276541Sdesstruct encl_op_put_to_addr {
50266077Sdes	struct encl_op_header header;
51276541Sdes	uint64_t value;
52266077Sdes	uint64_t addr;
53266077Sdes};
54266077Sdes
55266077Sdesstruct encl_op_get_from_addr {
56266077Sdes	struct encl_op_header header;
57266077Sdes	uint64_t value;
58266077Sdes	uint64_t addr;
59266077Sdes};
60266077Sdes
61266077Sdesstruct encl_op_eaccept {
62266077Sdes	struct encl_op_header header;
63266077Sdes	uint64_t epc_addr;
64266077Sdes	uint64_t flags;
65266077Sdes	uint64_t ret;
66266077Sdes};
67266077Sdes
68266077Sdesstruct encl_op_emodpe {
69266077Sdes	struct encl_op_header header;
70266077Sdes	uint64_t epc_addr;
71266077Sdes	uint64_t flags;
72266077Sdes};
73266077Sdes
74266077Sdesstruct encl_op_init_tcs_page {
75266077Sdes	struct encl_op_header header;
76266077Sdes	uint64_t tcs_page;
77266077Sdes	uint64_t ssa;
78266077Sdes	uint64_t entry;
79266077Sdes};
80266077Sdes
81266077Sdes#endif /* DEFINES_H */
82266077Sdes