[Top] [All Lists]

Re: question about memory constraint in atomic_add

To: Indigodfw <>
Subject: Re: question about memory constraint in atomic_add
From: Ralf Baechle <>
Date: Wed, 18 Feb 2004 14:45:01 +0100
In-reply-to: <>
Original-recipient: rfc822;
References: <>
User-agent: Mutt/1.4.1i
On Sat, Feb 14, 2004 at 07:11:52AM -0800, Indigodfw wrote:

> 2. Result of (C expression) should go into %xyz
> register 
> So v->counter goes into %1, IOW ll from an int!
> Does not make sense to me.
> Why does it work, What am I missing?

> I mean in general what is the expression for a m
> constraint ptr (because I want ptr to be in regiser)
> or *ptr (because I wanna tell compiler that *ptr is
> what gets changed) 

"m" gives you *something* suitable to address a memory object; that isn't
necessarily a memory address.  On MIPS it can't even be just an address
in a register because "m" constraints are used with loads and stores and
those only accept the offset(reg) addressing mode.  If you want an address
use something like "r" (&v->counter), then lw reg,(%xxx).


<Prev in Thread] Current Thread [Next in Thread>