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 #define PORT_RESET 0xcf9 36 37 static inline __attribute__((always_inline)) void cpu_hlt(void) 38 { 39 asm("hlt"); 40 } 41 42 static inline ulong cpu_get_sp(void) 43 { 44 ulong result; 45 46 asm volatile( 47 "mov %%esp, %%eax" 48 : "=a" (result)); 49 return result; 50 } 51 52 #endif /* __ASSEMBLY__ */ 53 54 #endif 55