Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia32/include/barrier.h

    r7a0359b r1ea99cc  
    3636#define KERN_ia32_BARRIER_H_
    3737
    38 #include <trace.h>
    39 
    4038/*
    4139 * NOTE:
     
    5250#define CS_LEAVE_BARRIER()  asm volatile ("" ::: "memory")
    5351
    54 NO_TRACE static inline void cpuid_serialization(void)
     52static inline void cpuid_serialization(void)
    5553{
     54#ifndef __IN_SHARED_LIBC__
    5655        asm volatile (
    5756                "xorl %%eax, %%eax\n"
     
    5958                ::: "eax", "ebx", "ecx", "edx", "memory"
    6059        );
     60#else
     61        /* Must not clobber PIC register ebx */
     62        asm volatile (
     63                "movl %%ebx, %%esi\n"
     64                "xorl %%eax, %%eax\n"
     65                "cpuid\n"
     66                "movl %%esi, %%ebx\n"
     67                ::: "eax", "ecx", "edx", "esi", "memory"
     68        );
     69#endif
    6170}
    6271
Note: See TracChangeset for help on using the changeset viewer.