Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Feb 2010 10:56:47 +0530
From:      "C. Jayachandran" <c.jayachandran@gmail.com>
To:        Patrick Mahan <mahan@mahan.org>
Cc:        freebsd-mips@freebsd.org
Subject:   Re: Writing MIPS assembler instructions in C
Message-ID:  <98a59be81002242126k5bbf5167p7cba4917c13d1256@mail.gmail.com>
In-Reply-To: <201002250236.o1P2a2oX024250@ns.mahan.org>
References:  <17060.1267061906@mahan.org> <eaa228be1002241807q2613ccecy9773155e68ccda62@mail.gmail.com> <201002250236.o1P2a2oX024250@ns.mahan.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Feb 25, 2010 at 8:01 AM, Patrick Mahan <mahan@mahan.org> wrote:
>
> > %[foo] can be used to refer to named parameters (input or output,
> > maybe even clobbered) of inline assembly instructions rather than
> > using %0, %1, etc., which can be hard to read. =A0Consider:
> >
> > The brackets with the input and output parameters specify what names
> > to use to refer to them in the assembly listing (here they happen to
> > be mostly the same as the variable names, but that's not necessary.)
> >
>
> Ah Sooo <*whack!*>......
>
> I did not even twig on that... I had gotten it in my head that %[rt]
> was something special to the compiler that caused a certain behavior
> to occur.
>
> Now my problem is I still need to force the value pointed to "addr" into
> a specific register because there is a jalr to a function else where
> that I only have binary access too and it expects it's a value in
> that register. =A0Can I coerce this?

I may be missing something here,  but have you tried :

__asm__ __volatile__(
           "ld     $8, 0(%0)\n\t"
           "jalr   $8\n"
           : : "r"(addr) : "$8");
}

Or is there a reason this will not work?

JC.

JC



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?98a59be81002242126k5bbf5167p7cba4917c13d1256>