1 /* 2 * Adapted from arm64 version. 3 * 4 * Copyright (C) 2012 ARM Limited 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 */ 18 #ifndef __ASM_VDSO_DATAPAGE_H 19 #define __ASM_VDSO_DATAPAGE_H 20 21 #ifdef __KERNEL__ 22 23 #ifndef __ASSEMBLY__ 24 25 #include <asm/page.h> 26 27 /* Try to be cache-friendly on systems that don't implement the 28 * generic timer: fit the unconditionally updated fields in the first 29 * 32 bytes. 30 */ 31 struct vdso_data { 32 u32 seq_count; /* sequence count - odd during updates */ 33 u16 tk_is_cntvct; /* fall back to syscall if false */ 34 u16 cs_shift; /* clocksource shift */ 35 u32 xtime_coarse_sec; /* coarse time */ 36 u32 xtime_coarse_nsec; 37 38 u32 wtm_clock_sec; /* wall to monotonic offset */ 39 u32 wtm_clock_nsec; 40 u32 xtime_clock_sec; /* CLOCK_REALTIME - seconds */ 41 u32 cs_mult; /* clocksource multiplier */ 42 43 u64 cs_cycle_last; /* last cycle value */ 44 u64 cs_mask; /* clocksource mask */ 45 46 u64 xtime_clock_snsec; /* CLOCK_REALTIME sub-ns base */ 47 u32 tz_minuteswest; /* timezone info for gettimeofday(2) */ 48 u32 tz_dsttime; 49 }; 50 51 union vdso_data_store { 52 struct vdso_data data; 53 u8 page[PAGE_SIZE]; 54 }; 55 56 #endif /* !__ASSEMBLY__ */ 57 58 #endif /* __KERNEL__ */ 59 60 #endif /* __ASM_VDSO_DATAPAGE_H */ 61