1*bdb56184SDevin Teske /* 2*bdb56184SDevin Teske * SPDX-License-Identifier: BSD-2-Clause 3*bdb56184SDevin Teske * 4*bdb56184SDevin Teske * Copyright (c) 2026 Devin Teske <dteske@FreeBSD.org> 5*bdb56184SDevin Teske */ 6*bdb56184SDevin Teske 7*bdb56184SDevin Teske #ifndef _AMD64_LINUX_EMUL_MD_H_ 8*bdb56184SDevin Teske #define _AMD64_LINUX_EMUL_MD_H_ 9*bdb56184SDevin Teske 10*bdb56184SDevin Teske /* 11*bdb56184SDevin Teske * Machine-dependent part of the Linux process emuldata, embedded in 12*bdb56184SDevin Teske * struct linux_pemuldata as pem_md. 13*bdb56184SDevin Teske */ 14*bdb56184SDevin Teske struct linux_pemuldata_md { 15*bdb56184SDevin Teske uint32_t md_pkey_allocation_map; /* x86 protection keys */ 16*bdb56184SDevin Teske }; 17*bdb56184SDevin Teske 18*bdb56184SDevin Teske /* 19*bdb56184SDevin Teske * Initial protection key allocation map: key 0 is the default key, 20*bdb56184SDevin Teske * implicitly allocated on Linux (mm_pkey_allocation_map is initialized 21*bdb56184SDevin Teske * to 0x1). Inherited on fork, reset on exec. 22*bdb56184SDevin Teske */ 23*bdb56184SDevin Teske #define LINUX_PKEY_INITIAL_MAP 0x1 24*bdb56184SDevin Teske 25*bdb56184SDevin Teske /* 26*bdb56184SDevin Teske * Initial PKRU at exec: access disabled for keys 1..15, key 0 open; 27*bdb56184SDevin Teske * the Linux init_pkru default. 28*bdb56184SDevin Teske */ 29*bdb56184SDevin Teske #define LINUX_PKRU_INIT 0x55555554 30*bdb56184SDevin Teske 31*bdb56184SDevin Teske struct thread; 32*bdb56184SDevin Teske 33*bdb56184SDevin Teske void linux_pkru_exec_init(struct thread *); 34*bdb56184SDevin Teske 35*bdb56184SDevin Teske #endif /* !_AMD64_LINUX_EMUL_MD_H_ */ 36