Hi,
rdos wrote:
Does that mean that loading FS and GS in long mode directly updates the base? Does it mean that if wrmsr is used to load FS.base or GS.base, it makes it possible for compability-mode to access memory above 4G through FS and GS? I think that might be worth testing.
I'd assume that (in compatibility mode) the CPU converts the virtual address into a linear address, then masks off (or ignores) the highest 32-bits to form a 32-bit linear address, then converts the resulting 32-bit linear address into a physical address.
Note that this doesn't apply to FS and GS alone. For example, you could set ES base to 0xFFFFFFF0 so that "ES:0x55555565" refers to the linear address 0x0000000155555555; and I'd assume the effective linear address that is actually used is 0x55555555.
Cheers,
Brendan