On Mon, Nov 18, 2002 at 02:24:06PM +0100, Kevin D. Kissell wrote:
> I'm cleaning up some old Linux kernel sandboxes, and
> came across a patch which I had long ago made in a
> local copy of include/asm-mips/processor.h but which
> does not seem to have been propagated more widely.
> I had added "__attribute__((aligned(8))))" to the
> declarations of the mips_fpu_hard_struct and
> mips_fpu_soft_struct data structures, presumably
> because there was a need to ensure 64-bit alignment
> of the elements so that LDC1 instructions would work.
> We don't generally have a problem here, presumably
> because either the previous data declarations naturally
> align things to 64-bits, or because we've ensured things
> at a higher level of makfile compiler directives. Are we
> in fact guarnateed to be safe without the source code
> directive, or should those __attribute__ directives be
> added as insurance?
The definition of mips_cpu_hard_struct uses doubles which is ensuring
mips_fpu_hard_struct will have 64-bit alignment. This is actually part
of thread_struct which itself has 8kB alignment on 32-bit and 16kB
alignment on 64-bit.