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>