arch,sim: Add a UintPtr type to the ABI types for GuestABI.
authorGabe Black <gabe.black@gmail.com>
Wed, 3 Feb 2021 04:17:36 +0000 (20:17 -0800)
committerGabe Black <gabe.black@gmail.com>
Sat, 6 Feb 2021 01:13:50 +0000 (01:13 +0000)
commitc1ec1c2ababa18aa05f9ab715d10f80ce56a9528
tree94f6222889144d6e66a77b7410569977a2546362
parent1055e187cc61c01996774bcc681d26ea43cac089
arch,sim: Add a UintPtr type to the ABI types for GuestABI.

This type is primarily used to determine the size of a pointer when
using that ABI, similar to the uintptr_t type, but also less directly
to determine the "native" size of the ABI. For instance, for 32 bit ARM
ABIs, it should be defined as uint32_t since that's both the size of a
uintptr_t, and, less directly, the size of a 32 bit ARM register and
"naturally" sized types in that ABI.

This type can be used by the VPtr template to retrieve its actual value
from a simcall's parameters. In general, when accepting or returning a
pointer or address in a simcall, the VPtr template should be used so
that it's managed correctly by GuestABI. Addr will be treated as a
uint64_t allways which will be incorrect for 32 bit ABIs.

Change-Id: I3af046917387541d6faff96a21a1f1dbf7317e06
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/40496
Maintainer: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Bobby R. Bruce <bbruce@ucdavis.edu>
src/arch/arm/aapcs64.hh
src/arch/arm/semihosting.hh
src/sim/proxy_ptr.hh
src/sim/proxy_ptr.test.cc
src/sim/syscall_abi.hh