Malloc alignment in libstand / loader(8)

Warner Losh imp at bsdimp.com
Wed Feb 5 20:52:18 UTC 2014


On Feb 5, 2014, at 6:29 AM, John Baldwin wrote:

> On Tuesday, February 04, 2014 09:55:34 PM Ian Lepore wrote:
>> On newer ARM chips, the device drivers used by loader(8) require that
>> I/O buffers be aligned on cache line sized boundaries.  The drivers are
>> part of u-boot which serves as a sort of load-time bios.
>> 
>> Attached is a patch that sets the malloc alignment in libstand to 64
>> bytes when compiled on ARM, and leaves it at 16 bytes for all other
>> platforms.  If there are no objections I'd like to commit this soon.
>> 
>> I've tested this on ARM, but have no way to test it on other platforms.
>> The changes should be a no-op on other platforms.
> 
> I think this looks fine, but perhaps use CTASSERT() instead of rolling your 
> own?  (I would say to use _Static_assert(), but I don't think that works with 
> our old GCC)

I'd enable it for mips and powerpc, the other two platforms that have uboot callback support.

Other than that, the change looks good to me.

Warner



More information about the freebsd-arch mailing list