162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright(c) 2016-20 Intel Corporation.
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifndef DEFINES_H
762306a36Sopenharmony_ci#define DEFINES_H
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <stdint.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#define PAGE_SIZE 4096
1262306a36Sopenharmony_ci#define PAGE_MASK (~(PAGE_SIZE - 1))
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#define __aligned(x) __attribute__((__aligned__(x)))
1562306a36Sopenharmony_ci#define __packed __attribute__((packed))
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci#include "../../../../arch/x86/include/asm/sgx.h"
1862306a36Sopenharmony_ci#include "../../../../arch/x86/include/asm/enclu.h"
1962306a36Sopenharmony_ci#include "../../../../arch/x86/include/uapi/asm/sgx.h"
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_cienum encl_op_type {
2262306a36Sopenharmony_ci	ENCL_OP_PUT_TO_BUFFER,
2362306a36Sopenharmony_ci	ENCL_OP_GET_FROM_BUFFER,
2462306a36Sopenharmony_ci	ENCL_OP_PUT_TO_ADDRESS,
2562306a36Sopenharmony_ci	ENCL_OP_GET_FROM_ADDRESS,
2662306a36Sopenharmony_ci	ENCL_OP_NOP,
2762306a36Sopenharmony_ci	ENCL_OP_EACCEPT,
2862306a36Sopenharmony_ci	ENCL_OP_EMODPE,
2962306a36Sopenharmony_ci	ENCL_OP_INIT_TCS_PAGE,
3062306a36Sopenharmony_ci	ENCL_OP_MAX,
3162306a36Sopenharmony_ci};
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_cistruct encl_op_header {
3462306a36Sopenharmony_ci	uint64_t type;
3562306a36Sopenharmony_ci};
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_cistruct encl_op_put_to_buf {
3862306a36Sopenharmony_ci	struct encl_op_header header;
3962306a36Sopenharmony_ci	uint64_t value;
4062306a36Sopenharmony_ci};
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_cistruct encl_op_get_from_buf {
4362306a36Sopenharmony_ci	struct encl_op_header header;
4462306a36Sopenharmony_ci	uint64_t value;
4562306a36Sopenharmony_ci};
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_cistruct encl_op_put_to_addr {
4862306a36Sopenharmony_ci	struct encl_op_header header;
4962306a36Sopenharmony_ci	uint64_t value;
5062306a36Sopenharmony_ci	uint64_t addr;
5162306a36Sopenharmony_ci};
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_cistruct encl_op_get_from_addr {
5462306a36Sopenharmony_ci	struct encl_op_header header;
5562306a36Sopenharmony_ci	uint64_t value;
5662306a36Sopenharmony_ci	uint64_t addr;
5762306a36Sopenharmony_ci};
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_cistruct encl_op_eaccept {
6062306a36Sopenharmony_ci	struct encl_op_header header;
6162306a36Sopenharmony_ci	uint64_t epc_addr;
6262306a36Sopenharmony_ci	uint64_t flags;
6362306a36Sopenharmony_ci	uint64_t ret;
6462306a36Sopenharmony_ci};
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_cistruct encl_op_emodpe {
6762306a36Sopenharmony_ci	struct encl_op_header header;
6862306a36Sopenharmony_ci	uint64_t epc_addr;
6962306a36Sopenharmony_ci	uint64_t flags;
7062306a36Sopenharmony_ci};
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_cistruct encl_op_init_tcs_page {
7362306a36Sopenharmony_ci	struct encl_op_header header;
7462306a36Sopenharmony_ci	uint64_t tcs_page;
7562306a36Sopenharmony_ci	uint64_t ssa;
7662306a36Sopenharmony_ci	uint64_t entry;
7762306a36Sopenharmony_ci};
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci#endif /* DEFINES_H */
80