[PATCH 24/25] arm64:ilp32: add vdso-ilp32 and use for signal return

Andrew Pinski
2016-05-04T23:23:13Z

On Wed, May 4, 2016 at 2:49 PM, Yury Norov <ynorov@caviumnetworks.com> wrote:
> On Tue, May 03, 2016 at 08:41:25PM +0800, Zhangjian (Bamvor) wrote:
>> Hi, all
>>
>> After apply this patch with my small testcase, the vsyscall of gettimeofday in
>> ilp32 works in both big endian and small endian. In this patch, I use the
>> different register and offset for ilp32 and lp64. Actually, the
>> COMPAT_TVAL_TV_SEC is same as TVAL_TV_SEC(so as to COMPAT_TSPEC_TV_SEC and
>> TSPEC_TV_SEC). I add it to keep the logic clear. I also change the version
>> of vdso to 4.6. It should change to 2.6.39 if glibc is not update.
>>
>
> [...]
>
> Hi Bamvor,
>
> It works for me as well. Thank you.
> I'll incorporate it in next submission.

We should add the following so we are complaint to the ILP32 ABI
dealing with pointers don't have to be zero extended for arguments,
Note ZERO should most likely be ZERO_PTR or something to do that
effect, I am not so good with names.
#ifdef __LP64__
#define ZERO(n)
#else
#define ZERO(n) mov w##n, w##n
#endif

...
ENTRY(__kernel_gettimeofday)
.cfi_startproc
ZERO(0)
ZERO(1)
...
ENTRY(__kernel_clock_gettime)
.cfi_startproc
ZERO(1)
...
ENTRY(__kernel_clock_getres)
.cfi_startproc
ZERO(1)

Thanks,
Andrew Pinski

>
> Yury.