X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Finclude%2Fcpu%2Fx86%2Flapic.h;h=2215ec7ee5e28b4d31f67d33b6bcbb82893669f1;hb=00093a81d3f54c72215d9f402c3f88880da89a81;hp=9f2191940ae35a4987e3e47ae9f074d445f8ed88;hpb=0bc615482e34af308712be970479aeb613f5fa41;p=coreboot.git diff --git a/src/include/cpu/x86/lapic.h b/src/include/cpu/x86/lapic.h index 9f2191940..2215ec7ee 100644 --- a/src/include/cpu/x86/lapic.h +++ b/src/include/cpu/x86/lapic.h @@ -27,8 +27,6 @@ static inline __attribute__((always_inline)) void lapic_wait_icr_idle(void) do { } while ( lapic_read( LAPIC_ICR ) & LAPIC_ICR_BUSY ); } - - static inline void enable_lapic(void) { @@ -53,22 +51,23 @@ static inline __attribute__((always_inline)) unsigned long lapicid(void) return lapic_read(LAPIC_ID) >> 24; } - +#ifndef __ROMCC__ #if CONFIG_AP_IN_SIPI_WAIT != 1 /* If we need to go back to sipi wait, we use the long non-inlined version of * this function in lapic_cpu_init.c */ static inline __attribute__((always_inline)) void stop_this_cpu(void) { - /* Called by an AP when it is ready to halt and wait for a new task */ for(;;) { hlt(); } } +#else +void stop_this_cpu(void); #endif -#if ! defined (__ROMCC__) +#if !defined(__PRE_RAM__) #define xchg(ptr,v) ((__typeof__(*(ptr)))__xchg((unsigned long)(v),(ptr),sizeof(*(ptr)))) @@ -105,10 +104,9 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz return x; } - static inline void lapic_write_atomic(unsigned long reg, unsigned long v) { - xchg((volatile unsigned long *)(LAPIC_DEFAULT_BASE+reg), v); + (void)xchg((volatile unsigned long *)(LAPIC_DEFAULT_BASE+reg), v); } @@ -149,14 +147,14 @@ static inline int lapic_remote_read(int apicid, int reg, unsigned long *pvalue) void setup_lapic(void); - #if CONFIG_SMP == 1 struct device; int start_cpu(struct device *cpu); - #endif /* CONFIG_SMP */ +#endif /* !__PRE_RAM__ */ -#endif /* !__ROMCC__ */ +int boot_cpu(void); +#endif #endif /* CPU_X86_LAPIC_H */