Here's a good link to the beginning of linux, that shows that linux was no differant than most OS's coded by osdev members.
http://kerneltrap.org/node/14002
A great quote is Linus Torvalds saying "Simply, I'd say that porting is impossible"

Porting a kernel requires its interface to be well defined and system agnostic, and everything behind it to be redesigned and rewritten. Don't bother keeping your i386 source-compatible with your ARM port.Dex wrote:A great quote is Linus Torvalds saying "Simply, I'd say that porting is impossible"
That's very true and I nigh completely agree with it. My I586, I586-PAE and AMD64 ports will come from the same source tree, as will probably my ARM7 and ARM9 ports. They are so similar that splitting them up would reduce maintainability. This is something that's mostly prevented by assembly language - you can't use ARM9 opcodes in ARM7 code and you have to change every register reference in the AMD64 port from e* to r*. Effectively, that makes sharing asm code pretty impossible.Dex wrote:But on the + side, i think you end up with a better port, if its hand tailored to the processor.