Changeset 7328ff4 in mainline for kernel/arch/ppc32/src/smc.c


Ignore:
Timestamp:
2018-09-06T18:18:52Z (6 years ago)
Author:
Jiří Zárevúcky <jiri.zarevucky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ffa73c6
Parents:
d51cca8
git-author:
Jiří Zárevúcky <jiri.zarevucky@…> (2018-08-13 01:29:17)
git-committer:
Jiří Zárevúcky <jiri.zarevucky@…> (2018-09-06 18:18:52)
Message:

Use builtin memory fences for kernel barriers, and convert smp_coherence() into a regular function

File:
1 moved

Legend:

Unmodified
Added
Removed
  • kernel/arch/ppc32/src/smc.c

    rd51cca8 r7328ff4  
    2727 */
    2828
    29 /** @addtogroup ppc32
    30  * @{
    31  */
    32 /** @file
    33  */
    3429
    35 #ifndef KERN_ppc32_BARRIER_H_
    36 #define KERN_ppc32_BARRIER_H_
    37 
    38 #include <trace.h>
    39 
    40 #define CS_ENTER_BARRIER()  asm volatile ("" ::: "memory")
    41 #define CS_LEAVE_BARRIER()  asm volatile ("" ::: "memory")
    42 
    43 #define memory_barrier()  asm volatile ("sync" ::: "memory")
    44 #define read_barrier()    asm volatile ("sync" ::: "memory")
    45 #define write_barrier()   asm volatile ("eieio" ::: "memory")
    46 
    47 #define instruction_barrier() \
    48         asm volatile ( \
    49                 "sync\n" \
    50                 "isync\n" \
    51         )
    52 
    53 #ifdef KERNEL
     30#include <barrier.h>
    5431
    5532#define COHERENCE_INVAL_MIN  4
     
    6239 */
    6340
    64 NO_TRACE static inline void smc_coherence(void *addr, unsigned int len)
     41void smc_coherence(void *addr, size_t len)
    6542{
    6643        unsigned int i;
     
    7249                );
    7350
    74         memory_barrier();
     51        asm volatile ("sync" ::: "memory");
    7552
    7653        for (i = 0; i < len; i += COHERENCE_INVAL_MIN)
     
    8057                );
    8158
    82         instruction_barrier();
     59        asm volatile ("sync" ::: "memory");
     60        asm volatile ("isync" ::: "memory");
    8361}
    8462
    85 #endif  /* KERNEL */
    86 
    87 #endif
    88 
    89 /** @}
    90  */
Note: See TracChangeset for help on using the changeset viewer.