xref: /openbmc/u-boot/arch/x86/include/asm/processor.h (revision 21b9b14b49b742c3ee70f819aab3918f517bf0b8)
1 /*
2  * (C) Copyright 2002
3  * Daniel Engström, Omicron Ceti AB, daniel@omicron.se
4  *
5  * SPDX-License-Identifier:	GPL-2.0+
6  */
7 
8 #ifndef __ASM_PROCESSOR_H_
9 #define __ASM_PROCESSOR_H_ 1
10 
11 #define X86_GDT_ENTRY_SIZE	8
12 
13 #ifndef __ASSEMBLY__
14 
15 enum {
16 	X86_GDT_ENTRY_NULL = 0,
17 	X86_GDT_ENTRY_UNUSED,
18 	X86_GDT_ENTRY_32BIT_CS,
19 	X86_GDT_ENTRY_32BIT_DS,
20 	X86_GDT_ENTRY_32BIT_FS,
21 	X86_GDT_ENTRY_16BIT_CS,
22 	X86_GDT_ENTRY_16BIT_DS,
23 	X86_GDT_NUM_ENTRIES
24 };
25 #else
26 /* NOTE: If the above enum is modified, this define must be checked */
27 #define X86_GDT_ENTRY_32BIT_DS	3
28 #define X86_GDT_NUM_ENTRIES	7
29 #endif
30 
31 #define X86_GDT_SIZE		(X86_GDT_NUM_ENTRIES * X86_GDT_ENTRY_SIZE)
32 
33 #ifndef __ASSEMBLY__
34 
35 static inline __attribute__((always_inline)) void cpu_hlt(void)
36 {
37 	asm("hlt");
38 }
39 
40 static inline ulong cpu_get_sp(void)
41 {
42 	ulong result;
43 
44 	asm volatile(
45 		"mov %%esp, %%eax"
46 		: "=a" (result));
47 	return result;
48 }
49 
50 #endif /* __ASSEMBLY__ */
51 
52 #endif
53