the kernel and device drivers are all 16-bit code, and the flag that signals "16-bit code" on an x86 signals "64-bit code" when long-mode is enabled. You can have 16/32 code or 32/64 code but not 16/32/64.
I think you might have been misinterpreted, and you are in fact correct, but could you please answer the below?
https://bttr-software.de/forum/board_entry.php?id=22728
That’s what I thought, but it is incorrect. Long mode can deal with all three code segment sizes at the same time, as indicated by the very first table in the system programming volume of AMD’s architecture manual (“Operating Modes”).
The author of that posting missed an important point: to have code run in AMD64 compatibilty mode, the host OS must be 64-bit. Given that OS/2 is 32-bit, the CPU can only run in one of the legacy modes (i.e. 16 or 32-bit).
Hi Rich. But in what situation is 32/64 allowed (as per your original post), but not 16/32/64?
Perhaps you were considering Windows 10, where you need to choose between 16/32 or 32/64?
I think Windows 10 could have supported 16-bit PM programs (CM16), and CM32 and LM64 all at the same time, but since V8086 wasn't available, they just abandoned 16-bit completely.
But they didn't necessarily have to do that - they could have spent the effort to support Win16 PM16 programs.
Presumably that is not cost-justified though. But I'm just interested in the technical possibility.