RPI3, error: invalid operand in inline asm: 'rev16 ${0:w}, ${1:w}'

John F Carr jfc at mit.edu
Tue Apr 2 20:36:49 UTC 2019


> 
> On Apr 2, 2019, at 14:09 , bob prohaska <fbsd at www.zefox.net> wrote:
> 
> On Tue, Apr 02, 2019 at 09:17:13AM -0700, bob prohaska wrote:
>> On Tue, Apr 02, 2019 at 10:39:42AM +0000, John F Carr wrote:
>>> 
>>> The problem I mentioned is with the system.  I filed a bug:
>>> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236920
>>> 
>>> If you change the system header /usr/include/machine/endian.h
>>> according to the path in that bug report, does chromium compile?
>> 
>> The patch applied without difficulty and I've restarted the make
>> process using portmaster-devel. 
>> 
> 
> The compile stopped again, seemingly with the same error, unchanged.
> 
> Oddly, there's also an error immediately before, which has been seen
> before but I thought has been fixed at some point, 
> 
> In file included from ../../base/third_party/libevent/event.c:49:
> In file included from /usr/include/signal.h:42:
> /usr/include/machine/ucontext.h:46:2: error: unknown type name '__uint128_t'
>        __uint128_t     fp_q[32];
>        ^
> 1 error generated.
> 
> The relevant parts of the console output are at
> 
> http://www.zefox.net/~fbsd/rpi3/portmaster/chromium/r345516/console.txt
> 
> in case anybody's willing to take a look.
> 
> Thanks for reading,
> 
> bob prohaska

I looked a little closer and figured out why it's failing.  The chromium port compiles with options "--target=arm-linux-gnueabihf -march=armv7-a".  That means it's using a Linux ABI on 32 bit ARM v7.  The byte reverse functions in machine/endian.h do not work with that target.  I think the rev* instructions don't exist in ARM v7.

Does chromium come with object files built for ARM7a on Linux, so that target has to be used?


More information about the freebsd-arm mailing list