| /* |
| * Adapted from arm64 version. |
| * |
| * Copyright (C) 2012 ARM Limited |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| */ |
| #ifndef __ASM_VDSO_DATAPAGE_H |
| #define __ASM_VDSO_DATAPAGE_H |
| |
| #ifdef __KERNEL__ |
| |
| #ifndef __ASSEMBLY__ |
| |
| #include <asm/page.h> |
| |
| /* Try to be cache-friendly on systems that don't implement the |
| * generic timer: fit the unconditionally updated fields in the first |
| * 32 bytes. |
| */ |
| struct vdso_data { |
| u32 seq_count; /* sequence count - odd during updates */ |
| u16 tk_is_cntvct; /* fall back to syscall if false */ |
| u16 cs_shift; /* clocksource shift */ |
| u32 xtime_coarse_sec; /* coarse time */ |
| u32 xtime_coarse_nsec; |
| |
| u32 wtm_clock_sec; /* wall to monotonic offset */ |
| u32 wtm_clock_nsec; |
| u32 xtime_clock_sec; /* CLOCK_REALTIME - seconds */ |
| u32 cs_mult; /* clocksource multiplier */ |
| |
| u64 cs_cycle_last; /* last cycle value */ |
| u64 cs_mask; /* clocksource mask */ |
| |
| u64 xtime_clock_snsec; /* CLOCK_REALTIME sub-ns base */ |
| u32 tz_minuteswest; /* timezone info for gettimeofday(2) */ |
| u32 tz_dsttime; |
| }; |
| |
| union vdso_data_store { |
| struct vdso_data data; |
| u8 page[PAGE_SIZE]; |
| }; |
| |
| #endif /* !__ASSEMBLY__ */ |
| |
| #endif /* __KERNEL__ */ |
| |
| #endif /* __ASM_VDSO_DATAPAGE_H */ |