On 22.06.2012, at 22:04, Stuart Yoder wrote: > From: Liu Yu-B13201 <Yu.Liu@xxxxxxxxxxxxx> > > Signed-off-by: Liu Yu <yu.liu@xxxxxxxxxxxxx> > [varun: 64-bit changes] > Signed-off-by: Varun Sethi <Varun.Sethi@xxxxxxxxxxxxx> > Signed-off-by: Stuart Yoder <stuart.yoder@xxxxxxxxxxxxx> > --- > -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" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html