• Russell King's avatar
    ARM: domains: add memory dependencies to get_domain/set_domain · 6e8f580d
    Russell King authored
    We need to have memory dependencies on get_domain/set_domain to avoid
    the compiler over-optimising these inline assembly instructions.
    
    Loads/stores must not be reordered across a set_domain(), so introduce
    a compiler barrier for that assembly.
    
    The value of get_domain() must not be cached across a set_domain(), but
    we still want to allow the compiler to optimise it away.  Introduce a
    dependency on current_thread_info()->cpu_domain to avoid this; the new
    memory clobber in set_domain() should therefore cause the compiler to
    re-load this.  The other advantage of using this is we should have its
    address in the register set already, or very soon after at most call
    sites.
    Tested-by: default avatarRobert Jarzmik <robert.jarzmik@free.fr>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    6e8f580d
domain.h 3.51 KB