1. 18 7月, 2014 1 次提交
    • R
      ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ · 6ebbf2ce
      Russell King 提交于
      ARMv6 and greater introduced a new instruction ("bx") which can be used
      to return from function calls.  Recent CPUs perform better when the
      "bx lr" instruction is used rather than the "mov pc, lr" instruction,
      and this sequence is strongly recommended to be used by the ARM
      architecture manual (section A.4.1.1).
      
      We provide a new macro "ret" with all its variants for the condition
      code which will resolve to the appropriate instruction.
      
      Rather than doing this piecemeal, and miss some instances, change all
      the "mov pc" instances to use the new macro, with the exception of
      the "movs" instruction and the kprobes code.  This allows us to detect
      the "mov pc, lr" case and fix it up - and also gives us the possibility
      of deploying this for other registers depending on the CPU selection.
      Reported-by: NWill Deacon <will.deacon@arm.com>
      Tested-by: Stephen Warren <swarren@nvidia.com> # Tegra Jetson TK1
      Tested-by: Robert Jarzmik <robert.jarzmik@free.fr> # mioa701_bootresume.S
      Tested-by: Andrew Lunn <andrew@lunn.ch> # Kirkwood
      Tested-by: NShawn Guo <shawn.guo@freescale.com>
      Tested-by: Tony Lindgren <tony@atomide.com> # OMAPs
      Tested-by: Gregory CLEMENT <gregory.clement@free-electrons.com> # Armada XP, 375, 385
      Acked-by: Sekhar Nori <nsekhar@ti.com> # DaVinci
      Acked-by: Christoffer Dall <christoffer.dall@linaro.org> # kvm/hyp
      Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com> # PXA3xx
      Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> # Xen
      Tested-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> # ARMv7M
      Tested-by: Simon Horman <horms+renesas@verge.net.au> # Shmobile
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      6ebbf2ce
  2. 14 10月, 2011 1 次提交
  3. 07 9月, 2011 1 次提交
    • L
      ARM: davinci: fix cache flush build error · 897a6a1a
      Linus Walleij 提交于
      The TNET variant of DaVinci compiles some code that it shares
      with other DaVinci variants, however it has a V6 CPU rather than
      an ARM926T, thus the hardcoded call to arm926_flush_kern_cache_all()
      in sleep.S will obviously fail, and we need to build with the
      v6_flush_kern_cache_all() call instead. This was triggered by
      manually altering the DaVinci config to build the TNET version.
      
      Cc: Dave Martin <dave.martin@linaro.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: NSekhar Nori <nsekhar@ti.com>
      Cc: stable@kernel.org
      897a6a1a
  4. 05 2月, 2010 1 次提交
    • S
      davinci: add power management support · efc1bb8a
      Sekhar Nori 提交于
      This patch adds core power management (suspend-to-RAM)
      support for DaVinci SoCs.
      
      The code depends on the the "deepsleep" feature to suspend
      the SoC and saves power by gating the input clock.
      
      The wakeup can be based on an external event as supported
      by the SoC.
      
      Assembly code (in sleep.S) is added to aid gating DDR2
      clocks. Code doing this work should not be accessing DDR2.
      The assembly code is relocated to SRAM by the code in pm.c
      
      The support has been validated on DA850/OMAP-L138 only
      though the code is (hopefully) generic enough that other
      SoCs supporting deepsleep feature simply requires SoC
      specific code to start using this driver.
      
      Note that all the device drivers don't support suspend/resume
      still and are being worked on.
      Signed-off-by: NSekhar Nori <nsekhar@ti.com>
      Signed-off-by: NKevin Hilman <khilman@deeprootsystems.com>
      efc1bb8a