Page MenuHomeFreeBSD

Teach DTrace that unaligned accesses are allowed on aarch64, not just x86.
ClosedPublic

Authored by rwatson on Mon, Mar 22, 1:51 AM.

Diff Detail

Repository
R10 FreeBSD src repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

I wonder if we should be checking for __NO_STRICT_ALIGNMENT (and defining it for architectures other than x86)

I wonder if we should be checking for __NO_STRICT_ALIGNMENT (and defining it for architectures other than x86)

Hmm. I didn't know that existed.

I think it is the right goal, but I don't think we should aim for it in this patch. Not least, I'm not easily set up to test the various other cases covered by that define currently.

This revision is now accepted and ready to land.Mon, Mar 22, 1:42 PM

I wonder if we should be checking for __NO_STRICT_ALIGNMENT (and defining it for architectures other than x86)

Hmm. I didn't know that existed.

I think it is the right goal, but I don't think we should aim for it in this patch. Not least, I'm not easily set up to test the various other cases covered by that define currently.

Note that the architecture must be truly totally alignment-agnostic for __NO_STRICT_ALIGNMENT to work. If aarch64 still has restrictions on some instructions (such as ldm/stm) the compiler may generate those for accessing network data in unaligned packet headers (I ran into this on arm32, where ipv6 address accesses got optimized into ldm instructions to load all 16 bytes at once).