[jeroen@freebsd ~/software/u-boot]$ /usr/bin/clang -target arm-freebsd-eabi --sysroot /usr/armv6-freebsd -no-integrated-as -mllvm -arm-use-movt=0 -Wp,-MD,arch/arm/cpu/armv7/.nonsec_virt.o.d -nostdinc -isystem /usr/bin/../lib/clang/3.7.0/include -isystem /usr/armv6-freebsd/usr/include -Iinclude -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ -D__UBOOT__ -DCONFIG_SYS_TEXT_BASE=0x80800000 -D__ASSEMBLY__ -g -D__ARM__ -marm -mabi=aapcs-linux -mno-unaligned-access -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv7-a -c -o arch/arm/cpu/armv7/nonsec_virt.o arch/arm/cpu/armv7/nonsec_virt.S -v FreeBSD clang version 3.7.0 (tags/RELEASE_370/final 246257) 20150906 Target: arm--freebsd-eabi Thread model: posix "/usr/bin/clang" -cc1 -triple armv7--freebsd-eabi -E -disable-free -main-file-name nonsec_virt.S -mrelocation-model static -mthread-model posix -mdisable-fp-elim -masm-verbose -no-integrated-as -mconstructor-aliases -target-cpu cortex-a8 -target-feature +soft-float -target-feature +soft-float-abi -target-feature -neon -target-feature -crypto -target-abi aapcs-linux -msoft-float -mfloat-abi soft -backend-option -arm-strict-align -backend-option -arm-reserve-r9 -v -gdwarf-2 -dwarf-column-info -ffunction-sections -fdata-sections -coverage-file /home/jeroen/software/u-boot/arch/arm/cpu/armv7/nonsec_virt.o -nostdsysteminc -nobuiltininc -resource-dir /usr/bin/../lib/clang/3.7.0 -dependency-file arch/arm/cpu/armv7/.nonsec_virt.o.d -MT arch/arm/cpu/armv7/nonsec_virt.o -sys-header-deps -isystem /usr/bin/../lib/clang/3.7.0/include -isystem /usr/armv6-freebsd/usr/include -include ./include/linux/kconfig.h -D __KERNEL__ -D __UBOOT__ -D CONFIG_SYS_TEXT_BASE=0x80800000 -D __ASSEMBLY__ -D __ARM__ -I include -I ./arch/arm/include -isysroot /usr/armv6-freebsd -fno-dwarf-directory-asm -fdebug-compilation-dir /home/jeroen/software/u-boot -ferror-limit 19 -fmessage-length 237 -mstackrealign -fno-signed-char -fobjc-runtime=gnustep -fno-common -fdiagnostics-show-option -fcolor-diagnostics -mllvm -arm-use-movt=0 -o /tmp/nonsec_virt-b8a468.s -x assembler-with-cpp arch/arm/cpu/armv7/nonsec_virt.S clang -cc1 version 3.7.0 based upon LLVM 3.7.0 default target x86_64-unknown-freebsd11.0 #include "..." search starts here: #include <...> search starts here: include ./arch/arm/include /usr/bin/../lib/clang/3.7.0/include /usr/armv6-freebsd/usr/include End of search list. "/usr/bin/arm-freebsd-eabi-as" -mfpu=softvfp -meabi=5 -o arch/arm/cpu/armv7/nonsec_virt.o /tmp/nonsec_virt-b8a468.s arch/arm/cpu/armv7/nonsec_virt.S: Assembler messages: arch/arm/cpu/armv7/nonsec_virt.S:16: Error: architectural extension `virt' is not allowed for the current base architecture arch/arm/cpu/armv7/nonsec_virt.S:25: Error: attempt to use an ARM instruction on a Thumb-only processor -- `adr pc,_secure_monitor' arch/arm/cpu/armv7/nonsec_virt.S:70: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mrc p15,0,r5,c1,c1,0' arch/arm/cpu/armv7/nonsec_virt.S:71: Error: attempt to use an ARM instruction on a Thumb-only processor -- `bic r5,r5,#0x4a' arch/arm/cpu/armv7/nonsec_virt.S:72: Error: attempt to use an ARM instruction on a Thumb-only processor -- `orr r5,r5,#0x31' arch/arm/cpu/armv7/nonsec_virt.S:74: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mov r6,#0x13' arch/arm/cpu/armv7/nonsec_virt.S:75: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mrc p15,0,r4,c0,c1,1' arch/arm/cpu/armv7/nonsec_virt.S:75: Error: attempt to use an ARM instruction on a Thumb-only processor -- `and r4,r4,#(0xF<<12)' arch/arm/cpu/armv7/nonsec_virt.S:75: Error: attempt to use an ARM instruction on a Thumb-only processor -- `cmp r4,#(1<<12)' arch/arm/cpu/armv7/nonsec_virt.S:77: Error: attempt to use an ARM instruction on a Thumb-only processor -- `orreq r5,r5,#0x100' arch/arm/cpu/armv7/nonsec_virt.S:78: Error: attempt to use an ARM instruction on a Thumb-only processor -- `moveq r6,#0x1a' arch/arm/cpu/armv7/nonsec_virt.S:81: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mcr p15,0,r5,c1,c1,0' arch/arm/cpu/armv7/nonsec_virt.S:82: Error: attempt to use an ARM instruction on a Thumb-only processor -- `isb' arch/arm/cpu/armv7/nonsec_virt.S:84: Error: attempt to use an ARM instruction on a Thumb-only processor -- `bne 1f' arch/arm/cpu/armv7/nonsec_virt.S:87: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mrc p15,0,r4,c0,c1,1' arch/arm/cpu/armv7/nonsec_virt.S:88: Error: attempt to use an ARM instruction on a Thumb-only processor -- `ands r4,r4,#(0xF<<16)' arch/arm/cpu/armv7/nonsec_virt.S:89: Error: attempt to use an ARM instruction on a Thumb-only processor -- `movne r4,#0' arch/arm/cpu/armv7/nonsec_virt.S:90: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mcrrne p15,4,r4,r4,c14' arch/arm/cpu/armv7/nonsec_virt.S:92: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mov lr,ip' arch/arm/cpu/armv7/nonsec_virt.S:93: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mov ip,#(0x40|0x80|0x100)' arch/arm/cpu/armv7/nonsec_virt.S:94: Error: attempt to use an ARM instruction on a Thumb-only processor -- `tst lr,#1' arch/arm/cpu/armv7/nonsec_virt.S:95: Error: attempt to use an ARM instruction on a Thumb-only processor -- `orrne ip,ip,#0x20' arch/arm/cpu/armv7/nonsec_virt.S:96: Error: attempt to use an ARM instruction on a Thumb-only processor -- `orr ip,ip,r6' arch/arm/cpu/armv7/nonsec_virt.S:97: Error: attempt to use an ARM instruction on a Thumb-only processor -- `msr spsr_cxfs,ip' arch/arm/cpu/armv7/nonsec_virt.S:98: Error: attempt to use an ARM instruction on a Thumb-only processor -- `movs pc,lr' arch/arm/cpu/armv7/nonsec_virt.S:101: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mov ip,r0' arch/arm/cpu/armv7/nonsec_virt.S:102: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mov r0,r1' arch/arm/cpu/armv7/nonsec_virt.S:103: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mov r1,r2' arch/arm/cpu/armv7/nonsec_virt.S:104: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mov r2,r3' arch/arm/cpu/armv7/nonsec_virt.S:105: Error: attempt to use an ARM instruction on a Thumb-only processor -- `smc #0' arch/arm/cpu/armv7/nonsec_virt.S:138: Error: attempt to use an ARM instruction on a Thumb-only processor -- `cpsid i' arch/arm/cpu/armv7/nonsec_virt.S:139: Error: attempt to use an ARM instruction on a Thumb-only processor -- `cpsid f' arch/arm/cpu/armv7/nonsec_virt.S:141: Error: attempt to use an ARM instruction on a Thumb-only processor -- `bl _nonsec_init' arch/arm/cpu/armv7/nonsec_virt.S:143: Error: attempt to use an ARM instruction on a Thumb-only processor -- `adr r0,_smp_pen' arch/arm/cpu/armv7/nonsec_virt.S:144: Error: attempt to use an ARM instruction on a Thumb-only processor -- `b smp_waitloop' arch/arm/cpu/armv7/nonsec_virt.S:162: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mrc p15,4,r3,c15,c0,0' arch/arm/cpu/armv7/nonsec_virt.S:162: Error: attempt to use an ARM instruction on a Thumb-only processor -- `bfc r3,#0,#15' arch/arm/cpu/armv7/nonsec_virt.S:162: Error: attempt to use an ARM instruction on a Thumb-only processor -- `add r3,r3,#0x1000' arch/arm/cpu/armv7/nonsec_virt.S:164: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mvn r1,#0' arch/arm/cpu/armv7/nonsec_virt.S:165: Error: attempt to use an ARM instruction on a Thumb-only processor -- `str r1,[r3,#0x0080]' arch/arm/cpu/armv7/nonsec_virt.S:167: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mrc p15,4,r3,c15,c0,0' arch/arm/cpu/armv7/nonsec_virt.S:167: Error: attempt to use an ARM instruction on a Thumb-only processor -- `bfc r3,#0,#15' arch/arm/cpu/armv7/nonsec_virt.S:167: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mrc p15,0,r1,c0,c1,1' arch/arm/cpu/armv7/nonsec_virt.S:167: Error: attempt to use an ARM instruction on a Thumb-only processor -- `and r1,r1,#(0xF<<12)' arch/arm/cpu/armv7/nonsec_virt.S:167: Error: attempt to use an ARM instruction on a Thumb-only processor -- `cmp r1,#(1<<12)' arch/arm/cpu/armv7/nonsec_virt.S:167: Error: attempt to use an ARM instruction on a Thumb-only processor -- `movne r1,#0x0100' arch/arm/cpu/armv7/nonsec_virt.S:167: Error: attempt to use an ARM instruction on a Thumb-only processor -- `moveq r1,#0x2000' arch/arm/cpu/armv7/nonsec_virt.S:167: Error: attempt to use an ARM instruction on a Thumb-only processor -- `add r3,r3,r1' arch/arm/cpu/armv7/nonsec_virt.S:169: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mov r1,#3' arch/arm/cpu/armv7/nonsec_virt.S:170: Error: attempt to use an ARM instruction on a Thumb-only processor -- `str r1,[r3,#0x0000]' arch/arm/cpu/armv7/nonsec_virt.S:171: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mov r1,#0xff' arch/arm/cpu/armv7/nonsec_virt.S:172: Error: attempt to use an ARM instruction on a Thumb-only processor -- `str r1,[r3,#0x0004]' arch/arm/cpu/armv7/nonsec_virt.S:174: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mrc p15,0,r0,c1,c1,2' arch/arm/cpu/armv7/nonsec_virt.S:175: Error: attempt to use an ARM instruction on a Thumb-only processor -- `movw r1,#0x3fff' arch/arm/cpu/armv7/nonsec_virt.S:176: Error: attempt to use an ARM instruction on a Thumb-only processor -- `movt r1,#0x0004' arch/arm/cpu/armv7/nonsec_virt.S:177: Error: attempt to use an ARM instruction on a Thumb-only processor -- `orr r0,r0,r1' arch/arm/cpu/armv7/nonsec_virt.S:178: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mcr p15,0,r0,c1,c1,2' arch/arm/cpu/armv7/nonsec_virt.S:194: Error: attempt to use an ARM instruction on a Thumb-only processor -- `adr r1,_monitor_vectors' arch/arm/cpu/armv7/nonsec_virt.S:195: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mcr p15,0,r1,c12,c0,1' arch/arm/cpu/armv7/nonsec_virt.S:196: Error: attempt to use an ARM instruction on a Thumb-only processor -- `isb' arch/arm/cpu/armv7/nonsec_virt.S:198: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mov r0,r3' arch/arm/cpu/armv7/nonsec_virt.S:199: Error: attempt to use an ARM instruction on a Thumb-only processor -- `bx lr' arch/arm/cpu/armv7/nonsec_virt.S:205: Error: attempt to use an ARM instruction on a Thumb-only processor -- `wfi' arch/arm/cpu/armv7/nonsec_virt.S:206: Error: attempt to use an ARM instruction on a Thumb-only processor -- `ldr r1,=0x1c010030' arch/arm/cpu/armv7/nonsec_virt.S:207: Error: attempt to use an ARM instruction on a Thumb-only processor -- `ldr r1,[r1]' arch/arm/cpu/armv7/nonsec_virt.S:211: Error: attempt to use an ARM instruction on a Thumb-only processor -- `cmp r0,r1' arch/arm/cpu/armv7/nonsec_virt.S:212: Error: attempt to use an ARM instruction on a Thumb-only processor -- `beq smp_waitloop' arch/arm/cpu/armv7/nonsec_virt.S:213: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mov r0,r1' arch/arm/cpu/armv7/nonsec_virt.S:214: Error: attempt to use an ARM instruction on a Thumb-only processor -- `b _do_nonsec_entry' clang: error: assembler command failed with exit code 1 (use -v to see invocation) cat test.S .arch_extension virt [jeroen@freebsd ~/software/u-boot]$ /usr/bin/clang -target arm-freebsd-eabi --sysroot /usr/armv6-freebsd -no-integrated-as -D__ARM__ -marm -mabi=aapcs-linux -msoft-float -march=armv7-a -c -o arch/arm/cpu/armv7/nonsec_virt.o test.S test.S: Assembler messages: test.S:2: Error: architectural extension `virt' is not allowed for the current base architecture clang: error: assembler command failed with exit code 1 (use -v to see invocation) As a workaround, explicitly passing march to as works: /usr/bin/clang -target arm-freebsd-eabi --sysroot /usr/armv6-freebsd -no-integrated-as -D__ARM__ -marm -mabi=aapcs-linux -msoft-float -march=armv7-a -c -o arch/arm/cpu/armv7/nonsec_virt.o test.S -Xassembler -march=armv7-a -v