[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 18/22] bsd-user: Define target_arg64
From: |
Kyle Evans |
Subject: |
Re: [PATCH 18/22] bsd-user: Define target_arg64 |
Date: |
Tue, 1 Feb 2022 10:41:54 -0600 |
On Tue, Feb 1, 2022 at 5:15 AM Warner Losh <imp@bsdimp.com> wrote:
>
> target_arg64 is a generic way to extract 64-bits from a pair of
> arguments. On 32-bit platforms, it returns them joined together as
> appropriate. On 64-bit platforms, it returns the first arg because it's
> already 64-bits.
>
> Signed-off-by: Stacey Son <sson@FreeBSD.org>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> ---
> bsd-user/qemu.h | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
Reviewed-by: Kyle Evans <kevans@FreeBSD.org>
> diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
> index a9efa807b78..af272c2a802 100644
> --- a/bsd-user/qemu.h
> +++ b/bsd-user/qemu.h
> @@ -462,6 +462,19 @@ static inline void *lock_user_string(abi_ulong
> guest_addr)
> #define unlock_user_struct(host_ptr, guest_addr, copy) \
> unlock_user(host_ptr, guest_addr, (copy) ? sizeof(*host_ptr) : 0)
>
> +static inline uint64_t target_arg64(uint32_t word0, uint32_t word1)
> +{
> +#if TARGET_ABI_BITS == 32
> +#ifdef TARGET_WORDS_BIGENDIAN
> + return ((uint64_t)word0 << 32) | word1;
> +#else
> + return ((uint64_t)word1 << 32) | word0;
> +#endif
> +#else /* TARGET_ABI_BITS != 32 */
> + return word0;
> +#endif /* TARGET_ABI_BITS != 32 */
> +}
> +
> #include <pthread.h>
>
> #include "user/safe-syscall.h"
> --
> 2.33.1
>
- [PATCH 01/22] bsd-user/main.c: Drop syscall flavor arg -bsd, (continued)
- [PATCH 01/22] bsd-user/main.c: Drop syscall flavor arg -bsd, Warner Losh, 2022/02/01
- [PATCH 05/22] bsd-user/arm/target_arch_cpu.h: Only support FreeBSD sys calls, Warner Losh, 2022/02/01
- [PATCH 04/22] bsd-user/i386/target_arch_cpu.h: Remove openbsd syscall, Warner Losh, 2022/02/01
- [PATCH 18/22] bsd-user: Define target_arg64, Warner Losh, 2022/02/01
- [PATCH 14/22] bsd-user/freebsd/os-syscall.c: lock_iovec, Warner Losh, 2022/02/01
- [PATCH 20/22] bsd-user/bsd-file.h: Add implementations for read, pread, readv and preadv, Warner Losh, 2022/02/01
- [PATCH 19/22] bsd-user: Add safe system call macros, Warner Losh, 2022/02/01
- [PATCH 09/22] bsd-user/freebsd/os-syscall.c: Move syscall processing here, Warner Losh, 2022/02/01