1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /* 3 * MIPS64 and compat userspace implementations of gettimeofday() 4 * and similar. 5 * 6 * Copyright (C) 2015 Imagination Technologies 7 * Copyright (C) 2018 ARM Limited 8 * 9 */ 10 #include <linux/time.h> 11 #include <linux/types.h> 12 #include <vdso/gettime.h> 13 14 #if _MIPS_SIM != _MIPS_SIM_ABI64 15 int __vdso_clock_gettime(clockid_t clock, 16 struct old_timespec32 *ts) 17 { 18 return __cvdso_clock_gettime32(clock, ts); 19 } 20 21 #ifdef CONFIG_MIPS_CLOCK_VSYSCALL 22 23 /* 24 * This is behind the ifdef so that we don't provide the symbol when there's no 25 * possibility of there being a usable clocksource, because there's nothing we 26 * can do without it. When libc fails the symbol lookup it should fall back on 27 * the standard syscall path. 28 */ 29 int __vdso_gettimeofday(struct __kernel_old_timeval *tv, 30 struct timezone *tz) 31 { 32 return __cvdso_gettimeofday(tv, tz); 33 } 34 35 #endif /* CONFIG_MIPS_CLOCK_VSYSCALL */ 36 37 int __vdso_clock_getres(clockid_t clock_id, 38 struct old_timespec32 *res) 39 { 40 return __cvdso_clock_getres_time32(clock_id, res); 41 } 42 43 int __vdso_clock_gettime64(clockid_t clock, 44 struct __kernel_timespec *ts) 45 { 46 return __cvdso_clock_gettime(clock, ts); 47 } 48 49 #else 50 51 int __vdso_clock_gettime(clockid_t clock, 52 struct __kernel_timespec *ts) 53 { 54 return __cvdso_clock_gettime(clock, ts); 55 } 56 57 #ifdef CONFIG_MIPS_CLOCK_VSYSCALL 58 59 /* 60 * This is behind the ifdef so that we don't provide the symbol when there's no 61 * possibility of there being a usable clocksource, because there's nothing we 62 * can do without it. When libc fails the symbol lookup it should fall back on 63 * the standard syscall path. 64 */ 65 int __vdso_gettimeofday(struct __kernel_old_timeval *tv, 66 struct timezone *tz) 67 { 68 return __cvdso_gettimeofday(tv, tz); 69 } 70 71 #endif /* CONFIG_MIPS_CLOCK_VSYSCALL */ 72 73 int __vdso_clock_getres(clockid_t clock_id, 74 struct __kernel_timespec *res) 75 { 76 return __cvdso_clock_getres(clock_id, res); 77 } 78 79 #endif 80