[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