xref: /aosp_15_r20/external/coreboot/src/include/cpu/x86/lapic_def.h (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef CPU_X86_LAPIC_DEF_H
4 #define CPU_X86_LAPIC_DEF_H
5 
6 #define LAPIC_BASE_MSR 0x1B
7 #define LAPIC_BASE_MSR_BOOTSTRAP_PROCESSOR (1 << 8)
8 #define LAPIC_BASE_MSR_X2APIC_MODE (1 << 10)
9 #define LAPIC_BASE_MSR_ENABLE (1 << 11)
10 #define LAPIC_BASE_X2APIC_ENABLED \
11 	(LAPIC_BASE_MSR_X2APIC_MODE | LAPIC_BASE_MSR_ENABLE)
12 #define LAPIC_BASE_MSR_ADDR_MASK 0xFFFFF000
13 
14 #define LAPIC_DEFAULT_BASE 0xfee00000
15 
16 #define LAPIC_ID		0x020
17 #define LAPIC_LVR	0x030
18 #define	LAPIC_TASKPRI	0x80
19 #define		LAPIC_TPRI_MASK		0xFF
20 #define LAPIC_ARBID	0x090
21 #define	LAPIC_RRR	0x0C0
22 #define LAPIC_SVR	0x0f0
23 #define LAPIC_SPIV	0x0f0
24 #define		LAPIC_SPIV_ENABLE  0x100
25 #define LAPIC_ESR	0x280
26 #define		LAPIC_ESR_SEND_CS	0x00001
27 #define		LAPIC_ESR_RECV_CS	0x00002
28 #define		LAPIC_ESR_SEND_ACC	0x00004
29 #define		LAPIC_ESR_RECV_ACC	0x00008
30 #define		LAPIC_ESR_SENDILL	0x00020
31 #define		LAPIC_ESR_RECVILL	0x00040
32 #define		LAPIC_ESR_ILLREGA	0x00080
33 #define LAPIC_ICR	0x300
34 #define		LAPIC_DEST_SELF		0x40000
35 #define		LAPIC_DEST_ALLINC	0x80000
36 #define		LAPIC_DEST_ALLBUT	0xC0000
37 #define		LAPIC_ICR_RR_MASK	0x30000
38 #define		LAPIC_ICR_RR_INVALID	0x00000
39 #define		LAPIC_ICR_RR_INPROG	0x10000
40 #define		LAPIC_ICR_RR_VALID	0x20000
41 #define		LAPIC_INT_LEVELTRIG	0x08000
42 #define		LAPIC_INT_ASSERT		0x04000
43 #define		LAPIC_ICR_BUSY		0x01000
44 #define		LAPIC_DEST_LOGICAL	0x00800
45 #define		LAPIC_DM_FIXED		0x00000
46 #define		LAPIC_DM_LOWEST		0x00100
47 #define		LAPIC_DM_SMI		0x00200
48 #define		LAPIC_DM_REMRD		0x00300
49 #define		LAPIC_DM_NMI		0x00400
50 #define		LAPIC_DM_INIT		0x00500
51 #define		LAPIC_DM_STARTUP		0x00600
52 #define		LAPIC_DM_EXTINT		0x00700
53 #define		LAPIC_VECTOR_MASK	0x000FF
54 #define LAPIC_ICR2	0x310
55 #define		GET_LAPIC_DEST_FIELD(x)	(((x)>>24)&0xFF)
56 #define		SET_LAPIC_DEST_FIELD(x)	((x)<<24)
57 #define LAPIC_LVTT	0x320
58 #define LAPIC_LVTPC	0x340
59 #define LAPIC_LVT0	0x350
60 #define		LAPIC_LVT_TIMER_BASE_MASK	(0x3<<18)
61 #define		GET_LAPIC_TIMER_BASE(x)		(((x)>>18)&0x3)
62 #define		SET_LAPIC_TIMER_BASE(x)		(((x)<<18))
63 #define		LAPIC_TIMER_BASE_CLKIN		0x0
64 #define		LAPIC_TIMER_BASE_TMBASE		0x1
65 #define		LAPIC_TIMER_BASE_DIV		0x2
66 #define		LAPIC_LVT_TIMER_PERIODIC		(1<<17)
67 #define		LAPIC_LVT_MASKED			(1<<16)
68 #define		LAPIC_LVT_LEVEL_TRIGGER		(1<<15)
69 #define		LAPIC_LVT_REMOTE_IRR		(1<<14)
70 #define		LAPIC_INPUT_POLARITY		(1<<13)
71 #define		LAPIC_SEND_PENDING		(1<<12)
72 #define		LAPIC_LVT_RESERVED_1		(1<<11)
73 #define		LAPIC_DELIVERY_MODE_MASK		(7<<8)
74 #define		LAPIC_DELIVERY_MODE_FIXED	(0<<8)
75 #define		LAPIC_DELIVERY_MODE_NMI		(4<<8)
76 #define		LAPIC_DELIVERY_MODE_EXTINT	(7<<8)
77 #define		GET_LAPIC_DELIVERY_MODE(x)	(((x)>>8)&0x7)
78 #define		SET_LAPIC_DELIVERY_MODE(x, y)	(((x)&~0x700)|((y)<<8))
79 #define			LAPIC_MODE_FIXED		0x0
80 #define			LAPIC_MODE_NMI		0x4
81 #define			LAPIC_MODE_EXINT		0x7
82 #define LAPIC_LVT1	0x360
83 #define LAPIC_LVTERR	0x370
84 #define	LAPIC_TMICT	0x380
85 #define	LAPIC_TMCCT	0x390
86 #define	LAPIC_TDCR	0x3E0
87 #define		LAPIC_TDR_DIV_TMBASE	(1<<2)
88 #define		LAPIC_TDR_DIV_1		0xB
89 #define		LAPIC_TDR_DIV_2		0x0
90 #define		LAPIC_TDR_DIV_4		0x1
91 #define		LAPIC_TDR_DIV_8		0x2
92 #define		LAPIC_TDR_DIV_16		0x3
93 #define		LAPIC_TDR_DIV_32		0x8
94 #define		LAPIC_TDR_DIV_64		0x9
95 #define		LAPIC_TDR_DIV_128	0xA
96 
97 #define X2APIC_MSR_BASE_ADDRESS	0x800
98 #define X2APIC_LAPIC_ID		(X2APIC_MSR_BASE_ADDRESS | (LAPIC_ID >> 4))
99 #define	X2APIC_MSR_ICR_ADDRESS	0x830
100 #endif /* CPU_X86_LAPIC_DEF_H */
101