xref: /openbmc/u-boot/arch/x86/include/asm/processor.h (revision 21b9b14b)
1fea25720SGraeme Russ /*
2fea25720SGraeme Russ  * (C) Copyright 2002
3fa82f871SAlbert ARIBAUD  * Daniel Engström, Omicron Ceti AB, daniel@omicron.se
4fea25720SGraeme Russ  *
51a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
6fea25720SGraeme Russ  */
7fea25720SGraeme Russ 
8fea25720SGraeme Russ #ifndef __ASM_PROCESSOR_H_
9fea25720SGraeme Russ #define __ASM_PROCESSOR_H_ 1
10fea25720SGraeme Russ 
11109ad143SGraeme Russ #define X86_GDT_ENTRY_SIZE	8
12109ad143SGraeme Russ 
13109ad143SGraeme Russ #ifndef __ASSEMBLY__
14109ad143SGraeme Russ 
15109ad143SGraeme Russ enum {
16109ad143SGraeme Russ 	X86_GDT_ENTRY_NULL = 0,
17109ad143SGraeme Russ 	X86_GDT_ENTRY_UNUSED,
18109ad143SGraeme Russ 	X86_GDT_ENTRY_32BIT_CS,
19109ad143SGraeme Russ 	X86_GDT_ENTRY_32BIT_DS,
209e6c572fSGraeme Russ 	X86_GDT_ENTRY_32BIT_FS,
21109ad143SGraeme Russ 	X86_GDT_ENTRY_16BIT_CS,
22109ad143SGraeme Russ 	X86_GDT_ENTRY_16BIT_DS,
23109ad143SGraeme Russ 	X86_GDT_NUM_ENTRIES
24109ad143SGraeme Russ };
25109ad143SGraeme Russ #else
26109ad143SGraeme Russ /* NOTE: If the above enum is modified, this define must be checked */
27109ad143SGraeme Russ #define X86_GDT_ENTRY_32BIT_DS	3
288d61625dSGraeme Russ #define X86_GDT_NUM_ENTRIES	7
29109ad143SGraeme Russ #endif
30109ad143SGraeme Russ 
31109ad143SGraeme Russ #define X86_GDT_SIZE		(X86_GDT_NUM_ENTRIES * X86_GDT_ENTRY_SIZE)
32fea25720SGraeme Russ 
33*21b9b14bSSimon Glass #ifndef __ASSEMBLY__
34*21b9b14bSSimon Glass 
35*21b9b14bSSimon Glass static inline __attribute__((always_inline)) void cpu_hlt(void)
36*21b9b14bSSimon Glass {
37*21b9b14bSSimon Glass 	asm("hlt");
38*21b9b14bSSimon Glass }
39*21b9b14bSSimon Glass 
40*21b9b14bSSimon Glass static inline ulong cpu_get_sp(void)
41*21b9b14bSSimon Glass {
42*21b9b14bSSimon Glass 	ulong result;
43*21b9b14bSSimon Glass 
44*21b9b14bSSimon Glass 	asm volatile(
45*21b9b14bSSimon Glass 		"mov %%esp, %%eax"
46*21b9b14bSSimon Glass 		: "=a" (result));
47*21b9b14bSSimon Glass 	return result;
48*21b9b14bSSimon Glass }
49*21b9b14bSSimon Glass 
50*21b9b14bSSimon Glass #endif /* __ASSEMBLY__ */
51*21b9b14bSSimon Glass 
52fea25720SGraeme Russ #endif
53