[legacy] Align legacy drivers' __shared data to the maximum possible
authorMichael Brown <mcb30@etherboot.org>
Sat, 14 Jun 2008 19:01:14 +0000 (20:01 +0100)
committerMichael Brown <mcb30@etherboot.org>
Sat, 14 Jun 2008 19:01:14 +0000 (20:01 +0100)
Some drivers that still use the legacy-driver wrapper (tg3 in particular)
apparently do not specify their alignment constraints properly.  This
hack forces any __shared data to be maximally aligned.

Note that this provides only 16-byte alignment; it is not possible to
request alignment to any greater than 16 bytes using
__attribute__((aligned)), since the relocation code will preserve only 16
byte alignment (and operation under -DKEEP_IT_REAL cannot preserve more
that 16 byte alignment).

Idea proposed by Tim Hockin <thockin@google.com>

src/include/compiler.h

index 1d4312a..8ab7b8a 100644 (file)
@@ -345,7 +345,7 @@ extern void dbg_hex_dump_da ( unsigned long dispaddr,
  * @endcode
  *
  */
-#define __shared __asm__ ( "_shared_bss" )
+#define __shared __asm__ ( "_shared_bss" ) __aligned
 
 /**
  * Optimisation barrier