Vincenzo Frascino <vincenzo.frascino@xxxxxxx> writes: > > On 14/01/2020 09:33, Thomas Gleixner wrote: >> Thomas Gleixner <tglx@xxxxxxxxxxxxx> writes: >> > [...] > >> >> Bah, it's not fixing it. That's what you get when you compile the wrong >> tree... This part is required to cover the BUILD_VDSO32 guard, but then when the fallback thing is removed it fails again because the 32bit fallbacks are missing. The patch below makes it build again. Thanks, tglx 8<---------------- --- a/arch/arm/include/asm/vdso/gettimeofday.h +++ b/arch/arm/include/asm/vdso/gettimeofday.h @@ -52,6 +52,24 @@ static __always_inline long clock_gettim return ret; } +static __always_inline long clock_gettime32_fallback( + clockid_t _clkid, + struct old_timespec32 *_ts) +{ + register struct old_timespec32 *ts asm("r1") = _ts; + register clockid_t clkid asm("r0") = _clkid; + register long ret asm ("r0"); + register long nr asm("r7") = __NR_clock_gettime; + + asm volatile( + " swi #0\n" + : "=r" (ret) + : "r" (clkid), "r" (ts), "r" (nr) + : "memory"); + + return ret; +} + static __always_inline int clock_getres_fallback( clockid_t _clkid, struct __kernel_timespec *_ts) @@ -63,6 +81,24 @@ static __always_inline int clock_getres_ asm volatile( " swi #0\n" + : "=r" (ret) + : "r" (clkid), "r" (ts), "r" (nr) + : "memory"); + + return ret; +} + +static __always_inline int clock_getres32_fallback( + clockid_t _clkid, + struct old_timespec32 *_ts) +{ + register struct old_timespec32 *ts asm("r1") = _ts; + register clockid_t clkid asm("r0") = _clkid; + register long ret asm ("r0"); + register long nr asm("r7") = __NR_clock_getres; + + asm volatile( + " swi #0\n" : "=r" (ret) : "r" (clkid), "r" (ts), "r" (nr) : "memory");