xref: /aosp_15_r20/external/coreboot/src/include/cpu/amd/cpuid.h (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 /* This file applies to AMD64 products.
4  * The definitions come from the AMD64 Programmers Manual vol2
5  * Revision 3.30 and/or the device's BKDG.
6  */
7 
8 #ifndef CPU_AMD_CPUID_H
9 #define CPU_AMD_CPUID_H
10 
11 #define CPUID_L1_TLB_CACHE_IDS		0x80000005
12 /* Fn0x80000005_EAX */
13 #define  L1_DAT_TLB_2M4M_ASSOC_SHFT	24
14 #define  L1_DAT_TLB_2M4M_ASSOC_MASK	(0xff << L1_DAT_TLB_2M4M_ASSOC_SHFT)
15 #define  L1_DAT_TLB_2M4M_SIZE_SHFT	16
16 #define  L1_DAT_TLB_2M4M_SIZE_MASK	(0xff << L1_DAT_TLB_2M4M_SIZE_SHFT)
17 #define  L1_INST_TLB_2M4M_ASSOC_SHFT	8
18 #define  L1_INST_TLB_2M4M_ASSOC_MASK	(0xff << L1_INST_TLB_2M4M_ASSOC_SHFT)
19 #define  L1_INST_TLB_2M4M_SIZE_SHFT	0
20 #define  L1_INST_TLB_2M4M_SIZE_MASK	(0xff << L1_INST_TLB_2M4M_SIZE_SHFT)
21 /* Fn0x80000005_EBX */
22 #define  L1_DAT_TLB_4K_ASSOC_SHFT	24
23 #define  L1_DAT_TLB_4K_ASSOC_MASK	(0xff << L1_DAT_TLB_4K_ASSOC_SHFT)
24 #define  L1_DAT_TLB_4K_SIZE_SHFT	16
25 #define  L1_DAT_TLB_4K_SIZE_MASK	(0xff << L1_DAT_TLB_4K_SIZE_SHFT)
26 #define  L1_INST_TLB_4K_ASSOC_SHFT	8
27 #define  L1_INST_TLB_4K_ASSOC_MASK	(0xff << L1_INST_TLB_4K_ASSOC_SHFT)
28 #define  L1_INST_TLB_4K_SIZE_SHFT	0
29 #define  L1_INST_TLB_4K_SIZE_MASK	(0xff << L1_INST_TLB_4K_SIZE_SHFT)
30 /* Fn0x80000005_ECX */
31 #define  L1_DC_SIZE_SHFT		24
32 #define  L1_DC_SIZE_MASK		(0xff << L1_DC_SIZE_SHFT)
33 #define  L1_DC_ASSOC_SHFT		16
34 #define  L1_DC_ASSOC_MASK		(0xff << L1_DC_ASSOC_SHFT)
35 #define  L1_DC_LINE_TAG_SHFT		8
36 #define  L1_DC_LINE_TAG_MASK		(0xff << L1_DC_LINE_TAG_SHFT)
37 #define  L1_DC_LINE_SIZE_SHFT		0
38 #define  L1_DC_LINE_SIZE_MASK		(0xff << L1_DC_LINE_SIZE_SHFT)
39 /* Fn0x80000005_EDX */
40 #define  L1_IC_SIZE_SHFT		24
41 #define  L1_IC_SIZE_MASK		(0xff << L1_IC_SIZE_SHFT)
42 #define  L1_IC_ASSOC_SHFT		16
43 #define  L1_IC_ASSOC_MASK		(0xff << L1_IC_ASSOC_SHFT)
44 #define  L1_IC_LINE_TAG_SHFT		8
45 #define  L1_IC_LINE_TAG_MASK		(0xff << L1_IC_LINE_TAG_SHFT)
46 #define  L1_IC_LINE_SIZE_SHFT		0
47 #define  L1_IC_LINE_SIZE_MASK		(0xff << L1_IC_LINE_SIZE_SHFT)
48 
49 #define CPUID_L2_L3_CACHE_L2_TLB_IDS	0x80000006
50 /* Fn0x80000006_EAX */
51 #define  L2_DAT_TLB_2M4M_ASSOC_SHFT	28
52 #define  L2_DAT_TLB_2M4M_ASSOC_MASK	(0xf << L2_DAT_TLB_2M4M_ASSOC_SHFT)
53 #define  L2_DAT_TLB_2M4M_SIZE_SHFT	16
54 #define  L2_DAT_TLB_2M4M_SIZE_MASK	(0xfff << L2_DAT_TLB_2M4M_SIZE_SHFT)
55 #define  L2_INST_TLB_2M4M_ASSOC_SHFT	12
56 #define  L2_INST_TLB_2M4M_ASSOC_MASK	(0xf << L2_INST_TLB_2M4M_ASSOC_SHFT)
57 #define  L2_INST_TLB_2M4M_SIZE_SHFT	0
58 #define  L2_INST_TLB_2M4M_SIZE_MASK	(0xfff << L2_INST_TLB_2M4M_SIZE_SHFT)
59 /*Fn0x80000006_EBX */
60 #define  L2_DAT_TLB_4K_ASSOC_SHFT	28
61 #define  L2_DAT_TLB_4K_ASSOC_MASK	(0xf << L2_DAT_TLB_4K_ASSOC_SHFT)
62 #define  L2_DAT_TLB_4K_SIZE_SHFT	16
63 #define  L2_DAT_TLB_4K_SIZE_MASK	(0xfff << L2_DAT_TLB_4K_SIZE_SHFT)
64 #define  L2_INST_TLB_4K_ASSOC_SHFT	12
65 #define  L2_INST_TLB_4K_ASSOC_MASK	(0xf << L2_INST_TLB_4K_ASSOC_SHFT)
66 #define  L2_INST_TLB_4K_SIZE_SHFT	0
67 #define  L2_INST_TLB_4K_SIZE_MASK	(0xfff << L2_INST_TLB_4K_SIZE_SHFT)
68 /* Fn0x80000006_ECX */
69 #define  L2_DC_SIZE_SHFT		16
70 #define  L2_DC_SIZE_MASK		(0xffff << L2_DC_SIZE_SHFT)
71 #define  L2_DC_ASSOC_SHFT		12
72 #define  L2_DC_ASSOC_MASK		(0xf << L2_DC_ASSOC_SHFT)
73 #define  L2_DC_LINE_TAG_SHFT		8
74 #define  L2_DC_LINE_TAG_MASK		(0xf << L2_DC_LINE_TAG_SHFT)
75 #define  L2_DC_LINE_SIZE_SHFT		0
76 #define  L2_DC_LINE_SIZE_MASK		(0xff << L2_DC_LINE_SIZE_SHFT)
77 /* Fn0x80000006_EDX */
78 #define  L3_DC_SIZE_SHFT		18
79 #define  L3_DC_SIZE_MASK		(0x3fff << L3_DC_SIZE_SHFT)
80 #define  L3_DC_ASSOC_SHFT		12
81 #define  L3_DC_ASSOC_MASK		(0xf << L3_DC_ASSOC_SHFT)
82 #define  L3_DC_LINE_TAG_SHFT		8
83 #define  L3_DC_LINE_TAG_MASK		(0xf << L3_DC_LINE_TAG_SHFT)
84 #define  L3_DC_LINE_SIZE_SHFT		0
85 #define  L3_DC_LINE_SIZE_MASK		(0xff << L3_DC_LINE_SIZE_SHFT)
86 
87 #define CPUID_EXT_PM			0x80000007
88 #define CPUID_MODEL			1
89 
90 #define CPUID_TLB_L1L2_1G_IDS		0x80000019
91 /* Fn0x80000019_EAX */
92 #define  L1_DAT_TLB_1G_ASSOC_SHFT	28
93 #define  L1_DAT_TLB_1G_ASSOC_MASK	(0xf << L1_DAT_TLB_1G_ASSOC_SHFT)
94 #define  L1_DAT_TLB_1G_SIZE_SHFT	16
95 #define  L1_DAT_TLB_1G_SIZE_MASK	(0xfff << L1_DAT_TLB_1G_SIZE_SHFT)
96 #define  L1_INST_TLB_1G_ASSOC_SHFT	12
97 #define  L1_INST_TLB_1G_ASSOC_MASK	(0xf << L1_INST_TLB_1G_ASSOC_SHFT)
98 #define  L1_INST_TLB_1G_SIZE_SHFT	0
99 #define  L1_INST_TLB_1G_SIZE_MASK	(0xfff << L1_INST_TLB_1G_SIZE_SHFT)
100 /* Fn0x80000019_EBX */
101 #define  L2_DAT_TLB_1G_ASSOC_SHFT	28
102 #define  L2_DAT_TLB_1G_ASSOC_MASK	(0xf << L2_DAT_TLB_1G_ASSOC_SHFT)
103 #define  L2_DAT_TLB_1G_SIZE_SHFT	16
104 #define  L2_DAT_TLB_1G_SIZE_MASK	(0xfff << L2_DAT_TLB_1G_SIZE_SHFT)
105 #define  L2_INST_TLB_1G_ASSOC_SHFT	12
106 #define  L2_INST_TLB_1G_ASSOC_MASK	(0xf << L2_INST_TLB_1G_ASSOC_SHFT)
107 #define  L2_INST_TLB_1G_SIZE_SHFT	0
108 #define  L2_INST_TLB_1G_SIZE_MASK	(0xfff << L2_INST_TLB_1G_SIZE_SHFT)
109 
110 #define CPUID_CACHE_PROPS		0x8000001D
111 #define  CACHE_PROPS_0			0
112 #define  CACHE_PROPS_1			1
113 #define  CACHE_PROPS_2			2
114 #define  CACHE_PROPS_3			3
115 #define  NUM_SHARE_CACHE_SHFT		14
116 #define  NUM_SHARE_CACHE_MASK		(0xfff << NUM_SHARE_CACHE_SHFT)
117 #define  CACHE_INCLUSIVE_SHFT		1
118 #define  CACHE_INCLUSIVE_MASK		(0x1 << CACHE_INCLUSIVE_SHFT)
119 
120 #define CPUID_EBX_CORE_ID		0x8000001E
121 #define  CPUID_EBX_THREADS_SHIFT	8
122 #define  CPUID_EBX_THREADS_MASK		(0xff << CPUID_EBX_THREADS_SHIFT)
123 
124 #define CPUID_EBX_MEM_ENCRYPT		0x8000001f
125 #define  CPUID_EBX_MEM_ENCRYPT_ADDR_BITS_SHIFT	6
126 #define  CPUID_EBX_MEM_ENCRYPT_ADDR_BITS_MASK	(0x3f << CPUID_EBX_MEM_ENCRYPT_ADDR_BITS_SHIFT)
127 
128 #endif /* CPU_AMD_CPUID_H */
129