I recently read this question on how Windows 8 will support ARM.
Now, my question. How? ARM isn't anything like the PC/x86.
List of things that vary across different devices:
- MMU. Some lack them, some are more limited than others. They all vary across each ARM processor. Microsoft would have to explicitly write kernel support for each ARM processor they intend to support
- Multi-Processing. There is no standardization that I know of for multi processing on ARM processors that are capable.
- Memory Maps. These vary extremely widely across each device and CPU. There is no standard for "detecting" the memory map either
- There is no "standard" bus for devices other than USB. PCI isn't common, and I've never seen any real standardization for buses. Some devices use proprietary buses or don't have any "real" ones at all.
- Opcode support. Many of the ARM CPUs out there have conflicting opcode sets. It's very difficult if not impossible to go to a "generic" set of opcodes. Some processors include an FPU and some don't. There is no way to detect what opcodes will work and what won't and how they'll behave. There is no equivalent for
CPUID
The only commonly standardized thing is the interrupt controller.
How does Microsoft expect to pull this off? A different version of Windows for each device they support? A very limited list of supported devices? Forcing manufacturers to follow some standard they create?
