RPI3, error: invalid operand in inline asm: 'rev16 ${0:w}, ${1:w}'
John F Carr
jfc at mit.edu
Sat Mar 30 17:54:12 UTC 2019
> On Mar 30, 2019, at 11:23 , bob prohaska <fbsd at www.zefox.net> wrote:
>
> In a recent attempt to compile www/chromium on an RPI3 running r345516
> compilation stopped with repeated reports of
>
> /usr/include/machine/endian.h:89:19: error: invalid operand in inline asm: 'rev16 ${0:w}, ${1:w}'
>
> Chromium compiled on the same host a couple of months ago, but the
> executable failed on a runtime library error. Now attempts to upgrade
> stop during compilation. Ports are presently at revision 496949.
>
> Thanks for reading, and any guidance.
>
> bob prohaska
The swap function at that line in sys/arm64/include/endian.h doesn't look right to me. I think it should read
__asm("rev16 %w0, %w1\n" : "=r" (ret) : "r" (w));
instead of
__asm __volatile("rev16 %w0, %w1\n" : "=&r" (ret), "+r" (v));
Two changes: (1) it doesn't need to be volatile because it has no side effects and (2) the constraints and lack of explicit input operand are wrong. The other swap functions should have similar changes.
More information about the freebsd-arm
mailing list