15b81b6b3SRodney W. Grimes /*- 2*4d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 3bd50262fSKonstantin Belousov * 4bd50262fSKonstantin Belousov * Copyright (c) 2018 The FreeBSD Foundation 5bd50262fSKonstantin Belousov * 6bd50262fSKonstantin Belousov * This software was developed by Konstantin Belousov <kib@FreeBSD.org> 7bd50262fSKonstantin Belousov * under sponsorship from the FreeBSD Foundation. 8bd50262fSKonstantin Belousov * 9bd50262fSKonstantin Belousov * Redistribution and use in source and binary forms, with or without 10bd50262fSKonstantin Belousov * modification, are permitted provided that the following conditions 11bd50262fSKonstantin Belousov * are met: 12bd50262fSKonstantin Belousov * 1. Redistributions of source code must retain the above copyright 13bd50262fSKonstantin Belousov * notice, this list of conditions and the following disclaimer. 14bd50262fSKonstantin Belousov * 2. Redistributions in binary form must reproduce the above copyright 15bd50262fSKonstantin Belousov * notice, this list of conditions and the following disclaimer in the 16bd50262fSKonstantin Belousov * documentation and/or other materials provided with the distribution. 17bd50262fSKonstantin Belousov * 18bd50262fSKonstantin Belousov * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 19bd50262fSKonstantin Belousov * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20bd50262fSKonstantin Belousov * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21bd50262fSKonstantin Belousov * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 22bd50262fSKonstantin Belousov * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23bd50262fSKonstantin Belousov * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24bd50262fSKonstantin Belousov * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25bd50262fSKonstantin Belousov * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26bd50262fSKonstantin Belousov * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27bd50262fSKonstantin Belousov * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28bd50262fSKonstantin Belousov * SUCH DAMAGE. 295b81b6b3SRodney W. Grimes */ 30bd50262fSKonstantin Belousov 31bd50262fSKonstantin Belousov #ifndef _AMD64_FRAME_H 32bd50262fSKonstantin Belousov #define _AMD64_FRAME_H 335b81b6b3SRodney W. Grimes 3431a53cd0SKonstantin Belousov #include <x86/frame.h> 35bd50262fSKonstantin Belousov 36bd50262fSKonstantin Belousov struct pti_frame { 37bd50262fSKonstantin Belousov register_t pti_rdx; 38bd50262fSKonstantin Belousov register_t pti_rax; 39bd50262fSKonstantin Belousov register_t pti_err; 40bd50262fSKonstantin Belousov register_t pti_rip; 41bd50262fSKonstantin Belousov register_t pti_cs; 42bd50262fSKonstantin Belousov register_t pti_rflags; 43bd50262fSKonstantin Belousov register_t pti_rsp; 44bd50262fSKonstantin Belousov register_t pti_ss; 45bd50262fSKonstantin Belousov }; 46bd50262fSKonstantin Belousov 47a42d362bSKonstantin Belousov #ifdef _KERNEL 48a42d362bSKonstantin Belousov #define CS_SECURE(cs) (ISPL(cs) == SEL_UPL) 49a42d362bSKonstantin Belousov #define EFL_SECURE(ef, oef) ((((ef) ^ (oef)) & ~PSL_USERCHANGE) == 0) 50a42d362bSKonstantin Belousov #endif 51a42d362bSKonstantin Belousov 52bd50262fSKonstantin Belousov #endif 53