Changeset 0b5ac364 in mainline


Ignore:
Timestamp:
2005-11-08T18:02:44Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e2ec980f
Parents:
0187fd0
Message:

Get the memory barriers on ia32 right.

File:
1 edited

Legend:

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

    r0187fd0 r0b5ac364  
    3030#define __ia32_BARRIER_H__
    3131
     32#include <arch/types.h>
     33
    3234/*
    3335 * NOTE:
     
    4446#define CS_LEAVE_BARRIER()      __asm__ volatile ("" ::: "memory")
    4547
     48static inline void cpuid_serialization(void)
     49{
     50        __asm__ volatile (
     51                "xorl %%eax, %%eax\n"
     52                "cpuid\n"
     53                ::: "eax", "ebx", "ecx", "edx", "memory"
     54        );
     55}
     56
    4657#ifdef CONFIG_FENCES_P4
    4758#       define memory_barrier() __asm__ volatile ("mfence\n" ::: "memory")
     
    4960#       define write_barrier()          __asm__ volatile ("sfence\n" ::: "memory")
    5061#elif CONFIG_FENCES_P3
    51 #       define memory_barrier() __asm__ volatile ("\n" ::: "memory")
    52 #       define read_barrier()           __asm__ volatile ("\n" ::: "memory")
     62#       define memory_barrier()         cpuid_serialization()
     63#       define read_barrier()           cpuid_serialization()
    5364#       define write_barrier()          __asm__ volatile ("sfence\n" ::: "memory")
     65#else
     66#       define memory_barrier()         cpuid_serialization()
     67#       define read_barrier()           cpuid_serialization()
     68#       define write_barrier()          cpuid_serialization()
    5469#endif
    5570
Note: See TracChangeset for help on using the changeset viewer.