Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f3d8e69 authored by Michael Neuling's avatar Michael Neuling Committed by Paul Mackerras
Browse files

powerpc: Make load_up_fpu and load_up_altivec callable



Make load_up_fpu and load_up_altivec callable so they can be reused by
the VSX code.

Signed-off-by: default avatarMichael Neuling <mikey@neuling.org>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 10e34392
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -85,7 +85,7 @@ _GLOBAL(load_up_fpu)
#endif /* CONFIG_SMP */
#endif /* CONFIG_SMP */
	/* restore registers and return */
	/* restore registers and return */
	/* we haven't used ctr or xer or lr */
	/* we haven't used ctr or xer or lr */
	b	fast_exception_return
	blr


/*
/*
 * giveup_fpu(tsk)
 * giveup_fpu(tsk)
+4 −2
Original line number Original line Diff line number Diff line
@@ -421,8 +421,10 @@ BEGIN_FTR_SECTION
	b 	ProgramCheck
	b 	ProgramCheck
END_FTR_SECTION_IFSET(CPU_FTR_FPU_UNAVAILABLE)
END_FTR_SECTION_IFSET(CPU_FTR_FPU_UNAVAILABLE)
	EXCEPTION_PROLOG
	EXCEPTION_PROLOG
	bne	load_up_fpu		/* if from user, just load it up */
	beq	1f
	addi	r3,r1,STACK_FRAME_OVERHEAD
	bl	load_up_fpu		/* if from user, just load it up */
	b	fast_exception_return
1:	addi	r3,r1,STACK_FRAME_OVERHEAD
	EXC_XFER_EE_LITE(0x800, kernel_fp_unavailable_exception)
	EXC_XFER_EE_LITE(0x800, kernel_fp_unavailable_exception)


/* Decrementer */
/* Decrementer */
+7 −3
Original line number Original line Diff line number Diff line
@@ -741,7 +741,8 @@ fp_unavailable_common:
	ENABLE_INTS
	ENABLE_INTS
	bl	.kernel_fp_unavailable_exception
	bl	.kernel_fp_unavailable_exception
	BUG_OPCODE
	BUG_OPCODE
1:	b	.load_up_fpu
1:	bl	.load_up_fpu
	b	fast_exception_return


	.align	7
	.align	7
	.globl altivec_unavailable_common
	.globl altivec_unavailable_common
@@ -749,7 +750,10 @@ altivec_unavailable_common:
	EXCEPTION_PROLOG_COMMON(0xf20, PACA_EXGEN)
	EXCEPTION_PROLOG_COMMON(0xf20, PACA_EXGEN)
#ifdef CONFIG_ALTIVEC
#ifdef CONFIG_ALTIVEC
BEGIN_FTR_SECTION
BEGIN_FTR_SECTION
	bne	.load_up_altivec	/* if from user, just load it up */
	beq	1f
	bl	.load_up_altivec
	b	fast_exception_return
1:
END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
#endif
#endif
	bl	.save_nvgprs
	bl	.save_nvgprs
@@ -829,7 +833,7 @@ _STATIC(load_up_altivec)
	std	r4,0(r3)
	std	r4,0(r3)
#endif /* CONFIG_SMP */
#endif /* CONFIG_SMP */
	/* restore registers and return */
	/* restore registers and return */
	b	fast_exception_return
	blr
#endif /* CONFIG_ALTIVEC */
#endif /* CONFIG_ALTIVEC */


/*
/*
+4 −2
Original line number Original line Diff line number Diff line
@@ -376,8 +376,10 @@ label:
#define FP_UNAVAILABLE_EXCEPTION					      \
#define FP_UNAVAILABLE_EXCEPTION					      \
	START_EXCEPTION(FloatingPointUnavailable)			      \
	START_EXCEPTION(FloatingPointUnavailable)			      \
	NORMAL_EXCEPTION_PROLOG;					      \
	NORMAL_EXCEPTION_PROLOG;					      \
	bne	load_up_fpu;		/* if from user, just load it up */   \
	beq	1f;							      \
	addi	r3,r1,STACK_FRAME_OVERHEAD;				      \
	bl	load_up_fpu;		/* if from user, just load it up */   \
	b	fast_exception_return;					      \
1:	addi	r3,r1,STACK_FRAME_OVERHEAD;				      \
	EXC_XFER_EE_LITE(0x800, kernel_fp_unavailable_exception)
	EXC_XFER_EE_LITE(0x800, kernel_fp_unavailable_exception)


#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__