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 #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 23 24 #define X86_GDT_SIZE (X86_GDT_NUM_ENTRIES * X86_GDT_ENTRY_SIZE) 25 26 #ifndef __ASSEMBLY__ 27 28 #define PORT_RESET 0xcf9 29 30 static inline __attribute__((always_inline)) void cpu_hlt(void) 31 { 32 asm("hlt"); 33 } 34 35 static 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 47 #endif 48