diff options
Diffstat (limited to 'arch/powerpc/include/asm/exception-64s.h')
| -rw-r--r-- | arch/powerpc/include/asm/exception-64s.h | 16 | 
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h index 2e4e7d878c8e..84d49b197c32 100644 --- a/arch/powerpc/include/asm/exception-64s.h +++ b/arch/powerpc/include/asm/exception-64s.h @@ -93,6 +93,10 @@  	ld	reg,PACAKBASE(r13);	/* get high part of &label */	\  	ori	reg,reg,(FIXED_SYMBOL_ABS_ADDR(label))@l; +#define __LOAD_HANDLER(reg, label)					\ +	ld	reg,PACAKBASE(r13);					\ +	ori	reg,reg,(ABS_ADDR(label))@l; +  /* Exception register prefixes */  #define EXC_HV	H  #define EXC_STD @@ -208,6 +212,18 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)  #define kvmppc_interrupt kvmppc_interrupt_pr  #endif +#ifdef CONFIG_RELOCATABLE +#define BRANCH_TO_COMMON(reg, label)					\ +	__LOAD_HANDLER(reg, label);					\ +	mtctr	reg;							\ +	bctr + +#else +#define BRANCH_TO_COMMON(reg, label)					\ +	b	label + +#endif +  #define __KVM_HANDLER_PROLOG(area, n)					\  	BEGIN_FTR_SECTION_NESTED(947)					\  	ld	r10,area+EX_CFAR(r13);					\  |