Date: Thu, 25 Feb 2010 07:21:27 -0800 From: Patrick Mahan <mahan@mahan.org> To: "C. Jayachandran" <c.jayachandran@gmail.com> Cc: freebsd-mips@freebsd.org Subject: Re: Writing MIPS assembler instructions in C Message-ID: <201002251525.o1PFPgOD028776@ns.mahan.org> In-Reply-To: <98a59be81002242231mc491517sa5d752cb870c1f9@mail.gmail.com> References: <17060.1267061906@mahan.org> <eaa228be1002241807q2613ccecy9773155e68ccda62@mail.gmail.com> <201002250236.o1P2a2oX024250@ns.mahan.org> <98a59be81002242126k5bbf5167p7cba4917c13d1256@mail.gmail.com> <19077.1267079184@mahan.org> <98a59be81002242231mc491517sa5d752cb870c1f9@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> On Thu, Feb 25, 2010 at 11:56 AM, Patrick Mahan <mahan@mahan.org> wrote: > > > >>> 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. Can 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? > >> > > > > This is the equivalent of "ld t0, 0(a0)", yes? > > Yes that should be equivalent, but assemblers don't know about 't0' only '$8' > > > No I tried that method as well, but without success. (or so it > > seemed to me). > > I was trying to see what the issue with this method is. Do you get a > compiler error, or is it incorrect code? Usually you can figure out > what is going wrong by looking at the objdump or the output of 'cc -S' > to see if the requested register was used. > No compiler error but the code does not seem to execute, and I am getting no 'illegal instruction' error. My concern is coming from the issue that using binutils built by the manufacturer of the chip (cavium) which only run on a linux platform, I tried to disassemble the .o containing the asm statement, but it does not decode to the expected instruction. So I am leary that I have correctly generated the asm (inline asm's not my strong suit...) Thanks, Patrick
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201002251525.o1PFPgOD028776>