blob: 3e26202aa545504ac86f9c6278c66c9f8dd87482 [file] [log] [blame]
wdenk67ff36c2002-11-19 23:01:07 +00001/*
2 * (C) Copyright 2002
Albert ARIBAUD60fbc8d2011-08-04 18:45:45 +02003 * Daniel Engström, Omicron Ceti AB, daniel@omicron.se
wdenk57b2d802003-06-27 21:31:46 +00004 *
Wolfgang Denkd79de1d2013-07-08 09:37:19 +02005 * SPDX-License-Identifier: GPL-2.0+
wdenk67ff36c2002-11-19 23:01:07 +00006 */
7
8#ifndef __ASM_PROCESSOR_H_
9#define __ASM_PROCESSOR_H_ 1
Graeme Russ25391d12011-02-12 15:11:30 +110010
Simon Glass9fc71c12014-11-14 20:56:29 -070011#define X86_GDT_ENTRY_SIZE 8
Graeme Russ391bb952011-12-31 10:24:36 +110012
Simon Glass9fc71c12014-11-14 20:56:29 -070013#define X86_GDT_ENTRY_NULL 0
14#define X86_GDT_ENTRY_UNUSED 1
15#define X86_GDT_ENTRY_32BIT_CS 2
16#define X86_GDT_ENTRY_32BIT_DS 3
17#define X86_GDT_ENTRY_32BIT_FS 4
18#define X86_GDT_ENTRY_16BIT_CS 5
19#define X86_GDT_ENTRY_16BIT_DS 6
20#define X86_GDT_ENTRY_16BIT_FLAT_CS 7
21#define X86_GDT_ENTRY_16BIT_FLAT_DS 8
22#define X86_GDT_NUM_ENTRIES 9
Graeme Russ391bb952011-12-31 10:24:36 +110023
24#define X86_GDT_SIZE (X86_GDT_NUM_ENTRIES * X86_GDT_ENTRY_SIZE)
Graeme Russ25391d12011-02-12 15:11:30 +110025
Simon Glassbe36df62014-11-10 18:00:24 -070026#ifndef __ASSEMBLY__
27
Simon Glassf226c412014-11-12 22:42:19 -070028#define PORT_RESET 0xcf9
29
Simon Glassbe36df62014-11-10 18:00:24 -070030static inline __attribute__((always_inline)) void cpu_hlt(void)
31{
32 asm("hlt");
33}
34
35static inline ulong cpu_get_sp(void)
36{
37 ulong result;
38
39 asm volatile(
40 "mov %%esp, %%eax"
41 : "=a" (result));
42 return result;
43}
44
45#endif /* __ASSEMBLY__ */
46
wdenk67ff36c2002-11-19 23:01:07 +000047#endif