[parisc-linux] input constraints in atomic.h too loose ?
Mike Frysinger
vapier at gentoo.org
Sat Feb 10 21:42:39 MST 2007
On Saturday 10 February 2007, John David Anglin wrote:
> > static void __lll_mutex_lock(int *futex)
> > {
> > int lws_errno > > int lws_ret;
> > asm (
> > "0: \n\t"
> > "copy %3, %%r26 \n\t"
> > "copy %4, %%r25 \n\t"
> > "copy %5, %%r24 \n\t"
> > "ble " "0xb0" "(%%sr2, %%r0) \n\t"
> > "ldi " "0" ", %%r20 \n\t"
> > "cmpib,=,n " "11" ",%%r21,0b \n\t"
> > "nop \n\t"
> > "stw %%r28, %0 \n\t"
> > "sub %%r0, %%r21, %%r21 \n\t"
> > "stw %%r21, %1 \n\t"
> >
> > : "=m" (lws_ret), "=m"(lws_errno), "=m"(*futex)
> > : "r"(futex), "r"(0), "r"(1)
> > :"r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31",
> > : "memory"
> >
> > );
> > }
>
> Aren't lws_errno and lws_ret supposed to be global? As is, they
> are just local variables and do nothing.
right, as they should be i think ... the sample here is reduced preprocessed
code so you lose the visibility that ___lll_mutex_lock() is really just an
expanded macro from the atomic.h header and you lose a lot of the actual code
(i removed the stuff that wasnt involved with the bad code generation)
lws_ret for sure should not be a local variable as that is the return value
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: not available
Url : http://lists.parisc-linux.org/pipermail/parisc-linux/attachments/20070210/4f8c33be/attachment-0002.pgp
More information about the parisc-linux
mailing list