diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-09-25 14:34:24 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-09-28 13:56:57 +0200 |
commit | 258ad71e9626c16f30b40e06c321326636c976ff (patch) | |
tree | da6e210947d590159796434bf04cf364247ac20a /c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h | |
parent | SMP: Simplify thread lock operations (diff) | |
download | rtems-258ad71e9626c16f30b40e06c321326636c976ff.tar.bz2 |
SMP: Fix and optimize thread dispatching
According to the C11 and C++11 memory models only a read-modify-write
operation guarantees that we read the last value written in modification
order. Avoid the sequential consistent thread fence and instead use the
inter-processor interrupt to set the thread dispatch necessary
indicator.
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h b/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h index 331aa58057..b8dc5f40ce 100644 --- a/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h +++ b/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h @@ -8,7 +8,7 @@ */ /* - * Copyright (c) 2008-2014 embedded brains GmbH. + * Copyright (c) 2008-2015 embedded brains GmbH. * * embedded brains GmbH * Dornierstr. 4 @@ -206,6 +206,13 @@ static inline void ppc_synchronize_data(void) __asm__ volatile ("sync"); } +static inline void ppc_light_weight_synchronize(void) +{ + RTEMS_COMPILER_MEMORY_BARRIER(); + + __asm__ volatile ("lwsync"); +} + static inline void ppc_synchronize_instructions(void) { RTEMS_COMPILER_MEMORY_BARRIER(); |