On Wed, 14 Sep 2016, Emmanuel Vadot wrote:

Bruce Evans <b...@optusnet.com.au> wrote:

On Wed, 14 Sep 2016, Emmanuel Vadot wrote:

Log:
 ufsread: Do not cast struct direct from void *
 This cause alignment problem on ARM (and possibly other archs), instead copy 
it.
...

This looks like a good pessimization for space.  boot2 on i386 has to
fit in 8192 bytes and has a negative number to spare (features are
already left out).

Do you have any suggestion on making the code better ?
This was the last patch for having EFI working on ARMv6 and this is
something that I want to be enabled by default at some point.

At least copy to a local variable.  Ifdefs for the space-constrained &&
non-strict-alignment arches work of course, but shouldn't be needed.

You will have to investigate the -ffreestanding and builtin situation.
-ffreestanding is set in 24 sub-Makefiles instead of correctly in 1
Makefile.inc.  I think it applies to all of boot/i386.  boot code
almost never recovers from this using __builtin_*.  Beware that some
builtins just call an extern function which might not exist in boot
code.  Even memcpy barely exists in small boot2's.  Some compilers
have buggy -ffreestanding and call memcpy() for struct copying, so it
is preferred to bcopy() in boot code.

Bruce
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to