Many components under stand/ had CLANG_NO_IAS added when Clang's Integrated Assembler (IAS) did not handle .codeNN directives. Clang gained support quite some time ago, and we can now build stand/ with IAS. In most cases IAS- and GNU as-assembled boot components were identical, and CLANG_NO_IAS was already removed from other components. Clang IAS produces different output for some components, including boot2, so CLANG_NO_IAS was not previously removed for those. In the case of boot2 the difference is that IAS produces a larger encoding for one instruction (the testb at the beginning of read). GNU as produces: 2e f6 06 b0 08 80 while IAS includes an address size override prefix (67) and produces: 2e 67 f6 05 b3 08 00 00 80 This results in three fewer NOPs elsewhere in boot2 but no functional change, so switch to IAS for boot2. (We can separately pursue improved 16-bit IAS support with the LLVM developers.) Sponsored by: The FreeBSD Foundation |
||
---|---|---|
.. | ||
boot0 | ||
boot0sio | ||
boot2 | ||
btx | ||
cdboot | ||
common | ||
gptboot | ||
gptzfsboot | ||
isoboot | ||
libfirewire | ||
libi386 | ||
loader | ||
loader_4th | ||
loader_lua | ||
loader_simp | ||
mbr | ||
pmbr | ||
pxeldr | ||
zfsboot | ||
boot.ldscript | ||
Makefile | ||
Makefile.inc |