diff options
Diffstat (limited to 'arch/arm/include/asm/assembler.h')
| -rw-r--r-- | arch/arm/include/asm/assembler.h | 17 | 
1 files changed, 16 insertions, 1 deletions
| diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index 186270b3e194..4abe57279c66 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h @@ -178,6 +178,21 @@  	.endm  /* + * Assembly version of "adr rd, BSYM(sym)".  This should only be used to + * reference local symbols in the same assembly file which are to be + * resolved by the assembler.  Other usage is undefined. + */ +	.irp	c,,eq,ne,cs,cc,mi,pl,vs,vc,hi,ls,ge,lt,gt,le,hs,lo +	.macro	badr\c, rd, sym +#ifdef CONFIG_THUMB2_KERNEL +	adr\c	\rd, \sym + 1 +#else +	adr\c	\rd, \sym +#endif +	.endm +	.endr + +/*   * Get current thread_info.   */  	.macro	get_thread_info, rd @@ -326,7 +341,7 @@  THUMB(	orr	\reg , \reg , #PSR_T_BIT	)  	bne	1f  	orr	\reg, \reg, #PSR_A_BIT -	adr	lr, BSYM(2f) +	badr	lr, 2f  	msr	spsr_cxsf, \reg  	__MSR_ELR_HYP(14)  	__ERET |