xref: /freebsd/sys/amd64/linux/linux_emul_md.h (revision bdb561843e865eaa5bbdc5394ed9d9c91136240c)
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