Re: [RFC PATCH 10/17] PowerPC: booke64: Refactor exception prolog for save/restore regs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2012-06-25 at 15:26 +0300, Mihai Caraman wrote:
> Refactor exception prolog to allow save/restore register parameters. Add
> addition none definition for exception prolog usage.
> This is needed for exceptions like Guest Doorbell that use GSRRx regsiters
> which do not map on exception type.
> 
> Signed-off-by: Mihai Caraman <mihai.caraman@xxxxxxxxxxxxx>
> ---
>  arch/powerpc/kernel/exceptions-64e.S |   23 ++++++++---------------
>  1 files changed, 8 insertions(+), 15 deletions(-)
> 
> diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S
> index 7215cc2..52aa96b 100644
> --- a/arch/powerpc/kernel/exceptions-64e.S
> +++ b/arch/powerpc/kernel/exceptions-64e.S
> @@ -35,7 +35,7 @@
>  #define	SPECIAL_EXC_FRAME_SIZE	INT_FRAME_SIZE
>  
>  /* Exception prolog code for all exceptions */
> -#define EXCEPTION_PROLOG(n, type, addition)				    \
> +#define EXCEPTION_PROLOG(n, type, srr0, srr1, addition)		     	    \
>  	mtspr	SPRN_SPRG_##type##_SCRATCH,r13;	/* get spare registers */   \
>  	mfspr	r13,SPRN_SPRG_PACA;	/* get PACA */			    \
>  	std	r10,PACA_EX##type+EX_R10(r13);				    \
> @@ -44,54 +44,47 @@
>  	addition;			/* additional code for that exc. */ \
>  	std	r1,PACA_EX##type+EX_R1(r13); /* save old r1 in the PACA */  \
>  	stw	r10,PACA_EX##type+EX_CR(r13); /* save old CR in the PACA */ \
> -	mfspr	r11,SPRN_##type##_SRR1;/* what are we coming from */	    \
> +	mfspr	r11,srr1;/* what are we coming from */	    		    \
>  	type##_SET_KSTACK;		/* get special stack if necessary */\
>  	andi.	r10,r11,MSR_PR;		/* save stack pointer */	    \
>  	beq	1f;			/* branch around if supervisor */   \
>  	ld	r1,PACAKSAVE(r13);	/* get kernel stack coming from usr */\
>  1:	cmpdi	cr1,r1,0;		/* check if SP makes sense */	    \
>  	bge-	cr1,exc_##n##_bad_stack;/* bad stack (TODO: out of line) */ \
> -	mfspr	r10,SPRN_##type##_SRR0;	/* read SRR0 before touching stack */
> +	mfspr	r10,srr0;		/* read SRR0 before touching stack */

No, use the existing macro, use a ##type## specific to guest doorbells,
with appropriate definitions of the corresponding SPRN_ macros.

Cheers,
Ben.


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux