xref: /openbmc/linux/arch/mips/vdso/vgettimeofday.c (revision 7d2aa4bb)
124640f23SVincenzo Frascino // SPDX-License-Identifier: GPL-2.0-or-later
224640f23SVincenzo Frascino /*
324640f23SVincenzo Frascino  * MIPS64 and compat userspace implementations of gettimeofday()
424640f23SVincenzo Frascino  * and similar.
524640f23SVincenzo Frascino  *
624640f23SVincenzo Frascino  * Copyright (C) 2015 Imagination Technologies
724640f23SVincenzo Frascino  * Copyright (C) 2018 ARM Limited
824640f23SVincenzo Frascino  *
924640f23SVincenzo Frascino  */
1024640f23SVincenzo Frascino #include <linux/time.h>
1124640f23SVincenzo Frascino #include <linux/types.h>
1224640f23SVincenzo Frascino 
1324640f23SVincenzo Frascino #if _MIPS_SIM != _MIPS_SIM_ABI64
__vdso_clock_gettime(clockid_t clock,struct old_timespec32 * ts)1424640f23SVincenzo Frascino int __vdso_clock_gettime(clockid_t clock,
1524640f23SVincenzo Frascino 			 struct old_timespec32 *ts)
1624640f23SVincenzo Frascino {
1724640f23SVincenzo Frascino 	return __cvdso_clock_gettime32(clock, ts);
1824640f23SVincenzo Frascino }
1924640f23SVincenzo Frascino 
207d2aa4bbSVincenzo Frascino #ifdef CONFIG_MIPS_CLOCK_VSYSCALL
217d2aa4bbSVincenzo Frascino 
227d2aa4bbSVincenzo Frascino /*
237d2aa4bbSVincenzo Frascino  * This is behind the ifdef so that we don't provide the symbol when there's no
247d2aa4bbSVincenzo Frascino  * possibility of there being a usable clocksource, because there's nothing we
257d2aa4bbSVincenzo Frascino  * can do without it. When libc fails the symbol lookup it should fall back on
267d2aa4bbSVincenzo Frascino  * the standard syscall path.
277d2aa4bbSVincenzo Frascino  */
__vdso_gettimeofday(struct __kernel_old_timeval * tv,struct timezone * tz)2824640f23SVincenzo Frascino int __vdso_gettimeofday(struct __kernel_old_timeval *tv,
2924640f23SVincenzo Frascino 			struct timezone *tz)
3024640f23SVincenzo Frascino {
3124640f23SVincenzo Frascino 	return __cvdso_gettimeofday(tv, tz);
3224640f23SVincenzo Frascino }
3324640f23SVincenzo Frascino 
347d2aa4bbSVincenzo Frascino #endif /* CONFIG_MIPS_CLOCK_VSYSCALL */
357d2aa4bbSVincenzo Frascino 
__vdso_clock_getres(clockid_t clock_id,struct old_timespec32 * res)36abed3d82SVincenzo Frascino int __vdso_clock_getres(clockid_t clock_id,
37abed3d82SVincenzo Frascino 			struct old_timespec32 *res)
38abed3d82SVincenzo Frascino {
39abed3d82SVincenzo Frascino 	return __cvdso_clock_getres_time32(clock_id, res);
40abed3d82SVincenzo Frascino }
41abed3d82SVincenzo Frascino 
__vdso_clock_gettime64(clockid_t clock,struct __kernel_timespec * ts)421f66c45dSVincenzo Frascino int __vdso_clock_gettime64(clockid_t clock,
431f66c45dSVincenzo Frascino 			   struct __kernel_timespec *ts)
441f66c45dSVincenzo Frascino {
451f66c45dSVincenzo Frascino 	return __cvdso_clock_gettime(clock, ts);
461f66c45dSVincenzo Frascino }
471f66c45dSVincenzo Frascino 
4824640f23SVincenzo Frascino #else
4924640f23SVincenzo Frascino 
__vdso_clock_gettime(clockid_t clock,struct __kernel_timespec * ts)5024640f23SVincenzo Frascino int __vdso_clock_gettime(clockid_t clock,
5124640f23SVincenzo Frascino 			 struct __kernel_timespec *ts)
5224640f23SVincenzo Frascino {
5324640f23SVincenzo Frascino 	return __cvdso_clock_gettime(clock, ts);
5424640f23SVincenzo Frascino }
5524640f23SVincenzo Frascino 
567d2aa4bbSVincenzo Frascino #ifdef CONFIG_MIPS_CLOCK_VSYSCALL
577d2aa4bbSVincenzo Frascino 
587d2aa4bbSVincenzo Frascino /*
597d2aa4bbSVincenzo Frascino  * This is behind the ifdef so that we don't provide the symbol when there's no
607d2aa4bbSVincenzo Frascino  * possibility of there being a usable clocksource, because there's nothing we
617d2aa4bbSVincenzo Frascino  * can do without it. When libc fails the symbol lookup it should fall back on
627d2aa4bbSVincenzo Frascino  * the standard syscall path.
637d2aa4bbSVincenzo Frascino  */
__vdso_gettimeofday(struct __kernel_old_timeval * tv,struct timezone * tz)6424640f23SVincenzo Frascino int __vdso_gettimeofday(struct __kernel_old_timeval *tv,
6524640f23SVincenzo Frascino 			struct timezone *tz)
6624640f23SVincenzo Frascino {
6724640f23SVincenzo Frascino 	return __cvdso_gettimeofday(tv, tz);
6824640f23SVincenzo Frascino }
6924640f23SVincenzo Frascino 
707d2aa4bbSVincenzo Frascino #endif /* CONFIG_MIPS_CLOCK_VSYSCALL */
717d2aa4bbSVincenzo Frascino 
__vdso_clock_getres(clockid_t clock_id,struct __kernel_timespec * res)72abed3d82SVincenzo Frascino int __vdso_clock_getres(clockid_t clock_id,
73abed3d82SVincenzo Frascino 			struct __kernel_timespec *res)
74abed3d82SVincenzo Frascino {
75abed3d82SVincenzo Frascino 	return __cvdso_clock_getres(clock_id, res);
76abed3d82SVincenzo Frascino }
77abed3d82SVincenzo Frascino 
7824640f23SVincenzo Frascino #endif
79