xref: /freebsd/sys/compat/linuxkpi/common/include/asm/cpu_device_id.h (revision 592ae60e2b2eff6c2ec467c34be9a457ce24b044)
1 /*
2  * SPDX-License-Identifier: BSD-2-Clause
3  *
4  * Copyright (c) 2026 The FreeBSD Foundation
5  */
6 
7 #ifndef _LINUXKPI_ASM_CPU_DEVICE_ID_H_
8 #define	_LINUXKPI_ASM_CPU_DEVICE_ID_H_
9 
10 #include <linux/bits.h>
11 
12 #define	VFM_MODEL_BIT	0
13 #define	VFM_FAMILY_BIT	8
14 #define	VFM_VENDOR_BIT	16
15 #define	VFM_RSVD_BIT	24
16 
17 #define	VFM_MODEL_MASK	GENMASK(VFM_FAMILY_BIT - 1, VFM_MODEL_BIT)
18 #define	VFM_FAMILY_MASK	GENMASK(VFM_VENDOR_BIT - 1, VFM_FAMILY_BIT)
19 #define	VFM_VENDOR_MASK	GENMASK(VFM_RSVD_BIT - 1, VFM_VENDOR_BIT)
20 
21 #define	VFM_MODEL(vfm)	(((vfm) & VFM_MODEL_MASK) >> VFM_MODEL_BIT)
22 #define	VFM_FAMILY(vfm)	(((vfm) & VFM_FAMILY_MASK) >> VFM_FAMILY_BIT)
23 #define	VFM_VENDOR(vfm)	(((vfm) & VFM_VENDOR_MASK) >> VFM_VENDOR_BIT)
24 
25 #define	VFM_MAKE(_vendor, _family, _model) (	\
26 	((_model) << VFM_MODEL_BIT) |		\
27 	((_family) << VFM_FAMILY_BIT) |		\
28 	((_vendor) << VFM_VENDOR_BIT)		\
29 )
30 
31 #include <linux/mod_devicetable.h>
32 #include <asm/intel-family.h>
33 #include <asm/processor.h>
34 
35 #define	X86_CPU_ID_FLAG_ENTRY_VALID	BIT(0)
36 
37 #define	X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE(			\
38     _vendor, _family, _model, _steppings, _feature) {			\
39 	.vendor		= _vendor,					\
40 	.family		= _family,					\
41 	.model		= _model,					\
42 	.steppings	= _steppings,					\
43 	.feature	= _feature,					\
44 	.flags          = X86_CPU_ID_FLAG_ENTRY_VALID,			\
45 }
46 
47 #define	X86_MATCH_VFM(_vfm, _data)					\
48     X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE(			\
49 	VFM_VENDOR(_vfm),						\
50 	VFM_FAMILY(_vfm),						\
51 	VFM_MODEL(_vfm),						\
52 	X86_STEPPING_ANY,						\
53 	X86_FEATURE_ANY)
54 
55 #if defined(__i386__) || defined(__amd64__)
56 const struct x86_cpu_id *linuxkpi_x86_match_cpu(const struct x86_cpu_id *match_array);
57 #define	x86_match_cpu(match_array) linuxkpi_x86_match_cpu(match_array)
58 #endif
59 
60 #endif /* _LINUXKPI_ASM_CPU_DEVICE_ID_H_ */
61