|
From: Isaku Y. <yam...@va...> - 2008-03-05 02:28:15
|
On Wed, Mar 05, 2008 at 08:16:36AM +0800, Dong, Eddie wrote:
> Remove rest mailinglist since it is an implementation detail
> argument that may confuse more people.
kvm-ia64-devel-request seems to be accidentaly added. I dropped it.
> > In fact specifying "out0", "out1", ... as clobbered registers
> > in inline assembler code, gcc allocates them. and we can
> > clobber those registers.
> >
> > However we can't clobber stacked registers out of specified ones
> > so that its conversion differs from C function calling one.
> > For example
> > func()
> > // out0 and out1 are allocated.
> > paravirt_get_cpuid(index);
> > // asm volatile ("..."
>
> We can add "mov out0=out0" here,
> I saw it works using a simple code for reference.
>
>
> Or we can use following code more effectively:
>
> .pushsection .parasections;\t .long ...; mov out0=out0;; .long
> ...;\t.popsection
Great. Clever idea.
> It seems there is a bug in AS binutil.
That's bad. How about inserting dummy labels before .pushsection and
after .popsection? Or make the dummy instruction explicitly occupy
full one bundle like { mov out0=out0;;nop;nop; }.
Does it make difference?
--
yamahata
|