diff options
| author | Catalin Marinas <catalin.marinas@arm.com> | 2014-04-02 13:57:49 +0400 | 
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2014-04-09 16:08:08 +0400 | 
| commit | 0b1f68e836bcf1ca2861f95066985c57ecfb2f1a (patch) | |
| tree | 2cc6151c12ad8629834eefa35fc1f68442a16f73 /arch/arm/include/asm/assembler.h | |
| parent | 39ad04ccd6e1b235601e9ac5a7f508d05728a97a (diff) | |
| download | linux-0b1f68e836bcf1ca2861f95066985c57ecfb2f1a.tar.xz | |
ARM: 8018/1: Add {inc,dec}_preempt_count asm macros
The patch adds asm macros for inc_preempt_count and dec_preempt_count_ti
(which also gets the current thread_info) instead of open-coding them in
arch/arm/vfp/*.S files.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Tested-by: Arun KS <getarunks@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/include/asm/assembler.h')
| -rw-r--r-- | arch/arm/include/asm/assembler.h | 32 | 
1 files changed, 32 insertions, 0 deletions
diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index 9a4965ad6867..b974184f9941 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h @@ -23,6 +23,7 @@  #include <asm/ptrace.h>  #include <asm/domain.h>  #include <asm/opcodes-virt.h> +#include <asm/asm-offsets.h>  #define IOMEM(x)	(x) @@ -184,6 +185,37 @@  	mov	\rd, \rd, lsl #13  	.endm +/* + * Increment/decrement the preempt count. + */ +#ifdef CONFIG_PREEMPT_COUNT +	.macro	inc_preempt_count, ti, tmp +	ldr	\tmp, [\ti, #TI_PREEMPT]	@ get preempt count +	add	\tmp, \tmp, #1			@ increment it +	str	\tmp, [\ti, #TI_PREEMPT] +	.endm + +	.macro	dec_preempt_count, ti, tmp +	ldr	\tmp, [\ti, #TI_PREEMPT]	@ get preempt count +	sub	\tmp, \tmp, #1			@ decrement it +	str	\tmp, [\ti, #TI_PREEMPT] +	.endm + +	.macro	dec_preempt_count_ti, ti, tmp +	get_thread_info \ti +	dec_preempt_count \ti, \tmp +	.endm +#else +	.macro	inc_preempt_count, ti, tmp +	.endm + +	.macro	dec_preempt_count, ti, tmp +	.endm + +	.macro	dec_preempt_count_ti, ti, tmp +	.endm +#endif +  #define USER(x...)				\  9999:	x;					\  	.pushsection __ex_table,"a";		\  | 
