29 May, 2009

2 commits

  • Add cmpxchg/cmpxchg64 support for ARMv6K and ARMv7 systems
    (original patch from Catalin Marinas )

    The cmpxchg and cmpxchg64 functions can be implemented using the
    LDREX*/STREX* instructions. Since operand lengths other than 32bit are
    required, the full implementations are only available if the ARMv6K
    extensions are present (for the LDREXB, LDREXH and LDREXD instructions).

    For ARMv6, only 32-bits cmpxchg is available.

    Mathieu :

    Make cmpxchg_local always available with best implementation for all type sizes (1, 2, 4 bytes).
    Make cmpxchg64_local always available.

    Use "Ir" constraint for "old" operand, like atomic.h atomic_cmpxchg does.

    Change since v3 :
    - Add "memory" clobbers (thanks to Nicolas Pitre)
    - removed __asmeq(), only needed for old compilers, very unlikely on ARMv6+.

    Note : ARMv7-M should eventually be ifdefed-out of cmpxchg64. But it's not
    supported by the Linux kernel currently.

    Put back arm < v6 cmpxchg support.

    Signed-off-by: Mathieu Desnoyers
    CC: Catalin Marinas
    CC: Nicolas Pitre
    Signed-off-by: Russell King

    Mathieu Desnoyers
     
  • Mathieu Desnoyers pointed out that the ARM barriers were lacking:

    - cmpxchg, xchg and atomic add return need memory barriers on
    architectures which can reorder the relative order in which memory
    read/writes can be seen between CPUs, which seems to include recent
    ARM architectures. Those barriers are currently missing on ARM.

    - test_and_xxx_bit were missing SMP barriers.

    So put these barriers in. Provide separate atomic_add/atomic_sub
    operations which do not require barriers.

    Reported-Reviewed-and-Acked-by: Mathieu Desnoyers
    Signed-off-by: Russell King

    Russell King
     

27 Mar, 2009

1 commit


25 Mar, 2009

1 commit

  • Adds support for Faraday FA526 core. This core is used at least by:
    Cortina Systems Gemini and Centroid family
    Cavium Networks ECONA family
    Grain Media GM8120
    Pixelplus ImageARM
    Prolific PL-1029
    Faraday IP evaluation boards

    v2:
    - move TLB_BTB to separate patch
    - update copyrights

    Signed-off-by: Paulius Zaleckas

    Paulius Zaleckas
     

20 Mar, 2009

1 commit

  • OMAP wishes to pass state to the boot loader upon reboot in order to
    instruct it whether to wait for USB-based reflashing or not. There is
    already a facility to do this via the reboot() syscall, except we ignore
    the string passed to machine_restart().

    This patch fixes things to pass this string to arch_reset(). This means
    that we keep the reboot mode limited to telling the kernel _how_ to
    perform the reboot which should be independent of what we request the
    boot loader to do.

    Acked-by: Tony Lindgren
    Signed-off-by: Russell King

    Russell King
     

29 Nov, 2008

1 commit


07 Nov, 2008

1 commit

  • As a result of the ptebits changes, we ended up marking device mappings
    as normal memory on ARMv7 CPUs, resulting in undesirable behaviour with
    serial ports and the like. While reviewing the section mapping table
    entries, other errors in the memory type settings for devices were
    detected and confirmed to prevent Xscale3 platforms booting.

    Tested on:
    OMAP34xx (ARMv7),
    OMAP24xx (ARMv6),
    OMAP16xx (ARM926T, ARMv5),
    PXA311 (Xscale3),
    PXA272 (Xscale),
    PXA255 (Xscale),
    IXP42x (Xscale),
    S3C2410 (ARM920T, ARMv4T),
    ARM720T (ARMv4T)
    StrongARM-110 (ARMv4)

    Acked-by: Tony Lindgren
    Tested-by: Robert Jarzmik
    Tested-by: Mike Rapoport
    Tested-by: Ben Dooks
    Tested-by: Anders Grafström
    Signed-off-by: Russell King

    Russell King
     

01 Sep, 2008

1 commit


03 Aug, 2008

1 commit