diff mbox series

[for-4.0,5/5] tcg/i386: Add setup_guest_base_seg for FreeBSD

Message ID 20181203160840.15115-6-richard.henderson@linaro.org
State Superseded
Headers show
Series tcg/i386: Improve guest_base handling | expand

Commit Message

Richard Henderson Dec. 3, 2018, 4:08 p.m. UTC
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

---
 tcg/i386/tcg-target.inc.c | 9 +++++++++
 1 file changed, 9 insertions(+)

-- 
2.17.2

Comments

Kamil Rytarowski Dec. 3, 2018, 5:01 p.m. UTC | #1
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?
Richard Henderson Dec. 3, 2018, 6:35 p.m. UTC | #2
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~
diff mbox series

Patch

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)
 {