1b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky#ifndef __S390_VDSO_H__ 2b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky#define __S390_VDSO_H__ 3b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky 4b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky#ifdef __KERNEL__ 5b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky 6b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky/* Default link addresses for the vDSOs */ 7b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky#define VDSO32_LBASE 0 8b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky#define VDSO64_LBASE 0 9b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky 1013c6680acb3df25722858566b42759215ea5d2e0Martin Schwidefsky#define VDSO_VERSION_STRING LINUX_2.6.29 11b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky 12b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky#ifndef __ASSEMBLY__ 13b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky 14b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky/* 15c742b31c03f37c5c499178f09f57381aa6c70131Martin Schwidefsky * Note about the vdso_data and vdso_per_cpu_data structures: 16b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky * 17c742b31c03f37c5c499178f09f57381aa6c70131Martin Schwidefsky * NEVER USE THEM IN USERSPACE CODE DIRECTLY. The layout of the 18b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky * structure is supposed to be known only to the function in the vdso 19b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky * itself and may change without notice. 20b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky */ 21b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky 22b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefskystruct vdso_data { 23b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky __u64 tb_update_count; /* Timebase atomicity ctr 0x00 */ 24b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky __u64 xtime_tod_stamp; /* TOD clock for xtime 0x08 */ 25b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky __u64 xtime_clock_sec; /* Kernel time 0x10 */ 26b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky __u64 xtime_clock_nsec; /* 0x18 */ 27b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky __u64 wtom_clock_sec; /* Wall to monotonic clock 0x20 */ 28b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky __u64 wtom_clock_nsec; /* 0x28 */ 29b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky __u32 tz_minuteswest; /* Minutes west of Greenwich 0x30 */ 30b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky __u32 tz_dsttime; /* Type of dst correction 0x34 */ 31c742b31c03f37c5c499178f09f57381aa6c70131Martin Schwidefsky __u32 ectg_available; 32157a1a27d5921fc94db8c14e0d01363d13de99b5Hendrik Brueckner __u32 ntp_mult; /* NTP adjusted multiplier 0x3C */ 33c742b31c03f37c5c499178f09f57381aa6c70131Martin Schwidefsky}; 34c742b31c03f37c5c499178f09f57381aa6c70131Martin Schwidefsky 35c742b31c03f37c5c499178f09f57381aa6c70131Martin Schwidefskystruct vdso_per_cpu_data { 36c742b31c03f37c5c499178f09f57381aa6c70131Martin Schwidefsky __u64 ectg_timer_base; 37c742b31c03f37c5c499178f09f57381aa6c70131Martin Schwidefsky __u64 ectg_user_time; 38b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky}; 39b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky 40b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefskyextern struct vdso_data *vdso_data; 41b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky 42c742b31c03f37c5c499178f09f57381aa6c70131Martin Schwidefsky#ifdef CONFIG_64BIT 438b646bd759086f6090fe27acf414c0b5faa737f4Martin Schwidefskyint vdso_alloc_per_cpu(struct _lowcore *lowcore); 448b646bd759086f6090fe27acf414c0b5faa737f4Martin Schwidefskyvoid vdso_free_per_cpu(struct _lowcore *lowcore); 45c742b31c03f37c5c499178f09f57381aa6c70131Martin Schwidefsky#endif 46c742b31c03f37c5c499178f09f57381aa6c70131Martin Schwidefsky 47b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky#endif /* __ASSEMBLY__ */ 48b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky 49b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky#endif /* __KERNEL__ */ 50b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky 51b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky#endif /* __S390_VDSO_H__ */ 52