Changeset d92bf462 in mainline for kernel/arch/ppc32/include/barrier.h


Ignore:
Timestamp:
2010-05-22T22:31:17Z (14 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ba7371f9
Parents:
d354d57
Message:

coding style changes, no change in functionality

File:
1 edited

Legend:

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

    rd354d57 rd92bf462  
    2727 */
    2828
    29 /** @addtogroup ppc32   
     29/** @addtogroup ppc32
    3030 * @{
    3131 */
     
    3636#define KERN_ppc32_BARRIER_H_
    3737
    38 #define CS_ENTER_BARRIER()      asm volatile ("" ::: "memory")
    39 #define CS_LEAVE_BARRIER()      asm volatile ("" ::: "memory")
     38#define CS_ENTER_BARRIER()  asm volatile ("" ::: "memory")
     39#define CS_LEAVE_BARRIER()  asm volatile ("" ::: "memory")
    4040
    41 #define memory_barrier() asm volatile ("sync" ::: "memory")
    42 #define read_barrier() asm volatile ("sync" ::: "memory")
    43 #define write_barrier() asm volatile ("eieio" ::: "memory")
     41#define memory_barrier()  asm volatile ("sync" ::: "memory")
     42#define read_barrier()    asm volatile ("sync" ::: "memory")
     43#define write_barrier()   asm volatile ("eieio" ::: "memory")
     44
     45#define instruction_barrier() \
     46        asm volatile ( \
     47                "sync\n" \
     48                "isync\n" \
     49        )
     50
     51#define COHERENCE_INVAL_MIN  4
    4452
    4553/*
     
    5361{
    5462        asm volatile (
    55                 "dcbst 0, %0\n"
     63                "dcbst 0, %[addr]\n"
    5664                "sync\n"
    57                 "icbi 0, %0\n"
     65                "icbi 0, %[addr]\n"
    5866                "sync\n"
    5967                "isync\n"
    60                 :: "r" (addr)
     68                :: [addr] "r" (addr)
    6169        );
    6270}
    6371
    64 #define COHERENCE_INVAL_MIN     4
    65 
    66 static inline void smc_coherence_block(void *addr, unsigned long len)
     72static inline void smc_coherence_block(void *addr, unsigned int len)
    6773{
    68         unsigned long i;
    69 
    70         for (i = 0; i < len; i += COHERENCE_INVAL_MIN) {
    71                 asm volatile ("dcbst 0, %0\n" :: "r" (addr + i));
    72         }
    73 
    74         asm volatile ("sync");
    75 
    76         for (i = 0; i < len; i += COHERENCE_INVAL_MIN) {
    77                 asm volatile ("icbi 0, %0\n" :: "r" (addr + i));
    78         }
    79 
    80         asm volatile (
    81                 "sync\n"
    82                 "isync\n"
    83         );
     74        unsigned int i;
     75       
     76        for (i = 0; i < len; i += COHERENCE_INVAL_MIN)
     77                asm volatile (
     78                        "dcbst 0, %[addr]\n"
     79                        :: [addr] "r" (addr + i)
     80                );
     81       
     82        memory_barrier();
     83       
     84        for (i = 0; i < len; i += COHERENCE_INVAL_MIN)
     85                asm volatile (
     86                        "icbi 0, %[addr]\n"
     87                        :: [addr] "r" (addr + i)
     88                );
     89       
     90        instruction_barrier();
    8491}
    8592
Note: See TracChangeset for help on using the changeset viewer.