This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: glibc 2.21 - Machine maintainers, please test your machines.


On Mon, Jan 26, 2015 at 5:51 AM, Torvald Riegel <triegel@redhat.com> wrote:
> On Mon, 2015-01-26 at 05:50 -0800, H.J. Lu wrote:
>> On Mon, Jan 26, 2015 at 5:48 AM, Andreas Schwab <schwab@suse.de> wrote:
>> > "H.J. Lu" <hjl.tools@gmail.com> writes:
>> >
>> >> On Mon, Jan 26, 2015 at 1:24 AM, Andreas Schwab <schwab@suse.de> wrote:
>> >>> "H.J. Lu" <hjl.tools@gmail.com> writes:
>> >>>
>> >>>> It doesn't change the size, only increases alignment from 4 bytes to 8 bytes.
>> >>>
>> >>> Alignment is part of the ABI.
>> >>>
>> >>
>> >> For x32, we can increase alignment from 4 bytes to 8 bytes without breaking
>> >> existing binaries.
>> >
>> > The compiler may generate code to take advantage of the bigger
>> > alignment, which will fail if not fulfilled (this is not just about
>> > unaligned accesses).
>> >
>>
>> Failure shouldn't happen on x32 in this case.
>>
>
> Then please provide a *detailed* comment why this is the case along with
> the alignment change in x86 semaphore.h.  Given that we're discussing
> whether this is safe or not, I think we should have detailed
> documentation.  And this will also help conclude the discussion.
>

This the part of x86 specification.  From vol 1 of x86 SDM:

4.1.1 Alignment of Words, Doublewords, Quadwords, and Double Quadwords

Words, doublewords, and quadwords do not need to be aligned in memory
on natural boundaries. The natural
boundaries for words, double words, and quadwords are even-numbered
addresses, addresses evenly divisible by
four, and addresses evenly divisible by eight, respectively. However,
to improve the performance of programs, data
structures (especially stacks) should be aligned on natural boundaries
whenever possible. The reason for this is
that the processor requires two memory accesses to make an unaligned
memory access; aligned accesses require
only one memory access. A word or doubleword operand that crosses a
4-byte boundary or a quadword operand
that crosses an 8-byte boundary is considered unaligned and requires
two separate memory bus cycles for access.

Do I really to quote this?

-- 
H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]