On Fri, Jun 07, 2013 at 06:56:34PM -0400, Hans-Peter Nilsson wrote: > > cris compiler options for alignment -- systemwide or local? > > No, DATA_ALIGNMENT in cris.h is not intended as an ABI > indication, but as an optimization when emitting data. > (This was the way to do it at the time. Has this changed?) > > The ABI is as indicated by BIGGEST_ALIGNMENT: 8 (bits; one > byte). Nothing is guaranteed (to the data referer) to have a > bigger alignment - unless otherwise indicated by attribute-align. > > (Unfortunately I can't change BIGGEST_ALIGNMENT to indicate that > atomic variables require "natural alignment", or actually not to > straddle a cache-boundary, as increasing BIGGEST_ALIGNMENT makes > GCC change the ABI. But that's a slightly different issue.)
Right now it is unfortunately part of ABI, which is something the patch attempts to cure in a backwards compatible way (i.e., data will be still alignment the way it used to be, but code will no longer assume it is that much aligned, unless it is DATA_ABI_ALIGNMENT). > > > mmix comment mentions GETA instruction > > Yep, data must be at least 32-bit-aligned so addresses can be > formed with a GETA insn. BIGGEST_ALIGNMENT is 64 though and > STRICT_ALIGNMENT; natural alignment is required for proper > interpretation as the low bits are ignored. Then mmix would probably want to define DATA_ABI_ALIGNMENT instead of DATA_ALIGNMENT after the patch (or both). Jakub