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
20*7d2aa4bbSVincenzo Frascino #ifdef CONFIG_MIPS_CLOCK_VSYSCALL
21*7d2aa4bbSVincenzo Frascino
22*7d2aa4bbSVincenzo Frascino /*
23*7d2aa4bbSVincenzo Frascino * This is behind the ifdef so that we don't provide the symbol when there's no
24*7d2aa4bbSVincenzo Frascino * possibility of there being a usable clocksource, because there's nothing we
25*7d2aa4bbSVincenzo Frascino * can do without it. When libc fails the symbol lookup it should fall back on
26*7d2aa4bbSVincenzo Frascino * the standard syscall path.
27*7d2aa4bbSVincenzo 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
34*7d2aa4bbSVincenzo Frascino #endif /* CONFIG_MIPS_CLOCK_VSYSCALL */
35*7d2aa4bbSVincenzo 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
56*7d2aa4bbSVincenzo Frascino #ifdef CONFIG_MIPS_CLOCK_VSYSCALL
57*7d2aa4bbSVincenzo Frascino
58*7d2aa4bbSVincenzo Frascino /*
59*7d2aa4bbSVincenzo Frascino * This is behind the ifdef so that we don't provide the symbol when there's no
60*7d2aa4bbSVincenzo Frascino * possibility of there being a usable clocksource, because there's nothing we
61*7d2aa4bbSVincenzo Frascino * can do without it. When libc fails the symbol lookup it should fall back on
62*7d2aa4bbSVincenzo Frascino * the standard syscall path.
63*7d2aa4bbSVincenzo 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
70*7d2aa4bbSVincenzo Frascino #endif /* CONFIG_MIPS_CLOCK_VSYSCALL */
71*7d2aa4bbSVincenzo 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