Date: Sat, 30 Mar 2019 17:50:35 +0000 From: John F Carr <jfc@mit.edu> To: bob prohaska <fbsd@www.zefox.net> Cc: "freebsd-ports@freebsd.org" <freebsd-ports@freebsd.org>, "freebsd-arm@freebsd.org" <freebsd-arm@freebsd.org> Subject: Re: RPI3, error: invalid operand in inline asm: 'rev16 ${0:w}, ${1:w}' Message-ID: <236A3D25-0B4D-46DA-95BA-71DA505CC2E0@exchange.mit.edu> In-Reply-To: <20190330152327.GA11933@www.zefox.net> References: <20190330152327.GA11933@www.zefox.net>
next in thread | previous in thread | raw e-mail | index | archive | help
> On Mar 30, 2019, at 11:23 , bob prohaska <fbsd@www.zefox.net> wrote: >=20 > In a recent attempt to compile www/chromium on an RPI3 running r345516 > compilation stopped with repeated reports of=20 >=20 > /usr/include/machine/endian.h:89:19: error: invalid operand in inline asm= : 'rev16 ${0:w}, ${1:w}' >=20 > Chromium compiled on the same host a couple of months ago, but the=20 > executable failed on a runtime library error. Now attempts to upgrade > stop during compilation. Ports are presently at revision 496949. >=20 > Thanks for reading, and any guidance. >=20 > bob prohaska The swap function at that line in sys/arm64/include/endian.h doesn't look r= ight to me. I think it should read __asm("rev16 %w0, %w1\n" : "=3Dr" (ret) : "r" (w)); instead of __asm __volatile("rev16 %w0, %w1\n" : "=3D&r" (ret), "+r" (v)); Two changes: (1) it doesn't need to be volatile because it has no side effe= cts and (2) the constraints and lack of explicit input operand are wrong. = The other swap functions should have similar changes.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?236A3D25-0B4D-46DA-95BA-71DA505CC2E0>