[Qemu-devel] [PATCH for-4.0 5/5] tcg/i386: Add setup_guest_base_seg for FreeBSD

Richard Henderson posted 5 patches 5 years, 6 months ago
[Qemu-devel] [PATCH for-4.0 5/5] tcg/i386: Add setup_guest_base_seg for FreeBSD
Posted by Richard Henderson 5 years, 6 months ago
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tcg/i386/tcg-target.inc.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/tcg/i386/tcg-target.inc.c b/tcg/i386/tcg-target.inc.c
index b8d2dd5ba3..3a39b51685 100644
--- a/tcg/i386/tcg-target.inc.c
+++ b/tcg/i386/tcg-target.inc.c
@@ -1873,6 +1873,15 @@ static inline int setup_guest_base_seg(void)
     }
     return 0;
 }
+# elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
+#  include <machine/sysarch.h>
+static inline int setup_guest_base_seg(void)
+{
+    if (sysarch(AMD64_SET_GSBASE, &guest_base) == 0) {
+        return P_GS;
+    }
+    return 0;
+}
 # else
 static inline int setup_guest_base_seg(void)
 {
-- 
2.17.2


Re: [Qemu-devel] [PATCH for-4.0 5/5] tcg/i386: Add setup_guest_base_seg for FreeBSD
Posted by Kamil Rytarowski 5 years, 6 months ago
On 03.12.2018 17:08, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  tcg/i386/tcg-target.inc.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/tcg/i386/tcg-target.inc.c b/tcg/i386/tcg-target.inc.c
> index b8d2dd5ba3..3a39b51685 100644
> --- a/tcg/i386/tcg-target.inc.c
> +++ b/tcg/i386/tcg-target.inc.c
> @@ -1873,6 +1873,15 @@ static inline int setup_guest_base_seg(void)
>      }
>      return 0;
>  }
> +# elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
> +#  include <machine/sysarch.h>
> +static inline int setup_guest_base_seg(void)
> +{
> +    if (sysarch(AMD64_SET_GSBASE, &guest_base) == 0) {
> +        return P_GS;
> +    }
> +    return 0;
> +}
>  # else
>  static inline int setup_guest_base_seg(void)
>  {
> 

There is also X86_SET_GSBASE in <include/sysarch.h> in NetBSD. Do we
need to set it for this OS too?

Re: [Qemu-devel] [PATCH for-4.0 5/5] tcg/i386: Add setup_guest_base_seg for FreeBSD
Posted by Richard Henderson 5 years, 6 months ago
On 12/3/18 11:01 AM, Kamil Rytarowski wrote:
> On 03.12.2018 17:08, Richard Henderson wrote:
>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>> ---
>>  tcg/i386/tcg-target.inc.c | 9 +++++++++
>>  1 file changed, 9 insertions(+)
>>
>> diff --git a/tcg/i386/tcg-target.inc.c b/tcg/i386/tcg-target.inc.c
>> index b8d2dd5ba3..3a39b51685 100644
>> --- a/tcg/i386/tcg-target.inc.c
>> +++ b/tcg/i386/tcg-target.inc.c
>> @@ -1873,6 +1873,15 @@ static inline int setup_guest_base_seg(void)
>>      }
>>      return 0;
>>  }
>> +# elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
>> +#  include <machine/sysarch.h>
>> +static inline int setup_guest_base_seg(void)
>> +{
>> +    if (sysarch(AMD64_SET_GSBASE, &guest_base) == 0) {
>> +        return P_GS;
>> +    }
>> +    return 0;
>> +}
>>  # else
>>  static inline int setup_guest_base_seg(void)
>>  {
>>
> 
> There is also X86_SET_GSBASE in <include/sysarch.h> in NetBSD. Do we
> need to set it for this OS too?

You will want to do so, yes.  In the meantime NetBSD should not break; it is
only an optimization.


r~