xref: /rk3399_rockchip-uboot/arch/x86/include/asm/processor.h (revision f5fbbe95798dba8f1536892598afbf33b5c07b5f)
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 
3321b9b14bSSimon Glass #ifndef __ASSEMBLY__
3421b9b14bSSimon Glass 
35*f5fbbe95SSimon Glass #define PORT_RESET		0xcf9
36*f5fbbe95SSimon Glass 
3721b9b14bSSimon Glass static inline __attribute__((always_inline)) void cpu_hlt(void)
3821b9b14bSSimon Glass {
3921b9b14bSSimon Glass 	asm("hlt");
4021b9b14bSSimon Glass }
4121b9b14bSSimon Glass 
4221b9b14bSSimon Glass static inline ulong cpu_get_sp(void)
4321b9b14bSSimon Glass {
4421b9b14bSSimon Glass 	ulong result;
4521b9b14bSSimon Glass 
4621b9b14bSSimon Glass 	asm volatile(
4721b9b14bSSimon Glass 		"mov %%esp, %%eax"
4821b9b14bSSimon Glass 		: "=a" (result));
4921b9b14bSSimon Glass 	return result;
5021b9b14bSSimon Glass }
5121b9b14bSSimon Glass 
5221b9b14bSSimon Glass #endif /* __ASSEMBLY__ */
5321b9b14bSSimon Glass 
54fea25720SGraeme Russ #endif
55