POWER architecture CPUs (Book-S) require natural alignment for
cache-inhibited storage accesses. Since we can't know the caching model
for a page ahead of time, always enforce natural alignment in memcpy.
This fixes a SIGBUS in X with acceleration enabled on POWER9.
Details
Details
- Reviewers
luporl alfredo - Group Reviewers
PowerPC - Commits
- rS358688: powerpc/powerpc64: Enforce natural alignment in memcpy
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
lib/libc/powerpc64/string/memcpy.S | ||
---|---|---|
61 ↗ | (On Diff #69219) | You also need to check if len (r5) is 0 and exit, because .Lcopy_remaining_fix_index_byte doesn't handle this case. |
lib/libc/powerpc64/string/memcpy.S | ||
---|---|---|
61 ↗ | (On Diff #69219) | Sorry, I missed the cmpdi %r5, 0 above, so forget my previous comment. |
Comment Actions
I tested this patch with D23958/r358672 reverted. This solution makes optimized memcpy/bcopy code viable again on POWER7. It slows down some cases but it's a gain in overal, I think.