On Tue, Aug 12, 2014 at 01:53:35PM -0500, Tom Musta wrote: > For those target ABIs that use the ipc system call (e.g. POWER), > the third argument is used in the shmat path as a pointer. It > therefore must be declared as an abi_long (versus int) so that > the address bits are not lost in truncation. In fact, all arguments > to do_ipc should be declared as abit_long. > > In fact, it makes more sense for all of the arguments to be declaried > as abi_long (except call). > > Signed-off-by: Tom Musta <tommu...@gmail.com> > --- > V2: Changed all do_ipc arguments (except "call") to abi_long per Peter > Maydell's review.
So, that certainly makes sense for second and third. But 'first' really is defined as 'int' in the kernel source; what's the reason for using a long here? > > linux-user/syscall.c | 8 ++++---- > 1 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index bee1f4e..3a4f432 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -3125,8 +3125,8 @@ static inline abi_long do_shmdt(abi_ulong shmaddr) > #ifdef TARGET_NR_ipc > /* ??? This only works with linear mappings. */ > /* do_ipc() must return target values and target errnos. */ > -static abi_long do_ipc(unsigned int call, int first, > - int second, int third, > +static abi_long do_ipc(unsigned int call, abi_long first, > + abi_long second, abi_long third, > abi_long ptr, abi_long fifth) > { > int version; > @@ -3148,9 +3148,9 @@ static abi_long do_ipc(unsigned int call, int first, > /* The semun argument to semctl is passed by value, so dereference > the > * ptr argument. */ > abi_ulong atptr; > - get_user_ual(atptr, (abi_ulong)ptr); > + get_user_ual(atptr, ptr); > ret = do_semctl(first, second, third, > - (union target_semun)(abi_ulong) atptr); > + (union target_semun) atptr); > break; > } > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
pgpCCHKMjohsg.pgp
Description: PGP signature