genode/repos/base
Martin Stein ec6c19a487 base: memory barriers in lock implementations
The memory barrier prevents the compiler from changing the program order
of memory accesses in such a way that accesses to the guarded resource
get outside the guarded stage. As cmpxchg() defines the start of the
guarded stage it also represents an effective memory barrier.

On x86, the architecture ensures to not reorder writes with older reads,
writes to memory with other writes (except in cases that are not
relevant for our locks), or read/write instructions with I/O
instructions, locked instructions, and serializing instructions.

However on ARM, the architectural memory model allows not only that
memory accesses take local effect in another order as their program
order but also that different observers (components that can access
memory like data-busses, TLBs and branch predictors) observe these
effects each in another order. Thus, a correct program order isn't
sufficient for a correct observation order. An additional architectural
preservation of the memory barrier is needed to achieve this.

Fixes #692
2014-11-28 12:02:34 +01:00
..
etc Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
include base: memory barriers in lock implementations 2014-11-28 12:02:34 +01:00
lib base: Genode's dynamic linker 2014-11-12 14:44:15 +01:00
mk base: memory barriers in lock implementations 2014-11-28 12:02:34 +01:00
run Log name of exiting child from Child::exit() 2014-09-11 10:23:39 +02:00
src base: memory barriers in lock implementations 2014-11-28 12:02:34 +01:00
README Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00

This is generic part of the Genode implementation. It consists of two parts:

:_Core_: is the ultimate root of the Genode application tree
  and provides abstractions for the lowest-level hardware resources
  such as RAM, ROM, CPU, and generic device access. All generic parts of Core
  can be found here - for system-specific implementations refer to the
  appropriate 'base-<system>' directory.

:_Base libraries and protocols_: that are used by each Genode component
  to interact with other components. This is the glue that holds everything
  together.