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 13*e34aef1dSSimon Glass #define X86_GDT_ENTRY_NULL 0 14*e34aef1dSSimon Glass #define X86_GDT_ENTRY_UNUSED 1 15*e34aef1dSSimon Glass #define X86_GDT_ENTRY_32BIT_CS 2 16109ad143SGraeme Russ #define X86_GDT_ENTRY_32BIT_DS 3 17*e34aef1dSSimon Glass #define X86_GDT_ENTRY_32BIT_FS 4 18*e34aef1dSSimon Glass #define X86_GDT_ENTRY_16BIT_CS 5 19*e34aef1dSSimon Glass #define X86_GDT_ENTRY_16BIT_DS 6 20*e34aef1dSSimon Glass #define X86_GDT_ENTRY_16BIT_FLAT_CS 7 21*e34aef1dSSimon Glass #define X86_GDT_ENTRY_16BIT_FLAT_DS 8 22*e34aef1dSSimon Glass #define X86_GDT_NUM_ENTRIES 9 23109ad143SGraeme Russ 24109ad143SGraeme Russ #define X86_GDT_SIZE (X86_GDT_NUM_ENTRIES * X86_GDT_ENTRY_SIZE) 25fea25720SGraeme Russ 2621b9b14bSSimon Glass #ifndef __ASSEMBLY__ 2721b9b14bSSimon Glass 28f5fbbe95SSimon Glass #define PORT_RESET 0xcf9 29f5fbbe95SSimon Glass 3021b9b14bSSimon Glass static inline __attribute__((always_inline)) void cpu_hlt(void) 3121b9b14bSSimon Glass { 3221b9b14bSSimon Glass asm("hlt"); 3321b9b14bSSimon Glass } 3421b9b14bSSimon Glass 3521b9b14bSSimon Glass static inline ulong cpu_get_sp(void) 3621b9b14bSSimon Glass { 3721b9b14bSSimon Glass ulong result; 3821b9b14bSSimon Glass 3921b9b14bSSimon Glass asm volatile( 4021b9b14bSSimon Glass "mov %%esp, %%eax" 4121b9b14bSSimon Glass : "=a" (result)); 4221b9b14bSSimon Glass return result; 4321b9b14bSSimon Glass } 4421b9b14bSSimon Glass 4521b9b14bSSimon Glass #endif /* __ASSEMBLY__ */ 4621b9b14bSSimon Glass 47fea25720SGraeme Russ #endif 48