aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/lib/call_with_stack.S
AgeCommit message (Collapse)AuthorFilesLines
2019-06-05treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333Thomas Gleixner1-13/+1
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license version 2 as published by the free software foundation this program is distributed in the hope that it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details you should have received a copy of the gnu general public license along with this program if not write to the free software foundation inc 59 temple place suite 330 boston ma 02111 1307 usa extracted by the scancode license scanner the SPDX license identifier GPL-2.0-only has been chosen to replace the boilerplate/reference in 136 file(s). Signed-off-by: Thomas Gleixner <[email protected]> Reviewed-by: Alexios Zavras <[email protected]> Reviewed-by: Allison Randal <[email protected]> Cc: [email protected] Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
2015-05-08ARM: replace BSYM() with badr assembly macroRussell King1-1/+1
BSYM() was invented to allow us to work around a problem with the assembler, where local symbols resolved by the assembler for the 'adr' instruction did not take account of their ISA. Since we don't want BSYM() used elsewhere, replace BSYM() with a new macro 'badr', which is like the 'adr' pseudo-op, but with the BSYM() mechanics integrated into it. This ensures that the BSYM()-ification is only used in conjunction with 'adr'. Acked-by: Dave Martin <[email protected]> Acked-by: Nicolas Pitre <[email protected]> Signed-off-by: Russell King <[email protected]>
2014-07-18ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+Russell King1-2/+2
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: Will Deacon <[email protected]> Tested-by: Stephen Warren <[email protected]> # Tegra Jetson TK1 Tested-by: Robert Jarzmik <[email protected]> # mioa701_bootresume.S Tested-by: Andrew Lunn <[email protected]> # Kirkwood Tested-by: Shawn Guo <[email protected]> Tested-by: Tony Lindgren <[email protected]> # OMAPs Tested-by: Gregory CLEMENT <[email protected]> # Armada XP, 375, 385 Acked-by: Sekhar Nori <[email protected]> # DaVinci Acked-by: Christoffer Dall <[email protected]> # kvm/hyp Acked-by: Haojian Zhuang <[email protected]> # PXA3xx Acked-by: Stefano Stabellini <[email protected]> # Xen Tested-by: Uwe Kleine-König <[email protected]> # ARMv7M Tested-by: Simon Horman <[email protected]> # Shmobile Signed-off-by: Russell King <[email protected]>
2011-12-12ARM: lib: add call_with_stack function for safely changing stackWill Deacon1-0/+44
When disabling the MMU, it is necessary to take out a 1:1 identity map of the reset code so that it can safely be executed with and without the MMU active. To avoid the situation where the physical address of the reset code aliases with the virtual address of the active stack (which cannot be included in the 1:1 mapping), it is desirable to change to a new stack at a location which is less likely to alias. This code adds a new lib function, call_with_stack: void call_with_stack(void (*fn)(void *), void *arg, void *sp); which changes the stack to point at the sp parameter, before invoking fn(arg) with the new stack selected. Reviewed-by: Nicolas Pitre <[email protected]> Reviewed-by: Catalin Marinas <[email protected]> Signed-off-by: Dave Martin <[email protected]> Signed-off-by: Will Deacon <[email protected]>