Date: Sat, 13 Jun 2009 13:10:25 -0500 From: Alan Cox <alc@cs.rice.edu> To: Ed Schouten <ed@FreeBSD.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r194110 - head/sys/i386/include Message-ID: <4A33EB91.2000605@cs.rice.edu> In-Reply-To: <200906131356.n5DDu6bT015673@svn.freebsd.org> References: <200906131356.n5DDu6bT015673@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Ed Schouten wrote: > Author: ed > Date: Sat Jun 13 13:56:06 2009 > New Revision: 194110 > URL: http://svn.freebsd.org/changeset/base/194110 > > Log: > Simplify the inline assembler (and correct potential error) of pte_load_store(). > > Submitted by: Christoph Mallon > > Modified: > head/sys/i386/include/pmap.h > > Modified: head/sys/i386/include/pmap.h > ============================================================================== > --- head/sys/i386/include/pmap.h Sat Jun 13 13:54:03 2009 (r194109) > +++ head/sys/i386/include/pmap.h Sat Jun 13 13:56:06 2009 (r194110) > @@ -362,15 +362,8 @@ pte_load(pt_entry_t *ptep) > static __inline pt_entry_t > pte_load_store(pt_entry_t *ptep, pt_entry_t pte) > { > - pt_entry_t r; > - > - __asm __volatile( > - "xchgl %0,%1" > - : "=m" (*ptep), > - "=r" (r) > - : "1" (pte), > - "m" (*ptep)); > - return (r); > + __asm volatile("xchgl %0, %1" : "+m" (*ptep), "+r" (pte)); > + return (pte); > } > > #define pte_load_clear(pte) atomic_readandclear_int(pte) > I'm afraid that this change violates the rules, specifically, "+" cannot be combined with "m": File: gcc.info, Node: Extended Asm, Next: Constraints, Prev: Inline, Up: C Extensions 5.35 Assembler Instructions with C Expression Operands ====================================================== ... Extended asm supports input-output or read-write operands. Use the constraint character `+' to indicate such an operand and list it with the output operands. You should only use read-write operands when the constraints for the operand (or the operand in which only some of the bits are to be changed) allow a register.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4A33EB91.2000605>