- Joined
- Sep 26, 2021
- Posts
- 6,330
- Main Camera
- Sony
According to Intel's manuals, this is the case. All i86-64 CPUs initialize in the original 8086 mode, at physical address 0xFFFFFFF0, which, of course, is well beyond the address range of an 8086, but then, I guess, it does stuff after that to properly get its boots on.
It seems a little problematic that the start address of an x86-64 machine places ROM in an inconvenient location in the midst of memory space, but I guess it is probably not that big a deal since everyone already uses page mapping once it comes to doing actual work.
The ARMv8 manual I have says that the vector for cold start is "implementation defined", and the state of the initial core (32-bit mode or 64-bit mode) is also up to the chip maker. Writing boot code is a dark art these days, so "implementation defined" seems to work at least as well as wading through layers of legacy to get properly up and running.
Yep. It’s hard to believe in this day and age that we are booting machines into 16/8-bit mode, just to to get themselves started. But, of course, if we were to rip out all that old mode stuff it wouldn’t be that hard to define a firmware interface for booting some other way. I think it would simplify the x86-64 design quite a bit, and move the performance/watt much closer to Arm, but I can’t prove it because I am too lazy to sit down and think really hard about it
I don’t use Windows except as forced to at work, but I imagine modern Windows doesn’t actually need that old junk unless you are running old software? Though I thought WoW took care of that? I really should have kept up with what Microsoft was up to, I guess, but I stopped being interested when I switched full-time to Macs around 2008.