bsd-user: Define target_arg64
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> Reviewed-by: Kyle Evans <kevans@FreeBSD.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
647afdf183
commit
0ff0508286
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user