On 10/16/2015 05:28 AM, Paolo Bonzini wrote:
On 08/10/2015 06:59, Richard Henderson wrote:
+/* Address space support.
+
+ This is not "far pointers" in the 16-bit sense, but an easy way
+ to use %fs and %gs segment prefixes. Therefore:
+
+ (a) All address spaces have the same modes,
+ (b) All address spaces have the same addresss forms,
+ (c) While %fs and %gs are technically subsets of the generic
+ address space, they are probably not subsets of each other.
+ (d) Since we have no access to the segment base register values
+ without resorting to a system call, we cannot convert a
+ non-default address space to a default address space.
+ Therefore we do not claim %fs or %gs are subsets of generic.
rdfsbase and rdgsbase are potentially accessible to userspace too, so I
think %fs or %gs should be considered subsets of generic.
Potentially, yes. Though in practice not enabled for any current operating
system that I can find. Thus at present we still require some sort of syscall.
I suppose we could add a libgcc interface for it, but it certainly wouldn't be
quick.
r~