• Nicolas Pitre's avatar
    [ARM] 5196/1: fix inline asm constraints for preload · 16f719de
    Nicolas Pitre authored
    With gcc 4.3 and later, a pointer that has already been dereferenced is
    assumed not to be null since it should have caused a segmentation fault
    otherwise, hence any subsequent test against NULL is optimized away.
    
    Current inline asm constraint used in the implementation of prefetch()
    makes gcc believe that the pointer is dereferenced even though the PLD
    instruction does not load any data and does not cause a segmentation
    fault on null pointers, which causes all sorts of interesting results
    when reaching the end of a linked lists for example.
    
    Let's use a better constraint to properly represent the actual usage of
    the pointer value.
    
    Problem reported by Chris Steel.
    Signed-off-by: default avatarNicolas Pitre <nico@marvell.com>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    16f719de
processor.h 2.9 KB