On Sun, Mar 4, 2012 at 2:19 PM, Matthew Wilcox <matthew@wil.cx> wrote:>> To be fair, that wasn't the ARM core. That was the MEMC chip (roughly> equivalent to a northbridge). Also, there's no need for Linux to care> about that any more, since we removed the arm26 port in July 2007. As far> as I know, all arm32 cores have been coupled with memory controllers> that are functional.

No, it wasn't just the memory controller.

The ARM cores really did some crazy stuff. Loading an unalignedpointer resulted in loading the value from the aligned pointer, andthen doing a byte rotate on the result. And it did so silently withouta trap. So you didn't get the right value, *and* you didn't even get atrap to tell you that the CPU couldn't do it. That's just puregarbage.

You can call it a "feature", but sane people call it a bug. The factthat it was *designed* to do that doesn't make it less buggy, it justmakes it sad.

Now, the modern "bigger" ARM cores don't have that problem, but thesmall cores still do, afaik.