1*2164af29SRuslan Bukin /*- 2*2164af29SRuslan Bukin * Copyright (c) 2017 Ruslan Bukin <br@bsdpad.com> 3*2164af29SRuslan Bukin * All rights reserved. 4*2164af29SRuslan Bukin * 5*2164af29SRuslan Bukin * This software was developed by BAE Systems, the University of Cambridge 6*2164af29SRuslan Bukin * Computer Laboratory, and Memorial University under DARPA/AFRL contract 7*2164af29SRuslan Bukin * FA8650-15-C-7558 ("CADETS"), as part of the DARPA Transparent Computing 8*2164af29SRuslan Bukin * (TC) research program. 9*2164af29SRuslan Bukin * 10*2164af29SRuslan Bukin * Redistribution and use in source and binary forms, with or without 11*2164af29SRuslan Bukin * modification, are permitted provided that the following conditions 12*2164af29SRuslan Bukin * are met: 13*2164af29SRuslan Bukin * 1. Redistributions of source code must retain the above copyright 14*2164af29SRuslan Bukin * notice, this list of conditions and the following disclaimer. 15*2164af29SRuslan Bukin * 2. Redistributions in binary form must reproduce the above copyright 16*2164af29SRuslan Bukin * notice, this list of conditions and the following disclaimer in the 17*2164af29SRuslan Bukin * documentation and/or other materials provided with the distribution. 18*2164af29SRuslan Bukin * 19*2164af29SRuslan Bukin * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 20*2164af29SRuslan Bukin * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21*2164af29SRuslan Bukin * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22*2164af29SRuslan Bukin * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 23*2164af29SRuslan Bukin * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24*2164af29SRuslan Bukin * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25*2164af29SRuslan Bukin * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26*2164af29SRuslan Bukin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27*2164af29SRuslan Bukin * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28*2164af29SRuslan Bukin * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29*2164af29SRuslan Bukin * SUCH DAMAGE. 30*2164af29SRuslan Bukin */ 31*2164af29SRuslan Bukin 32*2164af29SRuslan Bukin /* User-visible header. */ 33*2164af29SRuslan Bukin 34*2164af29SRuslan Bukin #ifndef _MACHINE_SGX_H_ 35*2164af29SRuslan Bukin #define _MACHINE_SGX_H_ 36*2164af29SRuslan Bukin 37*2164af29SRuslan Bukin #define SGX_MAGIC 0xA4 38*2164af29SRuslan Bukin #define SGX_IOC_ENCLAVE_CREATE \ 39*2164af29SRuslan Bukin _IOW(SGX_MAGIC, 0x00, struct sgx_enclave_create) 40*2164af29SRuslan Bukin #define SGX_IOC_ENCLAVE_ADD_PAGE \ 41*2164af29SRuslan Bukin _IOW(SGX_MAGIC, 0x01, struct sgx_enclave_add_page) 42*2164af29SRuslan Bukin #define SGX_IOC_ENCLAVE_INIT \ 43*2164af29SRuslan Bukin _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init) 44*2164af29SRuslan Bukin 45*2164af29SRuslan Bukin struct sgx_enclave_create { 46*2164af29SRuslan Bukin uint64_t src; 47*2164af29SRuslan Bukin } __packed; 48*2164af29SRuslan Bukin 49*2164af29SRuslan Bukin struct sgx_enclave_add_page { 50*2164af29SRuslan Bukin uint64_t addr; 51*2164af29SRuslan Bukin uint64_t src; 52*2164af29SRuslan Bukin uint64_t secinfo; 53*2164af29SRuslan Bukin uint16_t mrmask; 54*2164af29SRuslan Bukin } __packed; 55*2164af29SRuslan Bukin 56*2164af29SRuslan Bukin struct sgx_enclave_init { 57*2164af29SRuslan Bukin uint64_t addr; 58*2164af29SRuslan Bukin uint64_t sigstruct; 59*2164af29SRuslan Bukin uint64_t einittoken; 60*2164af29SRuslan Bukin } __packed; 61*2164af29SRuslan Bukin 62*2164af29SRuslan Bukin #endif /* !_MACHINE_SGX_H_ */ 63