Page MenuHomeFreeBSD

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

Authored by rwatson on Mar 22 2021, 1:51 AM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Nov 15, 3:52 PM
Unknown Object (File)
Tue, Nov 12, 8:18 PM
Unknown Object (File)
Sep 30 2024, 9:45 PM
Unknown Object (File)
Sep 30 2024, 9:44 PM
Unknown Object (File)
Sep 30 2024, 9:33 PM
Unknown Object (File)
Sep 29 2024, 9:30 PM
Unknown Object (File)
Sep 24 2024, 4:47 PM
Unknown Object (File)
Aug 20 2024, 4:39 PM

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
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.Mar 22 2021, 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).