All of lore.kernel.org
 help / color / mirror / Atom feed
From: Warner Losh <imp@bsdimp.com>
To: qemu-devel@nongnu.org
Cc: Kyle Evans <kevans@FreeBSD.org>,
	Richard Henderson <richard.henderson@linaro.org>,
	Laurent Vivier <laurent@vivier.eu>, Warner Losh <imp@bsdimp.com>
Subject: [PULL 21/23] bsd-user/sysarch: Move to using do_freebsd_arch_sysarch interface
Date: Mon, 18 Oct 2021 10:04:56 -0600	[thread overview]
Message-ID: <20211018160458.1976-22-imp@bsdimp.com> (raw)
In-Reply-To: <20211018160458.1976-1-imp@bsdimp.com>

do_freebsd_arch_sysarch() exists in $ARCH/target_arch_sysarch.h for x86.
Call it from do_freebsd_sysarch() and remove the mostly duplicate
version in syscall.c. Future changes will move it to os-sys.c and
support other architectures.

Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Kyle Evans <kevans@FreeBSD.org>
---
 bsd-user/freebsd/meson.build |  3 +++
 bsd-user/freebsd/os-sys.c    | 27 +++++++++++++++++++
 bsd-user/meson.build         |  3 +++
 bsd-user/qemu.h              |  3 +++
 bsd-user/syscall.c           | 50 ------------------------------------
 5 files changed, 36 insertions(+), 50 deletions(-)
 create mode 100644 bsd-user/freebsd/meson.build
 create mode 100644 bsd-user/freebsd/os-sys.c

diff --git a/bsd-user/freebsd/meson.build b/bsd-user/freebsd/meson.build
new file mode 100644
index 0000000000..4b69cca7b9
--- /dev/null
+++ b/bsd-user/freebsd/meson.build
@@ -0,0 +1,3 @@
+bsd_user_ss.add(files(
+  'os-sys.c',
+))
diff --git a/bsd-user/freebsd/os-sys.c b/bsd-user/freebsd/os-sys.c
new file mode 100644
index 0000000000..309e27b9d6
--- /dev/null
+++ b/bsd-user/freebsd/os-sys.c
@@ -0,0 +1,27 @@
+/*
+ *  FreeBSD sysctl() and sysarch() system call emulation
+ *
+ *  Copyright (c) 2013-15 Stacey D. Son
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "qemu.h"
+#include "target_arch_sysarch.h"
+
+/* sysarch() is architecture dependent. */
+abi_long do_freebsd_sysarch(void *cpu_env, abi_long arg1, abi_long arg2)
+{
+    return do_freebsd_arch_sysarch(cpu_env, arg1, arg2);
+}
diff --git a/bsd-user/meson.build b/bsd-user/meson.build
index 5378f56f71..87885d91ed 100644
--- a/bsd-user/meson.build
+++ b/bsd-user/meson.build
@@ -12,3 +12,6 @@ bsd_user_ss.add(files(
   'syscall.c',
   'uaccess.c',
 ))
+
+# Pull in the OS-specific build glue, if any
+subdir(targetos)
diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
index cdb85140f4..e65e41d53d 100644
--- a/bsd-user/qemu.h
+++ b/bsd-user/qemu.h
@@ -239,6 +239,9 @@ extern unsigned long target_sgrowsiz;
 abi_long get_errno(abi_long ret);
 bool is_error(abi_long ret);
 
+/* os-sys.c */
+abi_long do_freebsd_sysarch(void *cpu_env, abi_long arg1, abi_long arg2);
+
 /* user access */
 
 #define VERIFY_READ  PAGE_READ
diff --git a/bsd-user/syscall.c b/bsd-user/syscall.c
index 2fd2ba8330..d3322760f4 100644
--- a/bsd-user/syscall.c
+++ b/bsd-user/syscall.c
@@ -88,56 +88,6 @@ static abi_long do_obreak(abi_ulong new_brk)
     return 0;
 }
 
-#if defined(TARGET_I386)
-static abi_long do_freebsd_sysarch(CPUX86State *env, int op, abi_ulong parms)
-{
-    abi_long ret = 0;
-    abi_ulong val;
-    int idx;
-
-    switch (op) {
-#ifdef TARGET_ABI32
-    case TARGET_FREEBSD_I386_SET_GSBASE:
-    case TARGET_FREEBSD_I386_SET_FSBASE:
-        if (op == TARGET_FREEBSD_I386_SET_GSBASE)
-#else
-    case TARGET_FREEBSD_AMD64_SET_GSBASE:
-    case TARGET_FREEBSD_AMD64_SET_FSBASE:
-        if (op == TARGET_FREEBSD_AMD64_SET_GSBASE)
-#endif
-            idx = R_GS;
-        else
-            idx = R_FS;
-        if (get_user(val, parms, abi_ulong))
-            return -TARGET_EFAULT;
-        cpu_x86_load_seg(env, idx, 0);
-        env->segs[idx].base = val;
-        break;
-#ifdef TARGET_ABI32
-    case TARGET_FREEBSD_I386_GET_GSBASE:
-    case TARGET_FREEBSD_I386_GET_FSBASE:
-        if (op == TARGET_FREEBSD_I386_GET_GSBASE)
-#else
-    case TARGET_FREEBSD_AMD64_GET_GSBASE:
-    case TARGET_FREEBSD_AMD64_GET_FSBASE:
-        if (op == TARGET_FREEBSD_AMD64_GET_GSBASE)
-#endif
-            idx = R_GS;
-        else
-            idx = R_FS;
-        val = env->segs[idx].base;
-        if (put_user(val, parms, abi_ulong))
-            return -TARGET_EFAULT;
-        break;
-    /* XXX handle the others... */
-    default:
-        ret = -TARGET_EINVAL;
-        break;
-    }
-    return ret;
-}
-#endif
-
 #ifdef __FreeBSD__
 /*
  * XXX this uses the undocumented oidfmt interface to find the kind of
-- 
2.32.0



  parent reply	other threads:[~2021-10-18 16:27 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-18 16:04 [PULL 00/23] Pull bsd user 20211018 patches Warner Losh
2021-10-18 16:04 ` [PULL 01/23] bsd-user/mmap.c: Always zero MAP_ANONYMOUS memory in mmap_frag() Warner Losh
2021-10-18 16:04 ` [PULL 02/23] bsd-user/mmap.c: check pread's return value to fix warnings with _FORTIFY_SOURCE Warner Losh
2021-10-18 16:04 ` [PULL 03/23] bsd-user/mmap.c: MAP_ symbols are defined, so no need for ifdefs Warner Losh
2021-10-18 16:04 ` [PULL 04/23] bsd-user/mmap.c: mmap return ENOMEM on overflow Warner Losh
2021-10-18 16:04 ` [PULL 05/23] bsd-user/mmap.c: mmap prefer MAP_ANON for BSD Warner Losh
2021-10-18 16:04 ` [PULL 06/23] bsd-user/mmap.c: Convert to qemu_log logging for mmap debugging Warner Losh
2021-10-18 16:04 ` [PULL 07/23] bsd-user/mmap.c: Don't mmap fd == -1 independently from MAP_ANON flag Warner Losh
2021-10-18 18:45   ` Richard Henderson
2021-10-18 18:47     ` Warner Losh
2021-10-18 18:48       ` Richard Henderson
2021-10-18 16:04 ` [PULL 08/23] bsd-user/mmap.c: Implement MAP_EXCL, required by jemalloc in head Warner Losh
2021-10-18 16:04 ` [PULL 09/23] bsd-user/mmap.c: assert that target_mprotect cannot fail Warner Losh
2021-10-18 16:04 ` [PULL 10/23] meson: *-user: only descend into *-user when configured Warner Losh
2021-10-18 16:04 ` [PULL 11/23] bsd-user/target_os-user.h: Remove support for FreeBSD older than 12.0 Warner Losh
2021-10-18 16:04 ` [PULL 12/23] bsd-user/strace.list: Remove support for FreeBSD versions " Warner Losh
2021-10-18 16:04 ` [PULL 13/23] bsd-user: TARGET_RESET define is unused, remove it Warner Losh
2021-10-18 16:04 ` [PULL 14/23] bsd-user: export get_errno and is_error from syscall.c Warner Losh
2021-10-18 16:04 ` [PULL 15/23] bsd-user/errno_defs.h: Add internal error numbers Warner Losh
2021-10-18 16:04 ` [PULL 16/23] bsd-user: move TARGET_MC_GET_CLEAR_RET to target_os_signal.h Warner Losh
2021-10-18 16:04 ` [PULL 17/23] bsd-user/target_os_elf.h: Remove fallback ELF_HWCAP and reorder Warner Losh
2021-10-18 16:04 ` [PULL 18/23] bsd-user/target_os_elf: If ELF_HWCAP2 is defined, publish it Warner Losh
2021-10-18 16:04 ` [PULL 19/23] bsd-user: Remove used from TaskState Warner Losh
2021-10-18 16:04 ` [PULL 20/23] bsd-user: Add stop_all_tasks Warner Losh
2021-10-18 16:04 ` Warner Losh [this message]
2021-10-18 16:04 ` [PULL 22/23] bsd-user: Rename sigqueue to qemu_sigqueue Warner Losh
2021-10-18 16:04 ` [PULL 23/23] bsd-user/signal: Create a dummy signal queueing function Warner Losh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211018160458.1976-22-imp@bsdimp.com \
    --to=imp@bsdimp.com \
    --cc=kevans@FreeBSD.org \
    --cc=laurent@vivier.eu \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.