home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-powerpc / vdso_datapage.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  3.5 KB  |  114 lines

  1. #ifndef _VDSO_DATAPAGE_H
  2. #define _VDSO_DATAPAGE_H
  3. #ifdef __KERNEL__
  4.  
  5. /*
  6.  * Copyright (C) 2002 Peter Bergner <bergner@vnet.ibm.com>, IBM
  7.  * Copyright (C) 2005 Benjamin Herrenschmidy <benh@kernel.crashing.org>,
  8.  *               IBM Corp.
  9.  *
  10.  * This program is free software; you can redistribute it and/or
  11.  * modify it under the terms of the GNU General Public License
  12.  * as published by the Free Software Foundation; either version
  13.  * 2 of the License, or (at your option) any later version.
  14.  */
  15.  
  16.  
  17. /*
  18.  * Note about this structure:
  19.  *
  20.  * This structure was historically called systemcfg and exposed to
  21.  * userland via /proc/ppc64/systemcfg. Unfortunately, this became an
  22.  * ABI issue as some proprietary software started relying on being able
  23.  * to mmap() it, thus we have to keep the base layout at least for a
  24.  * few kernel versions.
  25.  *
  26.  * However, since ppc32 doesn't suffer from this backward handicap,
  27.  * a simpler version of the data structure is used there with only the
  28.  * fields actually used by the vDSO.
  29.  *
  30.  */
  31.  
  32. /*
  33.  * If the major version changes we are incompatible.
  34.  * Minor version changes are a hint.
  35.  */
  36. #define SYSTEMCFG_MAJOR 1
  37. #define SYSTEMCFG_MINOR 1
  38.  
  39. #ifndef __ASSEMBLY__
  40.  
  41. #include <linux/unistd.h>
  42.  
  43. #define SYSCALL_MAP_SIZE      ((__NR_syscalls + 31) / 32)
  44.  
  45. /*
  46.  * So here is the ppc64 backward compatible version
  47.  */
  48.  
  49. #ifdef CONFIG_PPC64
  50.  
  51. struct vdso_data {
  52.     __u8  eye_catcher[16];        /* Eyecatcher: SYSTEMCFG:PPC64    0x00 */
  53.     struct {            /* Systemcfg version numbers         */
  54.         __u32 major;        /* Major number            0x10 */
  55.         __u32 minor;        /* Minor number            0x14 */
  56.     } version;
  57.  
  58.     /* Note about the platform flags: it now only contains the lpar
  59.      * bit. The actual platform number is dead and burried
  60.      */
  61.     __u32 platform;            /* Platform flags        0x18 */
  62.     __u32 processor;        /* Processor type        0x1C */
  63.     __u64 processorCount;        /* # of physical processors    0x20 */
  64.     __u64 physicalMemorySize;    /* Size of real memory(B)    0x28 */
  65.     __u64 tb_orig_stamp;        /* Timebase at boot        0x30 */
  66.     __u64 tb_ticks_per_sec;        /* Timebase tics / sec        0x38 */
  67.     __u64 tb_to_xs;            /* Inverse of TB to 2^20    0x40 */
  68.     __u64 stamp_xsec;        /*                0x48 */
  69.     __u64 tb_update_count;        /* Timebase atomicity ctr    0x50 */
  70.     __u32 tz_minuteswest;        /* Minutes west of Greenwich    0x58 */
  71.     __u32 tz_dsttime;        /* Type of dst correction    0x5C */
  72.     __u32 dcache_size;        /* L1 d-cache size        0x60 */
  73.     __u32 dcache_line_size;        /* L1 d-cache line size        0x64 */
  74.     __u32 icache_size;        /* L1 i-cache size        0x68 */
  75.     __u32 icache_line_size;        /* L1 i-cache line size        0x6C */
  76.  
  77.     /* those additional ones don't have to be located anywhere
  78.      * special as they were not part of the original systemcfg
  79.      */
  80.     __s32 wtom_clock_sec;            /* Wall to monotonic clock */
  81.     __s32 wtom_clock_nsec;
  82.        __u32 syscall_map_64[SYSCALL_MAP_SIZE]; /* map of syscalls  */
  83.        __u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */
  84. };
  85.  
  86. #else /* CONFIG_PPC64 */
  87.  
  88. /*
  89.  * And here is the simpler 32 bits version
  90.  */
  91. struct vdso_data {
  92.     __u64 tb_orig_stamp;        /* Timebase at boot        0x30 */
  93.     __u64 tb_ticks_per_sec;        /* Timebase tics / sec        0x38 */
  94.     __u64 tb_to_xs;            /* Inverse of TB to 2^20    0x40 */
  95.     __u64 stamp_xsec;        /*                0x48 */
  96.     __u32 tb_update_count;        /* Timebase atomicity ctr    0x50 */
  97.     __u32 tz_minuteswest;        /* Minutes west of Greenwich    0x58 */
  98.     __u32 tz_dsttime;        /* Type of dst correction    0x5C */
  99.     __s32 wtom_clock_sec;            /* Wall to monotonic clock */
  100.     __s32 wtom_clock_nsec;
  101.        __u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */
  102. };
  103.  
  104. #endif /* CONFIG_PPC64 */
  105.  
  106. #ifdef __KERNEL__
  107. extern struct vdso_data *vdso_data;
  108. #endif
  109.  
  110. #endif /* __ASSEMBLY__ */
  111.  
  112. #endif /* __KERNEL__ */
  113. #endif /* _SYSTEMCFG_H */
  114.