rdos wrote:Not so. Compatibility mode is dependent on descriptor registers and the GDT. In fact, compatibility mode makes sure you can still run your protected mode code. That's why you cannot remove any of it without breaking stuff.
I do know that these things are necessary now. That is precisely the fact I am lamenting. It should not have to be the case. In long mode, CS only contains two useful bits of information: Kernel or user land, and 32 or 64 bit mode. DS, ES, and SS contain no useful information whatsoever. Yet we still have to initialize them in this arcane way that keeps sending newbies to this very forum, confused.
More sensible architectures, like PowerPC, save both bits of information that on x86 is contained in CS in a special register, and allow you to switch them on return from interrupt. No need for a special table.
The TSS contains 8 useful machine words (the stack pointers RSP0 and IST1-7). That could be done in MSRs, then the TSS would be superfluous. And since nobody needs an LDT when segmentation is as limited as it is on x86-64, nothing remains for the GDT, and so it can be removed also.
rdos wrote:What I'm more amazed about is why FS and GS are still part of the X86-S?
Because both Windows and ELF TLS use these to record the thread pointers.
rdos wrote:These old bastards from the 386 processor surely should have been removed. After all, we don't want these pesky bases anymore, and you can define two MSRs instead
Their segment bases are already MSRs, and their limits and attributes are ignored. FS and GS these days serve the role of containing a single pointer. More sensible architectures, like PowerPC, actually use a register for that. But since both x86 and x86_64 are somewhat lacking in that department, the FS/GS mechanism will have to do. Although it means you cannot set these registers without kernel support. Even with WRFSBASE, you still need the kernel to tell the userspace that it's enabled.
rdos wrote:My two cents is that Intel wants to make another 64-bit processor, now that they failed with their initial attempt that lacked proper backward compatibility.
I think you are arguing in bad faith because they are finally burying segmentation, a feature which you hold very dear. Even though the rest of the world will only say "Good riddance!" Backwards compatibility still works to the extent anyone cares about these days. For userspace, x86-S is still compatible back to the 386. Kernel space will have to adapt, but kernels are more easily changed than user space programs. dosemu will no longer work, but we have dosbox for that now. In short:
rdos wrote:If they get away with this, then x86 no longer is a backwards compatible processor, and why would people bother with it instead of moving to ARM?
Because most of what they need, want, and are familiar with will work on x86-S. Yes, some specialized applications may break, but for those there are VMs, or failing that, legacy friendly systems. If nothing else, more will work on x86-S than will work on ARM, and already a lot of stuff is working on ARM.
Octocontrabass wrote:They mention FRED in the X86-S proposal, so they haven't forgotten about it.
Must have overlooked it. So here's hoping.