Messages in this thread | | | Date | Sat, 22 Apr 2006 09:56:07 +0200 | From | "alpha @ steudten Engineering" <> | Subject | Re: Fw: [Bug 6421] New: kernel 2.6.10-2.6.16 on alpha: arch/alpha/kernel/io.c, iowrite16_rep() BUG_ON((unsigned long)src & 0x1) triggered |
| |
Running this on my alpha gives (gcc 4.0.2):
3000 0123456A01234567
Andrew Morton wrote:
>> Because networking does read/write "short" fields in various packet >> header structures. Results are illustrated in a following example: >> >> char foo[] __attribute__((aligned(8))) = "0123456701234567"; >> >> int main() >> { >> short *bar = (short *)&foo[7]; >> printf("%04x\n", *bar); /* 3037 */ >> *bar = 0x4241; /* "AB" */ >> printf("%s\n", foo); >> return 0; >> } >> -------- >> 0037 >> ^^ >> 0123456A01234567 >> ^ >> Misalignment by two bytes for ints and longs is often unavoidable in >> networking and we can cope with it, but there is no excuse of 1-byte >> misalignment.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |