On 22.06.2012, at 22:04, Stuart Yoder wrote:

> From: Liu Yu-B13201 <yu....@freescale.com>
> 
> Signed-off-by: Liu Yu <yu....@freescale.com>
> [varun: 64-bit changes]
> Signed-off-by: Varun Sethi <varun.se...@freescale.com>
> Signed-off-by: Stuart Yoder <stuart.yo...@freescale.com>
> ---
> -v11:
>   -added comment about origin of idle instruction sequence
>   -update for 64-bit support found in testing
> 
> arch/powerpc/include/asm/epapr_hcalls.h |   11 +++++----
> arch/powerpc/kernel/epapr_hcalls.S      |   32 +++++++++++++++++++++++++++++++
> arch/powerpc/kernel/epapr_paravirt.c    |   11 +++++++++-
> 3 files changed, 48 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/epapr_hcalls.h 
> b/arch/powerpc/include/asm/epapr_hcalls.h
> index c0c7adc..833ce2c 100644
> --- a/arch/powerpc/include/asm/epapr_hcalls.h
> +++ b/arch/powerpc/include/asm/epapr_hcalls.h
> @@ -50,10 +50,6 @@
> #ifndef _EPAPR_HCALLS_H
> #define _EPAPR_HCALLS_H
> 
> -#include <linux/types.h>
> -#include <linux/errno.h>
> -#include <asm/byteorder.h>
> -
> #define EV_BYTE_CHANNEL_SEND          1
> #define EV_BYTE_CHANNEL_RECEIVE               2
> #define EV_BYTE_CHANNEL_POLL          3
> @@ -109,6 +105,11 @@
> #define EV_UNIMPLEMENTED      12      /* Unimplemented hypercall */
> #define EV_BUFFER_OVERFLOW    13      /* Caller-supplied buffer too small */
> 
> +#ifndef __ASSEMBLY__
> +#include <linux/types.h>
> +#include <linux/errno.h>
> +#include <asm/byteorder.h>
> +
> /*
>  * Hypercall register clobber list
>  *
> @@ -506,5 +507,5 @@ static inline unsigned int ev_idle(void)
> 
>       return r3;
> }
> -
> +#endif /* !__ASSEMBLY__ */
> #endif
> diff --git a/arch/powerpc/kernel/epapr_hcalls.S 
> b/arch/powerpc/kernel/epapr_hcalls.S
> index 697b390..eb19377 100644
> --- a/arch/powerpc/kernel/epapr_hcalls.S
> +++ b/arch/powerpc/kernel/epapr_hcalls.S
> @@ -8,13 +8,45 @@
>  */
> 
> #include <linux/threads.h>
> +#include <asm/epapr_hcalls.h>
> #include <asm/reg.h>
> #include <asm/page.h>
> #include <asm/cputable.h>
> #include <asm/thread_info.h>
> #include <asm/ppc_asm.h>
> +#include <asm/asm-compat.h>
> #include <asm/asm-offsets.h>
> 
> +/* epapr_ev_idle() was derived from e500_idle() */
> +_GLOBAL(epapr_ev_idle)
> +#ifndef CONFIG_PPC64
> +     rlwinm  r3, r1, 0, 0, 31-THREAD_SHIFT   /* current thread_info */
> +#else
> +     clrrdi  r3, r1, THREAD_SHIFT
> +#endif

Ben, would you be opposed to a macro that does this? Open-coding subtile 
details like this always makes me wary we could screw them up :)


Alex

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

Reply via email to