18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef __ASM_VDSO_VSYSCALL_H
38c2ecf20Sopenharmony_ci#define __ASM_VDSO_VSYSCALL_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci#ifndef __ASSEMBLY__
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci#include <linux/hrtimer.h>
88c2ecf20Sopenharmony_ci#include <linux/timekeeper_internal.h>
98c2ecf20Sopenharmony_ci#include <vdso/datapage.h>
108c2ecf20Sopenharmony_ci#include <asm/vgtod.h>
118c2ecf20Sopenharmony_ci#include <asm/vvar.h>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ciDEFINE_VVAR(struct vdso_data, _vdso_data);
148c2ecf20Sopenharmony_ci/*
158c2ecf20Sopenharmony_ci * Update the vDSO data page to keep in sync with kernel timekeeping.
168c2ecf20Sopenharmony_ci */
178c2ecf20Sopenharmony_cistatic __always_inline
188c2ecf20Sopenharmony_cistruct vdso_data *__x86_get_k_vdso_data(void)
198c2ecf20Sopenharmony_ci{
208c2ecf20Sopenharmony_ci	return _vdso_data;
218c2ecf20Sopenharmony_ci}
228c2ecf20Sopenharmony_ci#define __arch_get_k_vdso_data __x86_get_k_vdso_data
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci/* The asm-generic header needs to be included after the definitions above */
258c2ecf20Sopenharmony_ci#include <asm-generic/vdso/vsyscall.h>
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci#endif /* !__ASSEMBLY__ */
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci#endif /* __ASM_VDSO_VSYSCALL_H */
30