>>145
You're talking about binary translation or emulation when you say ``modify the Linux x86 binary (the kernel and the drivers) to work on an ARM'', that is not binary modification (such as changing some minor functionality or extending a function or adding some hooks), but complete translation to another instruction set. Binary translation is possible, but it's usually done automatically, and translated binaries tend to run much slower if the instruction sets are too different. In some cases direct binary translation is not even possible due to self-modifying code ( or being unable to tell code from data ), in which case one has to do a form of dynamic recompilation.
tl;dr : binary translation(platform1->platform2) != binary modification (platform1->platform1)