blob: f0f42f10e14249a6efd6503f84fed91324279060 [file]
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 2018-2022 The Regents of the University of California (Regents).
* Copyright (c) 2023 Univrsity of Tampere.
*
* Authors:
* Dayeol Lee <dayeol@berkeley.edu>
* Evgeny Pobachienko <evgenyp@berkeley.edu>
* Jarkko Sakkinen <jarkko.sakkinen@tuni.fi>
*/
#ifndef UAPI_ASM_RISCV_KEYSTONE_H
#define UAPI_ASM_RISCV_KEYSTONE_H
#include <linux/types.h>
#include <linux/ioctl.h>
/* Same as TEE_IOC_MAGIC */
#define KEYSTONE_IOC 0xA4
#define KEYSTONE_IOC_CREATE_ENCLAVE _IOR(KEYSTONE_IOC, 0x00, struct keystone_enclave)
#define KEYSTONE_IOC_DESTROY_ENCLAVE _IOW(KEYSTONE_IOC, 0x01, struct keystone_enclave)
#define KEYSTONE_IOC_RUN_ENCLAVE _IOR(KEYSTONE_IOC, 0x04, struct keystone_run)
#define KEYSTONE_IOC_RESUME_ENCLAVE _IOR(KEYSTONE_IOC, 0x05, struct keystone_run)
#define KEYSTONE_IOC_FINALIZE_ENCLAVE _IOR(KEYSTONE_IOC, 0x06, struct keystone_enclave)
#define KEYSTONE_IOC_UTM_INIT _IOR(KEYSTONE_IOC, 0x07, struct keystone_enclave)
#define KEYSTONE_IOC_FINALIZE_LIBRARY_ENCLAVE _IOR(KEYSTONE_IOC, 0x09, struct keystone_enclave)
#define KEYSTONE_IOC_DESTROY_LIBRARY_ENCLAVE _IOW(KEYSTONE_IOC, 0x0a, struct keystone_enclave)
#define RT_NOEXEC 0
#define USER_NOEXEC 1
#define RT_FULL 2
#define USER_FULL 3
#define UTM_FULL 4
struct runtime_params_t {
__u64 runtime_entry;
__u64 user_entry;
__u64 untrusted_ptr;
__u64 untrusted_size;
};
struct keystone_enclave {
__u64 eid;
__u64 min_pages;
__u64 runtime_vaddr;
__u64 user_vaddr;
__u64 pt_ptr;
__u64 utm_free_ptr;
__u64 epm_paddr;
__u64 utm_paddr;
__u64 runtime_paddr;
__u64 user_paddr;
__u64 free_paddr;
__u64 epm_size;
__u64 utm_size;
struct runtime_params_t params;
__u64 library_name;
};
struct keystone_run {
__u64 eid;
__u64 error;
__u64 value;
};
#endif /* UAPI_ASM_RISCV_KEYSTONE_H */