# 1 "linux-2.6.16.6/arch/ia64/lib/bitop.c" # 1 "/lusitania_homes/UniversidadDeExtremadura/javier.fernandez/bin/nsc//" # 1 "" # 1 "" # 1 "linux-2.6.16.6/include/linux/config.h" 1 # 1 "linux-2.6.16.6/include/linux/autoconf.h" 1 # 7 "linux-2.6.16.6/include/linux/config.h" 2 # 1 "" 2 # 1 "linux-2.6.16.6/nsc/nsc_override.h" 1 static inline struct task_struct * get_nsc_task(void) { extern struct task_struct *nsc_task; return nsc_task; } # 1 "" 2 # 1 "linux-2.6.16.6/arch/ia64/lib/bitop.c" # 1 "linux-2.6.16.6/include/linux/compiler.h" 1 # 42 "linux-2.6.16.6/include/linux/compiler.h" # 1 "linux-2.6.16.6/include/linux/compiler-gcc4.h" 1 # 1 "linux-2.6.16.6/include/linux/compiler-gcc.h" 1 # 5 "linux-2.6.16.6/include/linux/compiler-gcc4.h" 2 # 43 "linux-2.6.16.6/include/linux/compiler.h" 2 # 2 "linux-2.6.16.6/arch/ia64/lib/bitop.c" 2 # 1 "linux-2.6.16.6/include/linux/types.h" 1 # 1 "linux-2.6.16.6/include/linux/config.h" 1 # 6 "linux-2.6.16.6/include/linux/types.h" 2 # 15 "linux-2.6.16.6/include/linux/types.h" # 1 "linux-2.6.16.6/include/linux/posix_types.h" 1 # 1 "linux-2.6.16.6/include/linux/stddef.h" 1 # 5 "linux-2.6.16.6/include/linux/posix_types.h" 2 # 36 "linux-2.6.16.6/include/linux/posix_types.h" typedef struct { unsigned long fds_bits [(1024/(8 * sizeof(unsigned long)))]; } __kernel_fd_set; typedef void (*__kernel_sighandler_t)(int); typedef int __kernel_key_t; typedef int __kernel_mqd_t; # 1 "linux-2.6.16.6/include/asm/posix_types.h" 1 # 15 "linux-2.6.16.6/include/asm/posix_types.h" typedef unsigned long __kernel_ino_t; typedef unsigned int __kernel_mode_t; typedef unsigned int __kernel_nlink_t; typedef long __kernel_off_t; typedef long long __kernel_loff_t; typedef int __kernel_pid_t; typedef int __kernel_ipc_pid_t; typedef unsigned int __kernel_uid_t; typedef unsigned int __kernel_gid_t; typedef unsigned long __kernel_size_t; typedef long __kernel_ssize_t; typedef long __kernel_ptrdiff_t; typedef long __kernel_time_t; typedef long __kernel_suseconds_t; typedef long __kernel_clock_t; typedef int __kernel_timer_t; typedef int __kernel_clockid_t; typedef int __kernel_daddr_t; typedef char * __kernel_caddr_t; typedef unsigned long __kernel_sigset_t; typedef unsigned short __kernel_uid16_t; typedef unsigned short __kernel_gid16_t; typedef struct { int val[2]; } __kernel_fsid_t; typedef __kernel_uid_t __kernel_old_uid_t; typedef __kernel_gid_t __kernel_old_gid_t; typedef __kernel_uid_t __kernel_uid32_t; typedef __kernel_gid_t __kernel_gid32_t; typedef unsigned int __kernel_old_dev_t; # 64 "linux-2.6.16.6/include/asm/posix_types.h" static __inline__ __attribute__((always_inline)) void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp) { unsigned long _tmp = fd / (8 * sizeof(unsigned long)); unsigned long _rem = fd % (8 * sizeof(unsigned long)); fdsetp->fds_bits[_tmp] |= (1UL<<_rem); } static __inline__ __attribute__((always_inline)) void __FD_CLR(unsigned long fd, __kernel_fd_set *fdsetp) { unsigned long _tmp = fd / (8 * sizeof(unsigned long)); unsigned long _rem = fd % (8 * sizeof(unsigned long)); fdsetp->fds_bits[_tmp] &= ~(1UL<<_rem); } static __inline__ __attribute__((always_inline)) int __FD_ISSET(unsigned long fd, const __kernel_fd_set *p) { unsigned long _tmp = fd / (8 * sizeof(unsigned long)); unsigned long _rem = fd % (8 * sizeof(unsigned long)); return (p->fds_bits[_tmp] & (1UL<<_rem)) != 0; } static __inline__ __attribute__((always_inline)) void __FD_ZERO(__kernel_fd_set *p) { unsigned long *tmp = p->fds_bits; int i; if (__builtin_constant_p((1024/(8 * sizeof(unsigned long))))) { switch ((1024/(8 * sizeof(unsigned long)))) { case 16: tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0; tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0; tmp[ 8] = 0; tmp[ 9] = 0; tmp[10] = 0; tmp[11] = 0; tmp[12] = 0; tmp[13] = 0; tmp[14] = 0; tmp[15] = 0; return; case 8: tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0; tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0; return; case 4: tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0; return; } } i = (1024/(8 * sizeof(unsigned long))); while (i) { i--; *tmp = 0; tmp++; } } # 48 "linux-2.6.16.6/include/linux/posix_types.h" 2 # 16 "linux-2.6.16.6/include/linux/types.h" 2 # 1 "linux-2.6.16.6/include/asm/types.h" 1 # 28 "linux-2.6.16.6/include/asm/types.h" typedef unsigned int umode_t; typedef __signed__ char __s8; typedef unsigned char __u8; typedef __signed__ short __s16; typedef unsigned short __u16; typedef __signed__ int __s32; typedef unsigned int __u32; typedef __signed__ long __s64; typedef unsigned long __u64; typedef __s8 s8; typedef __u8 u8; typedef __s16 s16; typedef __u16 u16; typedef __s32 s32; typedef __u32 u32; typedef __s64 s64; typedef __u64 u64; typedef u64 dma_addr_t; # 17 "linux-2.6.16.6/include/linux/types.h" 2 typedef __u32 __kernel_dev_t; typedef __kernel_fd_set fd_set; typedef __kernel_dev_t dev_t; typedef __kernel_ino_t ino_t; typedef __kernel_mode_t mode_t; typedef __kernel_nlink_t nlink_t; typedef __kernel_off_t off_t; typedef __kernel_pid_t pid_t; typedef __kernel_daddr_t daddr_t; typedef __kernel_key_t key_t; typedef __kernel_suseconds_t suseconds_t; typedef __kernel_timer_t timer_t; typedef __kernel_clockid_t clockid_t; typedef __kernel_mqd_t mqd_t; typedef __kernel_uid32_t uid_t; typedef __kernel_gid32_t gid_t; typedef __kernel_uid16_t uid16_t; typedef __kernel_gid16_t gid16_t; # 57 "linux-2.6.16.6/include/linux/types.h" typedef __kernel_loff_t loff_t; # 66 "linux-2.6.16.6/include/linux/types.h" typedef __kernel_size_t size_t; typedef __kernel_ssize_t ssize_t; typedef __kernel_ptrdiff_t ptrdiff_t; typedef __kernel_time_t time_t; typedef __kernel_clock_t clock_t; typedef __kernel_caddr_t caddr_t; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned char unchar; typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned long ulong; typedef __u8 u_int8_t; typedef __s8 int8_t; typedef __u16 u_int16_t; typedef __s16 int16_t; typedef __u32 u_int32_t; typedef __s32 int32_t; typedef __u8 uint8_t; typedef __u16 uint16_t; typedef __u32 uint32_t; typedef __u64 uint64_t; typedef __u64 u_int64_t; typedef __s64 int64_t; # 137 "linux-2.6.16.6/include/linux/types.h" typedef unsigned long sector_t; # 166 "linux-2.6.16.6/include/linux/types.h" typedef __u16 __le16; typedef __u16 __be16; typedef __u32 __le32; typedef __u32 __be32; typedef __u64 __le64; typedef __u64 __be64; typedef unsigned gfp_t; struct ustat { __kernel_daddr_t f_tfree; __kernel_ino_t f_tinode; char f_fname[6]; char f_fpack[6]; }; # 3 "linux-2.6.16.6/arch/ia64/lib/bitop.c" 2 # 1 "linux-2.6.16.6/include/asm/intrinsics.h" 1 # 15 "linux-2.6.16.6/include/asm/intrinsics.h" # 1 "linux-2.6.16.6/include/asm/ia64regs.h" 1 # 16 "linux-2.6.16.6/include/asm/intrinsics.h" 2 # 1 "linux-2.6.16.6/include/asm/gcc_intrin.h" 1 # 24 "linux-2.6.16.6/include/asm/gcc_intrin.h" extern void ia64_bad_param_for_setreg (void); extern void ia64_bad_param_for_getreg (void); register unsigned long ia64_r13 asm ("r13") __attribute__((__used__)); # 20 "linux-2.6.16.6/include/asm/intrinsics.h" 2 extern unsigned long __bad_size_for_ia64_fetch_and_add (void); extern unsigned long __bad_increment_for_ia64_fetch_and_add (void); # 77 "linux-2.6.16.6/include/asm/intrinsics.h" extern void ia64_xchg_called_with_bad_pointer (void); # 120 "linux-2.6.16.6/include/asm/intrinsics.h" extern long ia64_cmpxchg_called_with_bad_pointer (void); # 4 "linux-2.6.16.6/arch/ia64/lib/bitop.c" 2 # 1 "linux-2.6.16.6/include/linux/module.h" 1 # 10 "linux-2.6.16.6/include/linux/module.h" # 1 "linux-2.6.16.6/include/linux/sched.h" 1 # 1 "linux-2.6.16.6/include/asm/param.h" 1 # 5 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/capability.h" 1 # 32 "linux-2.6.16.6/include/linux/capability.h" typedef struct __user_cap_header_struct { __u32 version; int pid; } *cap_user_header_t; typedef struct __user_cap_data_struct { __u32 effective; __u32 permitted; __u32 inheritable; } *cap_user_data_t; # 1 "linux-2.6.16.6/include/linux/spinlock.h" 1 # 50 "linux-2.6.16.6/include/linux/spinlock.h" # 1 "linux-2.6.16.6/include/linux/preempt.h" 1 # 10 "linux-2.6.16.6/include/linux/preempt.h" # 1 "linux-2.6.16.6/include/linux/thread_info.h" 1 # 13 "linux-2.6.16.6/include/linux/thread_info.h" struct restart_block { long (*fn)(struct restart_block *); unsigned long arg0, arg1, arg2, arg3; }; extern long do_no_restart_syscall(struct restart_block *parm); # 1 "linux-2.6.16.6/include/linux/bitops.h" 1 # 11 "linux-2.6.16.6/include/linux/bitops.h" static inline __attribute__((always_inline)) int generic_ffs(int x) { int r = 1; if (!x) return 0; if (!(x & 0xffff)) { x >>= 16; r += 16; } if (!(x & 0xff)) { x >>= 8; r += 8; } if (!(x & 0xf)) { x >>= 4; r += 4; } if (!(x & 3)) { x >>= 2; r += 2; } if (!(x & 1)) { x >>= 1; r += 1; } return r; } static __inline__ __attribute__((always_inline)) int generic_fls(int x) { int r = 32; if (!x) return 0; if (!(x & 0xffff0000u)) { x <<= 16; r -= 16; } if (!(x & 0xff000000u)) { x <<= 8; r -= 8; } if (!(x & 0xf0000000u)) { x <<= 4; r -= 4; } if (!(x & 0xc0000000u)) { x <<= 2; r -= 2; } if (!(x & 0x80000000u)) { x <<= 1; r -= 1; } return r; } # 1 "linux-2.6.16.6/include/asm/bitops.h" 1 # 14 "linux-2.6.16.6/include/asm/bitops.h" # 1 "linux-2.6.16.6/include/asm/bitops.h" 1 # 15 "linux-2.6.16.6/include/asm/bitops.h" 2 # 34 "linux-2.6.16.6/include/asm/bitops.h" static __inline__ __attribute__((always_inline)) void set_bit (int nr, volatile void *addr) { __u32 bit, old, new; volatile __u32 *m; m = (volatile __u32 *) addr + (nr >> 5); bit = 1 << (nr & 31); do { ; old = *m; new = old | bit; } while (({ __u64 _o_, _r_; switch (sizeof(*(m))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (long) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } switch (sizeof(*(m))) { case 1: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg1.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u8 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 2: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg2.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u16 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 4: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 8: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg8.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u64 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; default: _r_ = ia64_cmpxchg_called_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old); } # 59 "linux-2.6.16.6/include/asm/bitops.h" static __inline__ __attribute__((always_inline)) void __set_bit (int nr, volatile void *addr) { *((__u32 *) addr + (nr >> 5)) |= (1 << (nr & 31)); } # 81 "linux-2.6.16.6/include/asm/bitops.h" static __inline__ __attribute__((always_inline)) void clear_bit (int nr, volatile void *addr) { __u32 mask, old, new; volatile __u32 *m; m = (volatile __u32 *) addr + (nr >> 5); mask = ~(1 << (nr & 31)); do { ; old = *m; new = old & mask; } while (({ __u64 _o_, _r_; switch (sizeof(*(m))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (long) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } switch (sizeof(*(m))) { case 1: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg1.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u8 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 2: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg2.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u16 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 4: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 8: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg8.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u64 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; default: _r_ = ia64_cmpxchg_called_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old); } static __inline__ __attribute__((always_inline)) void __clear_bit (int nr, volatile void *addr) { volatile __u32 *p = (__u32 *) addr + (nr >> 5); __u32 m = 1 << (nr & 31); *p &= ~m; } # 117 "linux-2.6.16.6/include/asm/bitops.h" static __inline__ __attribute__((always_inline)) void change_bit (int nr, volatile void *addr) { __u32 bit, old, new; volatile __u32 *m; m = (volatile __u32 *) addr + (nr >> 5); bit = (1 << (nr & 31)); do { ; old = *m; new = old ^ bit; } while (({ __u64 _o_, _r_; switch (sizeof(*(m))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (long) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } switch (sizeof(*(m))) { case 1: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg1.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u8 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 2: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg2.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u16 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 4: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 8: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg8.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u64 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; default: _r_ = ia64_cmpxchg_called_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old); } # 142 "linux-2.6.16.6/include/asm/bitops.h" static __inline__ __attribute__((always_inline)) void __change_bit (int nr, volatile void *addr) { *((__u32 *) addr + (nr >> 5)) ^= (1 << (nr & 31)); } # 156 "linux-2.6.16.6/include/asm/bitops.h" static __inline__ __attribute__((always_inline)) int test_and_set_bit (int nr, volatile void *addr) { __u32 bit, old, new; volatile __u32 *m; m = (volatile __u32 *) addr + (nr >> 5); bit = 1 << (nr & 31); do { ; old = *m; new = old | bit; } while (({ __u64 _o_, _r_; switch (sizeof(*(m))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (long) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } switch (sizeof(*(m))) { case 1: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg1.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u8 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 2: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg2.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u16 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 4: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 8: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg8.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u64 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; default: _r_ = ia64_cmpxchg_called_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old); return (old & bit) != 0; } # 182 "linux-2.6.16.6/include/asm/bitops.h" static __inline__ __attribute__((always_inline)) int __test_and_set_bit (int nr, volatile void *addr) { __u32 *p = (__u32 *) addr + (nr >> 5); __u32 m = 1 << (nr & 31); int oldbitset = (*p & m) != 0; *p |= m; return oldbitset; } # 201 "linux-2.6.16.6/include/asm/bitops.h" static __inline__ __attribute__((always_inline)) int test_and_clear_bit (int nr, volatile void *addr) { __u32 mask, old, new; volatile __u32 *m; m = (volatile __u32 *) addr + (nr >> 5); mask = ~(1 << (nr & 31)); do { ; old = *m; new = old & mask; } while (({ __u64 _o_, _r_; switch (sizeof(*(m))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (long) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } switch (sizeof(*(m))) { case 1: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg1.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u8 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 2: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg2.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u16 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 4: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 8: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg8.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u64 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; default: _r_ = ia64_cmpxchg_called_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old); return (old & ~mask) != 0; } # 227 "linux-2.6.16.6/include/asm/bitops.h" static __inline__ __attribute__((always_inline)) int __test_and_clear_bit(int nr, volatile void * addr) { __u32 *p = (__u32 *) addr + (nr >> 5); __u32 m = 1 << (nr & 31); int oldbitset = *p & m; *p &= ~m; return oldbitset; } # 246 "linux-2.6.16.6/include/asm/bitops.h" static __inline__ __attribute__((always_inline)) int test_and_change_bit (int nr, volatile void *addr) { __u32 bit, old, new; volatile __u32 *m; m = (volatile __u32 *) addr + (nr >> 5); bit = (1 << (nr & 31)); do { ; old = *m; new = old ^ bit; } while (({ __u64 _o_, _r_; switch (sizeof(*(m))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (long) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } switch (sizeof(*(m))) { case 1: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg1.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u8 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 2: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg2.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u16 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 4: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 8: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg8.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u64 *) (m)), "r"((new)) : "memory"); ia64_intri_res; }); break; default: _r_ = ia64_cmpxchg_called_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old); return (old & bit) != 0; } static __inline__ __attribute__((always_inline)) int __test_and_change_bit (int nr, void *addr) { __u32 old, bit = (1 << (nr & 31)); __u32 *m = (__u32 *) addr + (nr >> 5); old = *m; *m = old ^ bit; return (old & bit) != 0; } static __inline__ __attribute__((always_inline)) int test_bit (int nr, const volatile void *addr) { return 1 & (((const volatile __u32 *) addr)[nr >> 5] >> (nr & 31)); } # 290 "linux-2.6.16.6/include/asm/bitops.h" static inline __attribute__((always_inline)) unsigned long ffz (unsigned long x) { unsigned long result; result = __builtin_popcountl(x & (~x - 1)); return result; } static __inline__ __attribute__((always_inline)) unsigned long __ffs (unsigned long x) { unsigned long result; result = __builtin_popcountl((x-1) & ~x); return result; } static inline __attribute__((always_inline)) unsigned long ia64_fls (unsigned long x) { long double d = x; long exp; exp = ({ long ia64_intri_res; asm ("getf.exp %0=%1" : "=r"(ia64_intri_res) : "f"(d)); ia64_intri_res; }); return exp - 0xffff; } static inline __attribute__((always_inline)) int fls (int t) { unsigned long x = t & 0xffffffffu; if (!x) return 0; x |= x >> 1; x |= x >> 2; x |= x >> 4; x |= x >> 8; x |= x >> 16; return __builtin_popcountl(x); } # 362 "linux-2.6.16.6/include/asm/bitops.h" static __inline__ __attribute__((always_inline)) unsigned long hweight64 (unsigned long x) { unsigned long result; result = __builtin_popcountl(x); return result; } extern int __find_next_zero_bit (const void *addr, unsigned long size, unsigned long offset); extern int __find_next_bit(const void *addr, unsigned long size, unsigned long offset); # 412 "linux-2.6.16.6/include/asm/bitops.h" static inline __attribute__((always_inline)) int sched_find_first_bit (unsigned long *b) { if (__builtin_expect(!!(b[0]), 0)) return __ffs(b[0]); if (__builtin_expect(!!(b[1]), 0)) return 64 + __ffs(b[1]); return __ffs(b[2]) + 128; } # 78 "linux-2.6.16.6/include/linux/bitops.h" 2 static inline __attribute__((always_inline)) int generic_fls64(__u64 x) { __u32 h = x >> 32; if (h) return fls(h) + 32; return fls(x); } static __inline__ __attribute__((always_inline)) int get_bitmask_order(unsigned int count) { int order; order = fls(count); return order; } static __inline__ __attribute__((always_inline)) int get_count_order(unsigned int count) { int order; order = fls(count) - 1; if (count & (count - 1)) order++; return order; } static inline __attribute__((always_inline)) unsigned int generic_hweight32(unsigned int w) { unsigned int res = (w & 0x55555555) + ((w >> 1) & 0x55555555); res = (res & 0x33333333) + ((res >> 2) & 0x33333333); res = (res & 0x0F0F0F0F) + ((res >> 4) & 0x0F0F0F0F); res = (res & 0x00FF00FF) + ((res >> 8) & 0x00FF00FF); return (res & 0x0000FFFF) + ((res >> 16) & 0x0000FFFF); } static inline __attribute__((always_inline)) unsigned int generic_hweight16(unsigned int w) { unsigned int res = (w & 0x5555) + ((w >> 1) & 0x5555); res = (res & 0x3333) + ((res >> 2) & 0x3333); res = (res & 0x0F0F) + ((res >> 4) & 0x0F0F); return (res & 0x00FF) + ((res >> 8) & 0x00FF); } static inline __attribute__((always_inline)) unsigned int generic_hweight8(unsigned int w) { unsigned int res = (w & 0x55) + ((w >> 1) & 0x55); res = (res & 0x33) + ((res >> 2) & 0x33); return (res & 0x0F) + ((res >> 4) & 0x0F); } static inline __attribute__((always_inline)) unsigned long generic_hweight64(__u64 w) { u64 res; res = (w & 0x5555555555555555ul) + ((w >> 1) & 0x5555555555555555ul); res = (res & 0x3333333333333333ul) + ((res >> 2) & 0x3333333333333333ul); res = (res & 0x0F0F0F0F0F0F0F0Ful) + ((res >> 4) & 0x0F0F0F0F0F0F0F0Ful); res = (res & 0x00FF00FF00FF00FFul) + ((res >> 8) & 0x00FF00FF00FF00FFul); res = (res & 0x0000FFFF0000FFFFul) + ((res >> 16) & 0x0000FFFF0000FFFFul); return (res & 0x00000000FFFFFFFFul) + ((res >> 32) & 0x00000000FFFFFFFFul); } static inline __attribute__((always_inline)) unsigned long hweight_long(unsigned long w) { return sizeof(w) == 4 ? generic_hweight32(w) : generic_hweight64(w); } static inline __attribute__((always_inline)) __u32 rol32(__u32 word, unsigned int shift) { return (word << shift) | (word >> (32 - shift)); } static inline __attribute__((always_inline)) __u32 ror32(__u32 word, unsigned int shift) { return (word >> shift) | (word << (32 - shift)); } # 21 "linux-2.6.16.6/include/linux/thread_info.h" 2 # 1 "linux-2.6.16.6/include/asm/thread_info.h" 1 # 9 "linux-2.6.16.6/include/asm/thread_info.h" # 1 "linux-2.6.16.6/include/asm/asm-offsets.h" 1 # 10 "linux-2.6.16.6/include/asm/thread_info.h" 2 # 1 "linux-2.6.16.6/include/asm/processor.h" 1 # 19 "linux-2.6.16.6/include/asm/processor.h" # 1 "linux-2.6.16.6/include/asm/kregs.h" 1 # 20 "linux-2.6.16.6/include/asm/processor.h" 2 # 1 "linux-2.6.16.6/include/asm/ptrace.h" 1 # 59 "linux-2.6.16.6/include/asm/ptrace.h" # 1 "linux-2.6.16.6/include/asm/fpu.h" 1 # 57 "linux-2.6.16.6/include/asm/fpu.h" struct ia64_fpreg { union { unsigned long bits[2]; long double __dummy; } u; }; # 60 "linux-2.6.16.6/include/asm/ptrace.h" 2 # 85 "linux-2.6.16.6/include/asm/ptrace.h" # 1 "linux-2.6.16.6/include/asm/current.h" 1 # 86 "linux-2.6.16.6/include/asm/ptrace.h" 2 # 1 "linux-2.6.16.6/include/asm/page.h" 1 # 69 "linux-2.6.16.6/include/asm/page.h" extern void clear_page (void *page); extern void copy_page (void *to, void *from); # 102 "linux-2.6.16.6/include/asm/page.h" extern int ia64_pfn_valid (unsigned long pfn); # 112 "linux-2.6.16.6/include/asm/page.h" extern struct page *vmem_map; extern unsigned long min_low_pfn; extern unsigned long max_low_pfn; # 124 "linux-2.6.16.6/include/asm/page.h" typedef union ia64_va { struct { unsigned long off : 61; unsigned long reg : 3; } f; unsigned long l; void *p; } ia64_va; # 152 "linux-2.6.16.6/include/asm/page.h" extern unsigned int hpage_shift; static __inline__ __attribute__((always_inline)) int get_order (unsigned long size) { long double d = size - 1; long order; order = ({ long ia64_intri_res; asm ("getf.exp %0=%1" : "=r"(ia64_intri_res) : "f"(d)); ia64_intri_res; }); order = order - 14 - 0xffff + 1; if (order < 0) order = 0; return order; } # 175 "linux-2.6.16.6/include/asm/page.h" typedef struct { unsigned long pte; } pte_t; typedef struct { unsigned long pmd; } pmd_t; typedef struct { unsigned long pud; } pud_t; typedef struct { unsigned long pgd; } pgd_t; typedef struct { unsigned long pgprot; } pgprot_t; # 87 "linux-2.6.16.6/include/asm/ptrace.h" 2 # 100 "linux-2.6.16.6/include/asm/ptrace.h" struct pt_regs { unsigned long b6; unsigned long b7; unsigned long ar_csd; unsigned long ar_ssd; unsigned long r8; unsigned long r9; unsigned long r10; unsigned long r11; unsigned long cr_ipsr; unsigned long cr_iip; unsigned long cr_ifs; unsigned long ar_unat; unsigned long ar_pfs; unsigned long ar_rsc; unsigned long ar_rnat; unsigned long ar_bspstore; unsigned long pr; unsigned long b0; unsigned long loadrs; unsigned long r1; unsigned long r12; unsigned long r13; unsigned long ar_fpsr; unsigned long r15; unsigned long r14; unsigned long r2; unsigned long r3; unsigned long r16; unsigned long r17; unsigned long r18; unsigned long r19; unsigned long r20; unsigned long r21; unsigned long r22; unsigned long r23; unsigned long r24; unsigned long r25; unsigned long r26; unsigned long r27; unsigned long r28; unsigned long r29; unsigned long r30; unsigned long r31; unsigned long ar_ccv; struct ia64_fpreg f6; struct ia64_fpreg f7; struct ia64_fpreg f8; struct ia64_fpreg f9; struct ia64_fpreg f10; struct ia64_fpreg f11; }; struct switch_stack { unsigned long caller_unat; unsigned long ar_fpsr; struct ia64_fpreg f2; struct ia64_fpreg f3; struct ia64_fpreg f4; struct ia64_fpreg f5; struct ia64_fpreg f12; struct ia64_fpreg f13; struct ia64_fpreg f14; struct ia64_fpreg f15; struct ia64_fpreg f16; struct ia64_fpreg f17; struct ia64_fpreg f18; struct ia64_fpreg f19; struct ia64_fpreg f20; struct ia64_fpreg f21; struct ia64_fpreg f22; struct ia64_fpreg f23; struct ia64_fpreg f24; struct ia64_fpreg f25; struct ia64_fpreg f26; struct ia64_fpreg f27; struct ia64_fpreg f28; struct ia64_fpreg f29; struct ia64_fpreg f30; struct ia64_fpreg f31; unsigned long r4; unsigned long r5; unsigned long r6; unsigned long r7; unsigned long b0; unsigned long b1; unsigned long b2; unsigned long b3; unsigned long b4; unsigned long b5; unsigned long ar_pfs; unsigned long ar_lc; unsigned long ar_unat; unsigned long ar_rnat; unsigned long ar_bspstore; unsigned long pr; }; # 276 "linux-2.6.16.6/include/asm/ptrace.h" struct task_struct; struct unw_frame_info; extern void show_regs (struct pt_regs *); extern void ia64_do_show_stack (struct unw_frame_info *, void *); extern unsigned long ia64_get_user_rbs_end (struct task_struct *, struct pt_regs *, unsigned long *); extern long ia64_peek (struct task_struct *, struct switch_stack *, unsigned long, unsigned long, long *); extern long ia64_poke (struct task_struct *, struct switch_stack *, unsigned long, unsigned long, long); extern void ia64_flush_fph (struct task_struct *); extern void ia64_sync_fph (struct task_struct *); extern long ia64_sync_user_rbs (struct task_struct *, struct switch_stack *, unsigned long, unsigned long); extern unsigned long ia64_get_scratch_nat_bits (struct pt_regs *pt, unsigned long scratch_unat); extern unsigned long ia64_put_scratch_nat_bits (struct pt_regs *pt, unsigned long nat); extern void ia64_increment_ip (struct pt_regs *pt); extern void ia64_decrement_ip (struct pt_regs *pt); struct pt_all_user_regs { unsigned long nat; unsigned long cr_iip; unsigned long cfm; unsigned long cr_ipsr; unsigned long pr; unsigned long gr[32]; unsigned long br[8]; unsigned long ar[128]; struct ia64_fpreg fr[128]; }; # 21 "linux-2.6.16.6/include/asm/processor.h" 2 # 1 "linux-2.6.16.6/include/asm/ustack.h" 1 # 22 "linux-2.6.16.6/include/asm/processor.h" 2 # 72 "linux-2.6.16.6/include/asm/processor.h" # 1 "linux-2.6.16.6/include/linux/cache.h" 1 # 1 "linux-2.6.16.6/include/linux/kernel.h" 1 # 10 "linux-2.6.16.6/include/linux/kernel.h" # 1 "/usr/lib/gcc/ia64-suse-linux/4.1.2/include/stdarg.h" 1 3 4 # 43 "/usr/lib/gcc/ia64-suse-linux/4.1.2/include/stdarg.h" 3 4 typedef __builtin_va_list __gnuc_va_list; # 105 "/usr/lib/gcc/ia64-suse-linux/4.1.2/include/stdarg.h" 3 4 typedef __gnuc_va_list va_list; # 11 "linux-2.6.16.6/include/linux/kernel.h" 2 # 1 "linux-2.6.16.6/include/linux/linkage.h" 1 # 1 "linux-2.6.16.6/include/asm/linkage.h" 1 # 6 "linux-2.6.16.6/include/linux/linkage.h" 2 # 12 "linux-2.6.16.6/include/linux/kernel.h" 2 # 1 "linux-2.6.16.6/include/asm/byteorder.h" 1 # 13 "linux-2.6.16.6/include/asm/byteorder.h" static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u64 __ia64_swab64 (__u64 x) { __u64 result; result = ({ __u64 ia64_intri_res; switch (11) { case 0: asm ("mux1 %0=%1,@brcst" : "=r" (ia64_intri_res) : "r" (x)); break; case 8: asm ("mux1 %0=%1,@mix" : "=r" (ia64_intri_res) : "r" (x)); break; case 9: asm ("mux1 %0=%1,@shuf" : "=r" (ia64_intri_res) : "r" (x)); break; case 10: asm ("mux1 %0=%1,@alt" : "=r" (ia64_intri_res) : "r" (x)); break; case 11: asm ("mux1 %0=%1,@rev" : "=r" (ia64_intri_res) : "r" (x)); break; } ia64_intri_res; }); return result; } static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u32 __ia64_swab32 (__u32 x) { return __ia64_swab64(x) >> 32; } static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u16 __ia64_swab16(__u16 x) { return __ia64_swab64(x) >> 48; } # 1 "linux-2.6.16.6/include/linux/byteorder/little_endian.h" 1 # 12 "linux-2.6.16.6/include/linux/byteorder/little_endian.h" # 1 "linux-2.6.16.6/include/linux/byteorder/swab.h" 1 # 133 "linux-2.6.16.6/include/linux/byteorder/swab.h" static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u16 __fswab16(__u16 x) { return __ia64_swab16(x); } static __inline__ __attribute__((always_inline)) __u16 __swab16p(const __u16 *x) { return __ia64_swab16(*(x)); } static __inline__ __attribute__((always_inline)) void __swab16s(__u16 *addr) { do { *(addr) = __ia64_swab16(*((addr))); } while (0); } static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u32 __fswab32(__u32 x) { return __ia64_swab32(x); } static __inline__ __attribute__((always_inline)) __u32 __swab32p(const __u32 *x) { return __ia64_swab32(*(x)); } static __inline__ __attribute__((always_inline)) void __swab32s(__u32 *addr) { do { *(addr) = __ia64_swab32(*((addr))); } while (0); } static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u64 __fswab64(__u64 x) { return __ia64_swab64(x); } static __inline__ __attribute__((always_inline)) __u64 __swab64p(const __u64 *x) { return __ia64_swab64(*(x)); } static __inline__ __attribute__((always_inline)) void __swab64s(__u64 *addr) { do { *(addr) = __ia64_swab64(*((addr))); } while (0); } # 13 "linux-2.6.16.6/include/linux/byteorder/little_endian.h" 2 # 43 "linux-2.6.16.6/include/linux/byteorder/little_endian.h" static inline __attribute__((always_inline)) __le64 __cpu_to_le64p(const __u64 *p) { return ( __le64)*p; } static inline __attribute__((always_inline)) __u64 __le64_to_cpup(const __le64 *p) { return ( __u64)*p; } static inline __attribute__((always_inline)) __le32 __cpu_to_le32p(const __u32 *p) { return ( __le32)*p; } static inline __attribute__((always_inline)) __u32 __le32_to_cpup(const __le32 *p) { return ( __u32)*p; } static inline __attribute__((always_inline)) __le16 __cpu_to_le16p(const __u16 *p) { return ( __le16)*p; } static inline __attribute__((always_inline)) __u16 __le16_to_cpup(const __le16 *p) { return ( __u16)*p; } static inline __attribute__((always_inline)) __be64 __cpu_to_be64p(const __u64 *p) { return ( __be64)__swab64p(p); } static inline __attribute__((always_inline)) __u64 __be64_to_cpup(const __be64 *p) { return __swab64p((__u64 *)p); } static inline __attribute__((always_inline)) __be32 __cpu_to_be32p(const __u32 *p) { return ( __be32)__swab32p(p); } static inline __attribute__((always_inline)) __u32 __be32_to_cpup(const __be32 *p) { return __swab32p((__u32 *)p); } static inline __attribute__((always_inline)) __be16 __cpu_to_be16p(const __u16 *p) { return ( __be16)__swab16p(p); } static inline __attribute__((always_inline)) __u16 __be16_to_cpup(const __be16 *p) { return __swab16p((__u16 *)p); } # 104 "linux-2.6.16.6/include/linux/byteorder/little_endian.h" # 1 "linux-2.6.16.6/include/linux/byteorder/generic.h" 1 # 154 "linux-2.6.16.6/include/linux/byteorder/generic.h" extern __u32 ntohl(__be32); extern __be32 htonl(__u32); extern __u16 ntohs(__be16); extern __be16 htons(__u16); # 105 "linux-2.6.16.6/include/linux/byteorder/little_endian.h" 2 # 41 "linux-2.6.16.6/include/asm/byteorder.h" 2 # 17 "linux-2.6.16.6/include/linux/kernel.h" 2 # 1 "linux-2.6.16.6/include/asm/bug.h" 1 # 12 "linux-2.6.16.6/include/asm/bug.h" # 1 "linux-2.6.16.6/include/asm-generic/bug.h" 1 # 13 "linux-2.6.16.6/include/asm/bug.h" 2 # 18 "linux-2.6.16.6/include/linux/kernel.h" 2 extern const char linux_banner[]; # 42 "linux-2.6.16.6/include/linux/kernel.h" extern int console_printk[]; struct completion; struct pt_regs; struct user; # 90 "linux-2.6.16.6/include/linux/kernel.h" extern struct notifier_block *panic_notifier_list; extern long (*panic_blink)(long time); void panic(const char * fmt, ...) __attribute__ ((noreturn, format (printf, 1, 2))); void do_exit(long error_code) __attribute__((noreturn)); void complete_and_exit(struct completion *, long) __attribute__((noreturn)); extern unsigned long simple_strtoul(const char *,char **,unsigned int); extern long simple_strtol(const char *,char **,unsigned int); extern unsigned long long simple_strtoull(const char *,char **,unsigned int); extern long long simple_strtoll(const char *,char **,unsigned int); extern int sprintf(char * buf, const char * fmt, ...) __attribute__ ((format (printf, 2, 3))); extern int vsprintf(char *buf, const char *, va_list) __attribute__ ((format (printf, 2, 0))); extern int snprintf(char * buf, size_t size, const char * fmt, ...) __attribute__ ((format (printf, 3, 4))); extern int vsnprintf(char *buf, size_t size, const char *fmt, va_list args) __attribute__ ((format (printf, 3, 0))); extern int scnprintf(char * buf, size_t size, const char * fmt, ...) __attribute__ ((format (printf, 3, 4))); extern int vscnprintf(char *buf, size_t size, const char *fmt, va_list args) __attribute__ ((format (printf, 3, 0))); extern int sscanf(const char *, const char *, ...) __attribute__ ((format (scanf, 2, 3))); extern int vsscanf(const char *, const char *, va_list) __attribute__ ((format (scanf, 2, 0))); extern int get_option(char **str, int *pint); extern char *get_options(const char *str, int nints, int *ints); extern unsigned long long memparse(char *ptr, char **retptr); extern int __kernel_text_address(unsigned long addr); extern int kernel_text_address(unsigned long addr); extern int session_of_pgrp(int pgrp); extern void dump_thread(struct pt_regs *regs, struct user *dump); __attribute__((syscall_linkage)) int vprintk(const char *fmt, va_list args) __attribute__ ((format (printf, 1, 0))); __attribute__((syscall_linkage)) int printk(const char * fmt, ...) __attribute__ ((format (printf, 1, 2))); # 144 "linux-2.6.16.6/include/linux/kernel.h" unsigned long int_sqrt(unsigned long); static inline __attribute__((always_inline)) int __attribute__((pure)) long_log2(unsigned long x) { int r = 0; for (x >>= 1; x > 0; x >>= 1) r++; return r; } static inline __attribute__((always_inline)) unsigned long __attribute__((__const__)) roundup_pow_of_two(unsigned long x) { return (1UL << fls(x - 1)); } extern int printk_ratelimit(void); extern int __printk_ratelimit(int ratelimit_jiffies, int ratelimit_burst); static inline __attribute__((always_inline)) void console_silent(void) { (console_printk[0]) = 0; } static inline __attribute__((always_inline)) void console_verbose(void) { if ((console_printk[0])) (console_printk[0]) = 15; } extern void bust_spinlocks(int yes); extern int oops_in_progress; extern int panic_timeout; extern int panic_on_oops; extern int tainted; extern const char *print_tainted(void); extern void add_taint(unsigned); extern enum system_states { SYSTEM_BOOTING, SYSTEM_RUNNING, SYSTEM_HALT, SYSTEM_POWER_OFF, SYSTEM_RESTART, SYSTEM_SUSPEND_DISK, } system_state; # 198 "linux-2.6.16.6/include/linux/kernel.h" extern void dump_stack(void); # 309 "linux-2.6.16.6/include/linux/kernel.h" struct sysinfo { long uptime; unsigned long loads[3]; unsigned long totalram; unsigned long freeram; unsigned long sharedram; unsigned long bufferram; unsigned long totalswap; unsigned long freeswap; unsigned short procs; unsigned short pad; unsigned long totalhigh; unsigned long freehigh; unsigned int mem_unit; char _f[20-2*sizeof(long)-sizeof(int)]; }; # 5 "linux-2.6.16.6/include/linux/cache.h" 2 # 1 "linux-2.6.16.6/include/asm/cache.h" 1 # 7 "linux-2.6.16.6/include/linux/cache.h" 2 # 73 "linux-2.6.16.6/include/asm/processor.h" 2 # 1 "linux-2.6.16.6/include/linux/threads.h" 1 # 75 "linux-2.6.16.6/include/asm/processor.h" 2 # 1 "linux-2.6.16.6/include/asm/percpu.h" 1 # 39 "linux-2.6.16.6/include/asm/percpu.h" extern unsigned long __per_cpu_offset[64]; extern __typeof__(unsigned long) per_cpu__local_per_cpu_offset; extern void percpu_modcopy(void *pcpudst, const void *src, unsigned long size); extern void setup_per_cpu_areas (void); extern void *per_cpu_init(void); # 80 "linux-2.6.16.6/include/asm/processor.h" 2 # 1 "linux-2.6.16.6/include/asm/rse.h" 1 # 14 "linux-2.6.16.6/include/asm/rse.h" static __inline__ __attribute__((always_inline)) unsigned long ia64_rse_slot_num (unsigned long *addr) { return (((unsigned long) addr) >> 3) & 0x3f; } static __inline__ __attribute__((always_inline)) unsigned long ia64_rse_is_rnat_slot (unsigned long *addr) { return ia64_rse_slot_num(addr) == 0x3f; } static __inline__ __attribute__((always_inline)) unsigned long * ia64_rse_rnat_addr (unsigned long *slot_addr) { return (unsigned long *) ((unsigned long) slot_addr | (0x3f << 3)); } static __inline__ __attribute__((always_inline)) unsigned long ia64_rse_num_regs (unsigned long *bspstore, unsigned long *bsp) { unsigned long slots = (bsp - bspstore); return slots - (ia64_rse_slot_num(bspstore) + slots)/0x40; } static __inline__ __attribute__((always_inline)) unsigned long * ia64_rse_skip_regs (unsigned long *addr, long num_regs) { long delta = ia64_rse_slot_num(addr) + num_regs; if (num_regs < 0) delta -= 0x3e; return addr + num_regs + delta/0x3f; } # 81 "linux-2.6.16.6/include/asm/processor.h" 2 # 1 "linux-2.6.16.6/include/asm/unwind.h" 1 # 16 "linux-2.6.16.6/include/asm/unwind.h" struct task_struct; struct switch_stack; enum unw_application_register { UNW_AR_BSP, UNW_AR_BSPSTORE, UNW_AR_PFS, UNW_AR_RNAT, UNW_AR_UNAT, UNW_AR_LC, UNW_AR_EC, UNW_AR_FPSR, UNW_AR_RSC, UNW_AR_CCV, UNW_AR_CSD, UNW_AR_SSD }; struct unw_stack { unsigned long limit; unsigned long top; }; # 51 "linux-2.6.16.6/include/asm/unwind.h" struct unw_frame_info { struct unw_stack regstk; struct unw_stack memstk; unsigned int flags; short hint; short prev_script; unsigned long bsp; unsigned long sp; unsigned long psp; unsigned long ip; unsigned long pr; unsigned long *cfm_loc; unsigned long pt; struct task_struct *task; struct switch_stack *sw; unsigned long *bsp_loc; unsigned long *bspstore_loc; unsigned long *pfs_loc; unsigned long *rnat_loc; unsigned long *rp_loc; unsigned long *pri_unat_loc; unsigned long *unat_loc; unsigned long *pr_loc; unsigned long *lc_loc; unsigned long *fpsr_loc; struct unw_ireg { unsigned long *loc; struct unw_ireg_nat { long type : 3; signed long off : 61; } nat; } r4, r5, r6, r7; unsigned long *b1_loc, *b2_loc, *b3_loc, *b4_loc, *b5_loc; struct ia64_fpreg *f2_loc, *f3_loc, *f4_loc, *f5_loc, *fr_loc[16]; }; struct unw_table_entry { u64 start_offset; u64 end_offset; u64 info_offset; }; extern void unw_init (void); extern void *unw_add_unwind_table (const char *name, unsigned long segment_base, unsigned long gp, const void *table_start, const void *table_end); extern void unw_remove_unwind_table (void *handle); extern void unw_init_from_blocked_task (struct unw_frame_info *info, struct task_struct *t); extern void unw_init_frame_info (struct unw_frame_info *info, struct task_struct *t, struct switch_stack *sw); extern void unw_init_running (void (*callback)(struct unw_frame_info *info, void *arg), void *arg); extern int unw_unwind (struct unw_frame_info *info); extern int unw_unwind_to_user (struct unw_frame_info *info); static inline __attribute__((always_inline)) int unw_get_ip (struct unw_frame_info *info, unsigned long *valp) { *valp = (info)->ip; return 0; } static inline __attribute__((always_inline)) int unw_get_sp (struct unw_frame_info *info, unsigned long *valp) { *valp = (info)->sp; return 0; } static inline __attribute__((always_inline)) int unw_get_psp (struct unw_frame_info *info, unsigned long *valp) { *valp = (info)->psp; return 0; } static inline __attribute__((always_inline)) int unw_get_bsp (struct unw_frame_info *info, unsigned long *valp) { *valp = (info)->bsp; return 0; } static inline __attribute__((always_inline)) int unw_get_cfm (struct unw_frame_info *info, unsigned long *valp) { *valp = *(info)->cfm_loc; return 0; } static inline __attribute__((always_inline)) int unw_set_cfm (struct unw_frame_info *info, unsigned long val) { *(info)->cfm_loc = val; return 0; } static inline __attribute__((always_inline)) int unw_get_rp (struct unw_frame_info *info, unsigned long *val) { if (!info->rp_loc) return -1; *val = *info->rp_loc; return 0; } extern int unw_access_gr (struct unw_frame_info *, int, unsigned long *, char *, int); extern int unw_access_br (struct unw_frame_info *, int, unsigned long *, int); extern int unw_access_fr (struct unw_frame_info *, int, struct ia64_fpreg *, int); extern int unw_access_ar (struct unw_frame_info *, int, unsigned long *, int); extern int unw_access_pr (struct unw_frame_info *, unsigned long *, int); static inline __attribute__((always_inline)) int unw_set_gr (struct unw_frame_info *i, int n, unsigned long v, char nat) { return unw_access_gr(i, n, &v, &nat, 1); } static inline __attribute__((always_inline)) int unw_set_br (struct unw_frame_info *i, int n, unsigned long v) { return unw_access_br(i, n, &v, 1); } static inline __attribute__((always_inline)) int unw_set_fr (struct unw_frame_info *i, int n, struct ia64_fpreg v) { return unw_access_fr(i, n, &v, 1); } static inline __attribute__((always_inline)) int unw_set_ar (struct unw_frame_info *i, int n, unsigned long v) { return unw_access_ar(i, n, &v, 1); } static inline __attribute__((always_inline)) int unw_set_pr (struct unw_frame_info *i, unsigned long v) { return unw_access_pr(i, &v, 1); } # 82 "linux-2.6.16.6/include/asm/processor.h" 2 # 1 "linux-2.6.16.6/include/asm/atomic.h" 1 # 23 "linux-2.6.16.6/include/asm/atomic.h" typedef struct { volatile __s32 counter; } atomic_t; typedef struct { volatile __s64 counter; } atomic64_t; # 35 "linux-2.6.16.6/include/asm/atomic.h" static __inline__ __attribute__((always_inline)) int ia64_atomic_add (int i, atomic_t *v) { __s32 old, new; do { ; old = ((v)->counter); new = old + i; } while (({ __u64 _o_, _r_; switch (sizeof(atomic_t)) { case 1: _o_ = (__u8 ) (long) (old); break; case 2: _o_ = (__u16) (long) (old); break; case 4: _o_ = (__u32) (long) (old); break; case 8: _o_ = (__u64) (long) (old); break; default: break; } switch (sizeof(atomic_t)) { case 1: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg1.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u8 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; case 2: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg2.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u16 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; case 4: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; case 8: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg8.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u64 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; default: _r_ = ia64_cmpxchg_called_with_bad_pointer(); break; } (__typeof__(old)) _r_; }) != old); return new; } static __inline__ __attribute__((always_inline)) int ia64_atomic64_add (__s64 i, atomic64_t *v) { __s64 old, new; do { ; old = ((v)->counter); new = old + i; } while (({ __u64 _o_, _r_; switch (sizeof(atomic64_t)) { case 1: _o_ = (__u8 ) (long) (old); break; case 2: _o_ = (__u16) (long) (old); break; case 4: _o_ = (__u32) (long) (old); break; case 8: _o_ = (__u64) (long) (old); break; default: break; } switch (sizeof(atomic64_t)) { case 1: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg1.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u8 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; case 2: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg2.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u16 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; case 4: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; case 8: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg8.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u64 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; default: _r_ = ia64_cmpxchg_called_with_bad_pointer(); break; } (__typeof__(old)) _r_; }) != old); return new; } static __inline__ __attribute__((always_inline)) int ia64_atomic_sub (int i, atomic_t *v) { __s32 old, new; do { ; old = ((v)->counter); new = old - i; } while (({ __u64 _o_, _r_; switch (sizeof(atomic_t)) { case 1: _o_ = (__u8 ) (long) (old); break; case 2: _o_ = (__u16) (long) (old); break; case 4: _o_ = (__u32) (long) (old); break; case 8: _o_ = (__u64) (long) (old); break; default: break; } switch (sizeof(atomic_t)) { case 1: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg1.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u8 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; case 2: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg2.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u16 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; case 4: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; case 8: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg8.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u64 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; default: _r_ = ia64_cmpxchg_called_with_bad_pointer(); break; } (__typeof__(old)) _r_; }) != old); return new; } static __inline__ __attribute__((always_inline)) int ia64_atomic64_sub (__s64 i, atomic64_t *v) { __s64 old, new; do { ; old = ((v)->counter); new = old - i; } while (({ __u64 _o_, _r_; switch (sizeof(atomic64_t)) { case 1: _o_ = (__u8 ) (long) (old); break; case 2: _o_ = (__u16) (long) (old); break; case 4: _o_ = (__u32) (long) (old); break; case 8: _o_ = (__u64) (long) (old); break; default: break; } switch (sizeof(atomic64_t)) { case 1: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg1.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u8 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; case 2: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg2.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u16 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; case 4: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; case 8: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg8.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u64 *) v), "r"(new) : "memory"); ia64_intri_res; }); break; default: _r_ = ia64_cmpxchg_called_with_bad_pointer(); break; } (__typeof__(old)) _r_; }) != old); return new; } # 132 "linux-2.6.16.6/include/asm/atomic.h" static __inline__ __attribute__((always_inline)) int atomic_add_negative (int i, atomic_t *v) { return ({ int __ia64_aar_i = (i); (__builtin_constant_p(i) && ( (__ia64_aar_i == 1) || (__ia64_aar_i == 4) || (__ia64_aar_i == 8) || (__ia64_aar_i == 16) || (__ia64_aar_i == -1) || (__ia64_aar_i == -4) || (__ia64_aar_i == -8) || (__ia64_aar_i == -16))) ? (({ __u64 _tmp; volatile __typeof__(*(&(v)->counter)) *_v = (&(v)->counter); if ((__ia64_aar_i) == -16) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -8) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -4) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -1) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 1) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 4) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 8) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 16) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&(v)->counter))) (_tmp); }) + (__ia64_aar_i)) : ia64_atomic_add(__ia64_aar_i, v); }) < 0; } static __inline__ __attribute__((always_inline)) int atomic64_add_negative (__s64 i, atomic64_t *v) { return ({ long __ia64_aar_i = (i); (__builtin_constant_p(i) && ( (__ia64_aar_i == 1) || (__ia64_aar_i == 4) || (__ia64_aar_i == 8) || (__ia64_aar_i == 16) || (__ia64_aar_i == -1) || (__ia64_aar_i == -4) || (__ia64_aar_i == -8) || (__ia64_aar_i == -16))) ? (({ __u64 _tmp; volatile __typeof__(*(&(v)->counter)) *_v = (&(v)->counter); if ((__ia64_aar_i) == -16) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -8) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -4) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -1) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 1) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 4) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 8) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 16) ({ switch (sizeof(*(&(v)->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&(v)->counter))) (_tmp); }) + (__ia64_aar_i)) : ia64_atomic64_add(__ia64_aar_i, v); }) < 0; } # 196 "linux-2.6.16.6/include/asm/atomic.h" # 1 "linux-2.6.16.6/include/asm-generic/atomic.h" 1 # 23 "linux-2.6.16.6/include/asm-generic/atomic.h" typedef atomic64_t atomic_long_t; static inline __attribute__((always_inline)) long atomic_long_read(atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; return (long)((v)->counter); } static inline __attribute__((always_inline)) void atomic_long_set(atomic_long_t *l, long i) { atomic64_t *v = (atomic64_t *)l; (((v)->counter) = (i)); } static inline __attribute__((always_inline)) void atomic_long_inc(atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; ({ long __ia64_aar_i = ((1)); (__builtin_constant_p((1)) && ( (__ia64_aar_i == 1) || (__ia64_aar_i == 4) || (__ia64_aar_i == 8) || (__ia64_aar_i == 16) || (__ia64_aar_i == -1) || (__ia64_aar_i == -4) || (__ia64_aar_i == -8) || (__ia64_aar_i == -16))) ? (({ __u64 _tmp; volatile __typeof__(*(&(((v)))->counter)) *_v = (&(((v)))->counter); if ((__ia64_aar_i) == -16) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -8) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -4) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -1) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 1) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 4) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 8) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 16) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&(((v)))->counter))) (_tmp); }) + (__ia64_aar_i)) : ia64_atomic64_add(__ia64_aar_i, ((v))); }); } static inline __attribute__((always_inline)) void atomic_long_dec(atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; ({ long __ia64_asr_i = ((1)); (__builtin_constant_p((1)) && ( (__ia64_asr_i == 1) || (__ia64_asr_i == 4) || (__ia64_asr_i == 8) || (__ia64_asr_i == 16) || (__ia64_asr_i == -1) || (__ia64_asr_i == -4) || (__ia64_asr_i == -8) || (__ia64_asr_i == -16))) ? (({ __u64 _tmp; volatile __typeof__(*(&(((v)))->counter)) *_v = (&(((v)))->counter); if ((-__ia64_asr_i) == -16) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == -8) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == -4) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == -1) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 1) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 4) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 8) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 16) ({ switch (sizeof(*(&(((v)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&(((v)))->counter))) (_tmp); }) + (-__ia64_asr_i)) : ia64_atomic64_sub(__ia64_asr_i, ((v))); }); } static inline __attribute__((always_inline)) void atomic_long_add(long i, atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; ({ long __ia64_aar_i = ((i)); (__builtin_constant_p((i)) && ( (__ia64_aar_i == 1) || (__ia64_aar_i == 4) || (__ia64_aar_i == 8) || (__ia64_aar_i == 16) || (__ia64_aar_i == -1) || (__ia64_aar_i == -4) || (__ia64_aar_i == -8) || (__ia64_aar_i == -16))) ? (({ __u64 _tmp; volatile __typeof__(*(&((v))->counter)) *_v = (&((v))->counter); if ((__ia64_aar_i) == -16) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -8) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -4) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -1) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 1) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 4) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 8) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 16) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&((v))->counter))) (_tmp); }) + (__ia64_aar_i)) : ia64_atomic64_add(__ia64_aar_i, (v)); }); } static inline __attribute__((always_inline)) void atomic_long_sub(long i, atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; ({ long __ia64_asr_i = ((i)); (__builtin_constant_p((i)) && ( (__ia64_asr_i == 1) || (__ia64_asr_i == 4) || (__ia64_asr_i == 8) || (__ia64_asr_i == 16) || (__ia64_asr_i == -1) || (__ia64_asr_i == -4) || (__ia64_asr_i == -8) || (__ia64_asr_i == -16))) ? (({ __u64 _tmp; volatile __typeof__(*(&((v))->counter)) *_v = (&((v))->counter); if ((-__ia64_asr_i) == -16) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == -8) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == -4) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == -1) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 1) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 4) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 8) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 16) ({ switch (sizeof(*(&((v))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&((v))->counter))) (_tmp); }) + (-__ia64_asr_i)) : ia64_atomic64_sub(__ia64_asr_i, (v)); }); } # 197 "linux-2.6.16.6/include/asm/atomic.h" 2 # 83 "linux-2.6.16.6/include/asm/processor.h" 2 # 1 "linux-2.6.16.6/include/asm/nodedata.h" 1 # 15 "linux-2.6.16.6/include/asm/nodedata.h" # 1 "linux-2.6.16.6/include/linux/numa.h" 1 # 1 "linux-2.6.16.6/include/asm/numnodes.h" 1 # 8 "linux-2.6.16.6/include/linux/numa.h" 2 # 16 "linux-2.6.16.6/include/asm/nodedata.h" 2 # 1 "linux-2.6.16.6/include/asm/mmzone.h" 1 # 16 "linux-2.6.16.6/include/asm/mmzone.h" # 1 "linux-2.6.16.6/include/asm/meminit.h" 1 # 25 "linux-2.6.16.6/include/asm/meminit.h" struct rsvd_region { unsigned long start; unsigned long end; }; extern struct rsvd_region rsvd_region[6 + 1]; extern int num_rsvd_regions; extern void find_memory (void); extern void reserve_memory (void); extern void find_initrd (void); extern int filter_rsvd_memory (unsigned long start, unsigned long end, void *arg); extern void efi_memmap_init(unsigned long *, unsigned long *); # 47 "linux-2.6.16.6/include/asm/meminit.h" extern void call_pernode_memory (unsigned long start, unsigned long len, void *func); # 56 "linux-2.6.16.6/include/asm/meminit.h" extern unsigned long vmalloc_end; extern struct page *vmem_map; extern int find_largest_hole (u64 start, u64 end, void *arg); extern int create_mem_map_page_table (u64 start, u64 end, void *arg); # 17 "linux-2.6.16.6/include/asm/mmzone.h" 2 static inline __attribute__((always_inline)) int pfn_to_nid(unsigned long pfn) { extern int paddr_to_nid(unsigned long); int nid = paddr_to_nid(pfn << 14); if (nid < 0) return 0; else return nid; } extern int early_pfn_to_nid(unsigned long pfn); # 19 "linux-2.6.16.6/include/asm/nodedata.h" 2 struct pglist_data; struct ia64_node_data { short active_cpu_count; short node; struct pglist_data *pg_data_ptrs[(1 << 8)]; }; # 85 "linux-2.6.16.6/include/asm/processor.h" 2 struct ia64_psr { __u64 reserved0 : 1; __u64 be : 1; __u64 up : 1; __u64 ac : 1; __u64 mfl : 1; __u64 mfh : 1; __u64 reserved1 : 7; __u64 ic : 1; __u64 i : 1; __u64 pk : 1; __u64 reserved2 : 1; __u64 dt : 1; __u64 dfl : 1; __u64 dfh : 1; __u64 sp : 1; __u64 pp : 1; __u64 di : 1; __u64 si : 1; __u64 db : 1; __u64 lp : 1; __u64 tb : 1; __u64 rt : 1; __u64 reserved3 : 4; __u64 cpl : 2; __u64 is : 1; __u64 mc : 1; __u64 it : 1; __u64 id : 1; __u64 da : 1; __u64 dd : 1; __u64 ss : 1; __u64 ri : 2; __u64 ed : 1; __u64 bn : 1; __u64 reserved4 : 19; }; struct cpuinfo_ia64 { __u32 softirq_pending; __u64 itm_delta; __u64 itm_next; __u64 nsec_per_cyc; __u64 unimpl_va_mask; __u64 unimpl_pa_mask; __u64 itc_freq; __u64 proc_freq; __u64 cyc_per_usec; __u64 ptce_base; __u32 ptce_count[2]; __u32 ptce_stride[2]; struct task_struct *ksoftirqd; __u64 loops_per_jiffy; int cpu; __u32 socket_id; __u16 core_id; __u16 thread_id; __u16 num_log; __u8 cores_per_socket; __u8 threads_per_core; __u64 ppn; __u64 features; __u8 number; __u8 revision; __u8 model; __u8 family; __u8 archrev; char vendor[16]; struct ia64_node_data *node_data; }; extern __typeof__(struct cpuinfo_ia64) per_cpu__cpu_info; # 183 "linux-2.6.16.6/include/asm/processor.h" extern void identify_cpu (struct cpuinfo_ia64 *); extern void print_cpu_info (struct cpuinfo_ia64 *); typedef struct { unsigned long seg; } mm_segment_t; # 215 "linux-2.6.16.6/include/asm/processor.h" struct desc_struct { unsigned int a, b; }; # 228 "linux-2.6.16.6/include/asm/processor.h" struct partial_page_list; struct thread_struct { __u32 flags; __u8 on_ustack; __u8 pad[3]; __u64 ksp; __u64 map_base; __u64 task_size; __u64 rbs_bot; int last_fph_cpu; __u64 eflag; __u64 fsr; __u64 fcr; __u64 fir; __u64 fdr; __u64 old_k1; __u64 old_iob; struct partial_page_list *ppl; struct desc_struct tls_array[3]; # 266 "linux-2.6.16.6/include/asm/processor.h" __u64 pmcs[64]; __u64 pmds[64]; void *pfm_context; unsigned long pfm_needs_checking; __u64 dbr[8]; __u64 ibr[8]; struct ia64_fpreg fph[96]; }; # 320 "linux-2.6.16.6/include/asm/processor.h" struct mm_struct; struct task_struct; # 347 "linux-2.6.16.6/include/asm/processor.h" extern pid_t kernel_thread (int (*fn)(void *), void *arg, unsigned long flags); extern unsigned long get_wchan (struct task_struct *p); # 362 "linux-2.6.16.6/include/asm/processor.h" extern void ia64_getreg_unknown_kr (void); extern void ia64_setreg_unknown_kr (void); # 427 "linux-2.6.16.6/include/asm/processor.h" extern void __ia64_init_fpu (void); extern void __ia64_save_fpu (struct ia64_fpreg *fph); extern void __ia64_load_fpu (struct ia64_fpreg *fph); extern void ia64_save_debug_regs (unsigned long *save_area); extern void ia64_load_debug_regs (unsigned long *save_area); extern void ia32_save_state (struct task_struct *task); extern void ia32_load_state (struct task_struct *task); static inline __attribute__((always_inline)) void ia64_init_fpu (void) { do { asm volatile ("rsm %0":: "i"(((((unsigned long)(1)) << 19))) : "memory"); asm volatile (";; srlz.d" ::: "memory");; } while (0); __ia64_init_fpu(); do { asm volatile ("ssm %0":: "i"(((((unsigned long)(1)) << 19))) : "memory"); asm volatile (";; srlz.d" ::: "memory");; } while (0); } static inline __attribute__((always_inline)) void ia64_save_fpu (struct ia64_fpreg *fph) { do { asm volatile ("rsm %0":: "i"(((((unsigned long)(1)) << 19))) : "memory"); asm volatile (";; srlz.d" ::: "memory");; } while (0); __ia64_save_fpu(fph); do { asm volatile ("ssm %0":: "i"(((((unsigned long)(1)) << 19))) : "memory"); asm volatile (";; srlz.d" ::: "memory");; } while (0); } static inline __attribute__((always_inline)) void ia64_load_fpu (struct ia64_fpreg *fph) { do { asm volatile ("rsm %0":: "i"(((((unsigned long)(1)) << 19))) : "memory"); asm volatile (";; srlz.d" ::: "memory");; } while (0); __ia64_load_fpu(fph); do { asm volatile ("ssm %0":: "i"(((((unsigned long)(1)) << 19))) : "memory"); asm volatile (";; srlz.d" ::: "memory");; } while (0); } static inline __attribute__((always_inline)) __u64 ia64_clear_ic (void) { __u64 psr; psr = ({ __u64 ia64_intri_res; switch (1019) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1019 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1019 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; }); asm volatile (";;"::); asm volatile ("rsm %0":: "i"(((((unsigned long)(1)) << 14) | (((unsigned long)(1)) << 13))) : "memory"); asm volatile (";; srlz.i ;;" ::: "memory"); return psr; } static inline __attribute__((always_inline)) void ia64_set_psr (__u64 psr) { asm volatile (";;"::); ({ switch (1019) { case 1019: asm volatile ("mov psr.l=%0" :: "r"(psr) : "memory"); break; case 3072 ... 3138: asm volatile ("mov ar%0=%1" :: "i" (1019 - 3072), "r"(psr): "memory"); break; case 4096 ... 4177: asm volatile ("mov cr%0=%1" :: "i" (1019 - 4096), "r"(psr): "memory" ); break; case 1036: asm volatile ("mov r12=%0" :: "r"(psr): "memory"); break; case 1025: asm volatile ("mov gp=%0" :: "r"(psr) : "memory"); break; default: ia64_bad_param_for_setreg(); break; } }); asm volatile (";; srlz.d" ::: "memory");; } static inline __attribute__((always_inline)) void ia64_itr (__u64 target_mask, __u64 tr_num, __u64 vmaddr, __u64 pte, __u64 log_page_size) { ({ switch (4117) { case 1019: asm volatile ("mov psr.l=%0" :: "r"((log_page_size << 2)) : "memory"); break; case 3072 ... 3138: asm volatile ("mov ar%0=%1" :: "i" (4117 - 3072), "r"((log_page_size << 2)): "memory"); break; case 4096 ... 4177: asm volatile ("mov cr%0=%1" :: "i" (4117 - 4096), "r"((log_page_size << 2)): "memory" ); break; case 1036: asm volatile ("mov r12=%0" :: "r"((log_page_size << 2)): "memory"); break; case 1025: asm volatile ("mov gp=%0" :: "r"((log_page_size << 2)) : "memory"); break; default: ia64_bad_param_for_setreg(); break; } }); ({ switch (4116) { case 1019: asm volatile ("mov psr.l=%0" :: "r"(vmaddr) : "memory"); break; case 3072 ... 3138: asm volatile ("mov ar%0=%1" :: "i" (4116 - 3072), "r"(vmaddr): "memory"); break; case 4096 ... 4177: asm volatile ("mov cr%0=%1" :: "i" (4116 - 4096), "r"(vmaddr): "memory" ); break; case 1036: asm volatile ("mov r12=%0" :: "r"(vmaddr): "memory"); break; case 1025: asm volatile ("mov gp=%0" :: "r"(vmaddr) : "memory"); break; default: ia64_bad_param_for_setreg(); break; } }); asm volatile (";;"::); if (target_mask & 0x1) asm volatile ("itr.i itr[%0]=%1" :: "r"(tr_num), "r"(pte) : "memory"); if (target_mask & 0x2) asm volatile ("itr.d dtr[%0]=%1" :: "r"(tr_num), "r"(pte) : "memory"); } static inline __attribute__((always_inline)) void ia64_itc (__u64 target_mask, __u64 vmaddr, __u64 pte, __u64 log_page_size) { ({ switch (4117) { case 1019: asm volatile ("mov psr.l=%0" :: "r"((log_page_size << 2)) : "memory"); break; case 3072 ... 3138: asm volatile ("mov ar%0=%1" :: "i" (4117 - 3072), "r"((log_page_size << 2)): "memory"); break; case 4096 ... 4177: asm volatile ("mov cr%0=%1" :: "i" (4117 - 4096), "r"((log_page_size << 2)): "memory" ); break; case 1036: asm volatile ("mov r12=%0" :: "r"((log_page_size << 2)): "memory"); break; case 1025: asm volatile ("mov gp=%0" :: "r"((log_page_size << 2)) : "memory"); break; default: ia64_bad_param_for_setreg(); break; } }); ({ switch (4116) { case 1019: asm volatile ("mov psr.l=%0" :: "r"(vmaddr) : "memory"); break; case 3072 ... 3138: asm volatile ("mov ar%0=%1" :: "i" (4116 - 3072), "r"(vmaddr): "memory"); break; case 4096 ... 4177: asm volatile ("mov cr%0=%1" :: "i" (4116 - 4096), "r"(vmaddr): "memory" ); break; case 1036: asm volatile ("mov r12=%0" :: "r"(vmaddr): "memory"); break; case 1025: asm volatile ("mov gp=%0" :: "r"(vmaddr) : "memory"); break; default: ia64_bad_param_for_setreg(); break; } }); asm volatile (";;"::); if (target_mask & 0x1) asm volatile ("itc.i %0;;" :: "r"(pte) : "memory"); if (target_mask & 0x2) asm volatile ("itc.d %0;;" :: "r"(pte) : "memory"); } static inline __attribute__((always_inline)) void ia64_ptr (__u64 target_mask, __u64 vmaddr, __u64 log_size) { if (target_mask & 0x1) asm volatile ("ptr.i %0,%1" :: "r"(vmaddr), "r"((log_size << 2)) : "memory"); if (target_mask & 0x2) asm volatile ("ptr.d %0,%1" :: "r"(vmaddr), "r"((log_size << 2)) : "memory"); } static inline __attribute__((always_inline)) void ia64_set_iva (void *ivt_addr) { ({ switch (4098) { case 1019: asm volatile ("mov psr.l=%0" :: "r"((__u64) ivt_addr) : "memory"); break; case 3072 ... 3138: asm volatile ("mov ar%0=%1" :: "i" (4098 - 3072), "r"((__u64) ivt_addr): "memory"); break; case 4096 ... 4177: asm volatile ("mov cr%0=%1" :: "i" (4098 - 4096), "r"((__u64) ivt_addr): "memory" ); break; case 1036: asm volatile ("mov r12=%0" :: "r"((__u64) ivt_addr): "memory"); break; case 1025: asm volatile ("mov gp=%0" :: "r"((__u64) ivt_addr) : "memory"); break; default: ia64_bad_param_for_setreg(); break; } }); asm volatile (";; srlz.i ;;" ::: "memory"); } static inline __attribute__((always_inline)) void ia64_set_pta (__u64 pta) { ({ switch (4104) { case 1019: asm volatile ("mov psr.l=%0" :: "r"(pta) : "memory"); break; case 3072 ... 3138: asm volatile ("mov ar%0=%1" :: "i" (4104 - 3072), "r"(pta): "memory"); break; case 4096 ... 4177: asm volatile ("mov cr%0=%1" :: "i" (4104 - 4096), "r"(pta): "memory" ); break; case 1036: asm volatile ("mov r12=%0" :: "r"(pta): "memory"); break; case 1025: asm volatile ("mov gp=%0" :: "r"(pta) : "memory"); break; default: ia64_bad_param_for_setreg(); break; } }); asm volatile (";; srlz.i ;;" ::: "memory"); } static inline __attribute__((always_inline)) void ia64_eoi (void) { ({ switch (4163) { case 1019: asm volatile ("mov psr.l=%0" :: "r"(0) : "memory"); break; case 3072 ... 3138: asm volatile ("mov ar%0=%1" :: "i" (4163 - 3072), "r"(0): "memory"); break; case 4096 ... 4177: asm volatile ("mov cr%0=%1" :: "i" (4163 - 4096), "r"(0): "memory" ); break; case 1036: asm volatile ("mov r12=%0" :: "r"(0): "memory"); break; case 1025: asm volatile ("mov gp=%0" :: "r"(0) : "memory"); break; default: ia64_bad_param_for_setreg(); break; } }); asm volatile (";; srlz.d" ::: "memory");; } static inline __attribute__((always_inline)) int ia64_get_irr(unsigned int vector) { unsigned int reg = vector / 64; unsigned int bit = vector % 64; u64 irr; switch (reg) { case 0: irr = ({ __u64 ia64_intri_res; switch (4164) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(4164 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (4164 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; }); break; case 1: irr = ({ __u64 ia64_intri_res; switch (4165) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(4165 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (4165 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; }); break; case 2: irr = ({ __u64 ia64_intri_res; switch (4166) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(4166 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (4166 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; }); break; case 3: irr = ({ __u64 ia64_intri_res; switch (4167) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(4167 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (4167 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; }); break; } return test_bit(bit, &irr); } static inline __attribute__((always_inline)) void ia64_set_lrr0 (unsigned long val) { ({ switch (4176) { case 1019: asm volatile ("mov psr.l=%0" :: "r"(val) : "memory"); break; case 3072 ... 3138: asm volatile ("mov ar%0=%1" :: "i" (4176 - 3072), "r"(val): "memory"); break; case 4096 ... 4177: asm volatile ("mov cr%0=%1" :: "i" (4176 - 4096), "r"(val): "memory" ); break; case 1036: asm volatile ("mov r12=%0" :: "r"(val): "memory"); break; case 1025: asm volatile ("mov gp=%0" :: "r"(val) : "memory"); break; default: ia64_bad_param_for_setreg(); break; } }); asm volatile (";; srlz.d" ::: "memory");; } static inline __attribute__((always_inline)) void ia64_set_lrr1 (unsigned long val) { ({ switch (4177) { case 1019: asm volatile ("mov psr.l=%0" :: "r"(val) : "memory"); break; case 3072 ... 3138: asm volatile ("mov ar%0=%1" :: "i" (4177 - 3072), "r"(val): "memory"); break; case 4096 ... 4177: asm volatile ("mov cr%0=%1" :: "i" (4177 - 4096), "r"(val): "memory" ); break; case 1036: asm volatile ("mov r12=%0" :: "r"(val): "memory"); break; case 1025: asm volatile ("mov gp=%0" :: "r"(val) : "memory"); break; default: ia64_bad_param_for_setreg(); break; } }); asm volatile (";; srlz.d" ::: "memory");; } static inline __attribute__((always_inline)) __u64 ia64_unat_pos (void *spill_addr) { return ((__u64) spill_addr >> 3) & 0x3f; } static inline __attribute__((always_inline)) void ia64_set_unat (__u64 *unat, void *spill_addr, unsigned long nat) { __u64 bit = ia64_unat_pos(spill_addr); __u64 mask = 1UL << bit; *unat = (*unat & ~mask) | (nat << bit); } static inline __attribute__((always_inline)) unsigned long thread_saved_pc (struct task_struct *t) { struct unw_frame_info info; unsigned long ip; unw_init_from_blocked_task(&info, t); if (unw_unwind(&info) < 0) return 0; unw_get_ip(&info, &ip); return ip; } static inline __attribute__((always_inline)) __u64 ia64_get_ivr (void) { __u64 r; asm volatile (";; srlz.d" ::: "memory");; r = ({ __u64 ia64_intri_res; switch (4161) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(4161 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (4161 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; }); asm volatile (";; srlz.d" ::: "memory");; return r; } static inline __attribute__((always_inline)) void ia64_set_dbr (__u64 regnum, __u64 value) { asm volatile ("mov dbr[%0]=%1" :: "r"(regnum), "r"(value) : "memory"); } static inline __attribute__((always_inline)) __u64 ia64_get_dbr (__u64 regnum) { __u64 retval; retval = ({ __u64 ia64_intri_res; asm volatile ("mov %0=dbr[%1]" : "=r"(ia64_intri_res) : "r"(regnum)); ia64_intri_res; }); return retval; } static inline __attribute__((always_inline)) __u64 ia64_rotr (__u64 w, __u64 n) { return (w >> n) | (w << (64 - n)); } static inline __attribute__((always_inline)) void * ia64_imva (void *addr) { void *result; result = (void *) ({ __u64 ia64_pa; asm volatile ("tpa %0 = %1" : "=r"(ia64_pa) : "r"(addr) : "memory"); ia64_pa; }); return ({ia64_va _v; _v.l = (long) (result); _v.f.reg = -1; _v.p;}); } static inline __attribute__((always_inline)) void prefetch (const void *x) { ({ switch (0) { case 0: asm volatile ("lfetch [%0]" : : "r"(x)); break; case 1: asm volatile ("lfetch.nt1 [%0]" : : "r"(x)); break; case 2: asm volatile ("lfetch.nt2 [%0]" : : "r"(x)); break; case 3: asm volatile ("lfetch.nta [%0]" : : "r"(x)); break; } }); } static inline __attribute__((always_inline)) void prefetchw (const void *x) { ({ switch (0) { case 0: asm volatile ("lfetch.excl [%0]" :: "r"(x)); break; case 1: asm volatile ("lfetch.excl.nt1 [%0]" :: "r"(x)); break; case 2: asm volatile ("lfetch.excl.nt2 [%0]" :: "r"(x)); break; case 3: asm volatile ("lfetch.excl.nta [%0]" :: "r"(x)); break; } }); } extern unsigned long boot_option_idle_override; # 12 "linux-2.6.16.6/include/asm/thread_info.h" 2 # 24 "linux-2.6.16.6/include/asm/thread_info.h" struct thread_info { struct task_struct *task; struct exec_domain *exec_domain; __u32 flags; __u32 cpu; mm_segment_t addr_limit; int preempt_count; struct restart_block restart_block; struct { int signo; int code; void *addr; unsigned long start_time; pid_t pid; } sigdelayed; }; # 22 "linux-2.6.16.6/include/linux/thread_info.h" 2 # 30 "linux-2.6.16.6/include/linux/thread_info.h" static inline __attribute__((always_inline)) void set_ti_thread_flag(struct thread_info *ti, int flag) { set_bit(flag,&ti->flags); } static inline __attribute__((always_inline)) void clear_ti_thread_flag(struct thread_info *ti, int flag) { clear_bit(flag,&ti->flags); } static inline __attribute__((always_inline)) int test_and_set_ti_thread_flag(struct thread_info *ti, int flag) { return test_and_set_bit(flag,&ti->flags); } static inline __attribute__((always_inline)) int test_and_clear_ti_thread_flag(struct thread_info *ti, int flag) { return test_and_clear_bit(flag,&ti->flags); } static inline __attribute__((always_inline)) int test_ti_thread_flag(struct thread_info *ti, int flag) { return test_bit(flag,&ti->flags); } # 11 "linux-2.6.16.6/include/linux/preempt.h" 2 # 51 "linux-2.6.16.6/include/linux/spinlock.h" 2 # 1 "linux-2.6.16.6/include/linux/stringify.h" 1 # 56 "linux-2.6.16.6/include/linux/spinlock.h" 2 # 1 "linux-2.6.16.6/include/asm/system.h" 1 # 19 "linux-2.6.16.6/include/asm/system.h" # 1 "linux-2.6.16.6/include/asm/pal.h" 1 # 92 "linux-2.6.16.6/include/asm/pal.h" typedef s64 pal_status_t; # 105 "linux-2.6.16.6/include/asm/pal.h" typedef u64 pal_cache_level_t; typedef u64 pal_cache_type_t; # 123 "linux-2.6.16.6/include/asm/pal.h" typedef int pal_cache_line_size_t; typedef u64 pal_cache_line_state_t; typedef struct pal_freq_ratio { u64 den : 32, num : 32; } itc_ratio, proc_ratio; typedef union pal_cache_config_info_1_s { struct { u64 u : 1, at : 2, reserved : 5, associativity : 8, line_size : 8, stride : 8, store_latency : 8, load_latency : 8, store_hints : 8, load_hints : 8; } pcci1_bits; u64 pcci1_data; } pal_cache_config_info_1_t; typedef union pal_cache_config_info_2_s { struct { u64 cache_size : 32, alias_boundary : 8, tag_ls_bit : 8, tag_ms_bit : 8, reserved : 8; } pcci2_bits; u64 pcci2_data; } pal_cache_config_info_2_t; typedef struct pal_cache_config_info_s { pal_status_t pcci_status; pal_cache_config_info_1_t pcci_info_1; pal_cache_config_info_2_t pcci_info_2; u64 pcci_reserved; } pal_cache_config_info_t; # 209 "linux-2.6.16.6/include/asm/pal.h" typedef union pal_cache_protection_element_u { u32 pcpi_data; struct { u32 data_bits : 8, tagprot_lsb : 6, tagprot_msb : 6, prot_bits : 6, method : 4, t_d : 2; } pcp_info; } pal_cache_protection_element_t; # 250 "linux-2.6.16.6/include/asm/pal.h" typedef struct pal_cache_protection_info_s { pal_status_t pcpi_status; pal_cache_protection_element_t pcp_info[6]; } pal_cache_protection_info_t; # 264 "linux-2.6.16.6/include/asm/pal.h" typedef union pal_cache_line_id_u { u64 pclid_data; struct { u64 cache_type : 8, level : 8, way : 8, part : 8, reserved : 32; } pclid_info_read; struct { u64 cache_type : 8, level : 8, way : 8, part : 8, mesi : 8, start : 8, length : 8, trigger : 8; } pclid_info_write; } pal_cache_line_id_u_t; # 329 "linux-2.6.16.6/include/asm/pal.h" typedef struct pal_cache_line_info_s { pal_status_t pcli_status; u64 pcli_data; u64 pcli_data_len; pal_cache_line_state_t pcli_cache_line_state; } pal_cache_line_info_t; typedef u64 pal_mc_pending_events_t; typedef u64 pal_mc_info_index_t; # 363 "linux-2.6.16.6/include/asm/pal.h" typedef struct pal_process_state_info_s { u64 reserved1 : 2, rz : 1, ra : 1, me : 1, mn : 1, sy : 1, co : 1, ci : 1, us : 1, hd : 1, tl : 1, # 411 "linux-2.6.16.6/include/asm/pal.h" mi : 1, pi : 1, pm : 1, dy : 1, in : 1, rs : 1, cm : 1, ex : 1, cr : 1, pc : 1, dr : 1, tr : 1, rr : 1, ar : 1, br : 1, pr : 1, fp : 1, b1 : 1, b0 : 1, gr : 1, dsize : 16, reserved2 : 11, cc : 1, tc : 1, bc : 1, rc : 1, uc : 1; } pal_processor_state_info_t; typedef struct pal_cache_check_info_s { u64 op : 4, level : 2, reserved1 : 2, dl : 1, tl : 1, dc : 1, ic : 1, mesi : 3, mv : 1, way : 5, wiv : 1, reserved2 : 10, index : 20, reserved3 : 2, is : 1, iv : 1, pl : 2, pv : 1, mcc : 1, tv : 1, rq : 1, rp : 1, pi : 1; } pal_cache_check_info_t; typedef struct pal_tlb_check_info_s { u64 tr_slot : 8, trv : 1, reserved1 : 1, level : 2, reserved2 : 4, dtr : 1, itr : 1, dtc : 1, itc : 1, op : 4, reserved3 : 30, is : 1, iv : 1, pl : 2, pv : 1, mcc : 1, tv : 1, rq : 1, rp : 1, pi : 1; } pal_tlb_check_info_t; typedef struct pal_bus_check_info_s { u64 size : 5, ib : 1, eb : 1, cc : 1, type : 8, sev : 5, hier : 2, reserved1 : 1, bsi : 8, reserved2 : 22, is : 1, iv : 1, pl : 2, pv : 1, mcc : 1, tv : 1, rq : 1, rp : 1, pi : 1; } pal_bus_check_info_t; typedef struct pal_reg_file_check_info_s { u64 id : 4, op : 4, reg_num : 7, rnv : 1, reserved2 : 38, is : 1, iv : 1, pl : 2, pv : 1, mcc : 1, reserved3 : 3, pi : 1; } pal_reg_file_check_info_t; typedef struct pal_uarch_check_info_s { u64 sid : 5, level : 3, array_id : 4, op : 4, way : 6, wv : 1, xv : 1, reserved1 : 8, index : 8, reserved2 : 24, is : 1, iv : 1, pl : 2, pv : 1, mcc : 1, tv : 1, rq : 1, rp : 1, pi : 1; } pal_uarch_check_info_t; typedef union pal_mc_error_info_u { u64 pmei_data; pal_processor_state_info_t pme_processor; pal_cache_check_info_t pme_cache; pal_tlb_check_info_t pme_tlb; pal_bus_check_info_t pme_bus; pal_reg_file_check_info_t pme_reg_file; pal_uarch_check_info_t pme_uarch; } pal_mc_error_info_t; # 726 "linux-2.6.16.6/include/asm/pal.h" typedef struct pal_min_state_area_s { u64 pmsa_nat_bits; u64 pmsa_gr[15]; u64 pmsa_bank0_gr[16]; u64 pmsa_bank1_gr[16]; u64 pmsa_pr; u64 pmsa_br0; u64 pmsa_rsc; u64 pmsa_iip; u64 pmsa_ipsr; u64 pmsa_ifs; u64 pmsa_xip; u64 pmsa_xpsr; u64 pmsa_xfs; u64 pmsa_br1; u64 pmsa_reserved[70]; } pal_min_state_area_t; struct ia64_pal_retval { s64 status; u64 v0; u64 v1; u64 v2; }; extern struct ia64_pal_retval ia64_pal_call_static (u64, u64, u64, u64, u64); extern struct ia64_pal_retval ia64_pal_call_stacked (u64, u64, u64, u64); extern struct ia64_pal_retval ia64_pal_call_phys_static (u64, u64, u64, u64); extern struct ia64_pal_retval ia64_pal_call_phys_stacked (u64, u64, u64, u64); extern void ia64_save_scratch_fpregs (struct ia64_fpreg *); extern void ia64_load_scratch_fpregs (struct ia64_fpreg *); # 807 "linux-2.6.16.6/include/asm/pal.h" typedef int (*ia64_pal_handler) (u64, ...); extern ia64_pal_handler ia64_pal; extern void ia64_pal_handler_init (void *); extern ia64_pal_handler ia64_pal; extern pal_cache_config_info_t l0d_cache_config_info; extern pal_cache_config_info_t l0i_cache_config_info; extern pal_cache_config_info_t l1_cache_config_info; extern pal_cache_config_info_t l2_cache_config_info; extern pal_cache_protection_info_t l0d_cache_protection_info; extern pal_cache_protection_info_t l0i_cache_protection_info; extern pal_cache_protection_info_t l1_cache_protection_info; extern pal_cache_protection_info_t l2_cache_protection_info; extern pal_cache_config_info_t pal_cache_config_info_get(pal_cache_level_t, pal_cache_type_t); extern pal_cache_protection_info_t pal_cache_protection_info_get(pal_cache_level_t, pal_cache_type_t); extern void pal_error(int); typedef union pal_bus_features_u { u64 pal_bus_features_val; struct { u64 pbf_reserved1 : 29; u64 pbf_req_bus_parking : 1; u64 pbf_bus_lock_mask : 1; u64 pbf_enable_half_xfer_rate : 1; u64 pbf_reserved2 : 22; u64 pbf_disable_xaction_queueing : 1; u64 pbf_disable_resp_err_check : 1; u64 pbf_disable_berr_check : 1; u64 pbf_disable_bus_req_internal_err_signal : 1; u64 pbf_disable_bus_req_berr_signal : 1; u64 pbf_disable_bus_init_event_check : 1; u64 pbf_disable_bus_init_event_signal : 1; u64 pbf_disable_bus_addr_err_check : 1; u64 pbf_disable_bus_addr_err_signal : 1; u64 pbf_disable_bus_data_err_check : 1; } pal_bus_features_s; } pal_bus_features_u_t; extern void pal_bus_features_print (u64); static inline __attribute__((always_inline)) s64 ia64_pal_bus_get_features (pal_bus_features_u_t *features_avail, pal_bus_features_u_t *features_status, pal_bus_features_u_t *features_control) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_phys_static(9, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (features_avail) features_avail->pal_bus_features_val = iprv.v0; if (features_status) features_status->pal_bus_features_val = iprv.v1; if (features_control) features_control->pal_bus_features_val = iprv.v2; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_bus_set_features (pal_bus_features_u_t feature_select) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_phys_static(10, feature_select.pal_bus_features_val, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_cache_config_info (u64 cache_level, u64 cache_type, pal_cache_config_info_t *conf) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(2, cache_level, cache_type, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (iprv.status == 0) { conf->pcci_status = iprv.status; conf->pcci_info_1.pcci1_data = iprv.v0; conf->pcci_info_2.pcci2_data = iprv.v1; conf->pcci_reserved = iprv.v2; } return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_cache_prot_info (u64 cache_level, u64 cache_type, pal_cache_protection_info_t *prot) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(38, cache_level, cache_type, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (iprv.status == 0) { prot->pcpi_status = iprv.status; prot->pcp_info[0].pcpi_data = iprv.v0 & 0xffffffff; prot->pcp_info[1].pcpi_data = iprv.v0 >> 32; prot->pcp_info[2].pcpi_data = iprv.v1 & 0xffffffff; prot->pcp_info[3].pcpi_data = iprv.v1 >> 32; prot->pcp_info[4].pcpi_data = iprv.v2 & 0xffffffff; prot->pcp_info[5].pcpi_data = iprv.v2 >> 32; } return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_cache_flush (u64 cache_type, u64 invalidate, u64 *progress, u64 *vector) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(1, cache_type, invalidate, *progress, 0); ia64_load_scratch_fpregs(fr); } while (0); if (vector) *vector = iprv.v0; *progress = iprv.v1; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_cache_init (u64 level, u64 cache_type, u64 rest) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(3, level, cache_type, rest, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_cache_line_init (u64 physical_addr, u64 data_value) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(31, physical_addr, data_value, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_cache_read (pal_cache_line_id_u_t line_id, u64 physical_addr) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(259, line_id.pclid_data, physical_addr, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_cache_summary (u64 *cache_levels, u64 *unique_caches) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(4, 0, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (cache_levels) *cache_levels = iprv.v0; if (unique_caches) *unique_caches = iprv.v1; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_cache_write (pal_cache_line_id_u_t line_id, u64 physical_addr, u64 data) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(260, line_id.pclid_data, physical_addr, data, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_copy_info (u64 copy_type, u64 num_procs, u64 num_iopics, u64 *buffer_size, u64 *buffer_align) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(30, copy_type, num_procs, num_iopics, 0); ia64_load_scratch_fpregs(fr); } while (0); if (buffer_size) *buffer_size = iprv.v0; if (buffer_align) *buffer_align = iprv.v1; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_copy_pal (u64 target_addr, u64 alloc_size, u64 processor, u64 *pal_proc_offset) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(256, target_addr, alloc_size, processor, 0); ia64_load_scratch_fpregs(fr); } while (0); if (pal_proc_offset) *pal_proc_offset = iprv.v0; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_debug_info (u64 *inst_regs, u64 *data_regs) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(11, 0, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (inst_regs) *inst_regs = iprv.v0; if (data_regs) *data_regs = iprv.v1; return iprv.status; } # 1043 "linux-2.6.16.6/include/asm/pal.h" static inline __attribute__((always_inline)) s64 ia64_pal_fixed_addr (u64 *global_unique_addr) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(12, 0, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (global_unique_addr) *global_unique_addr = iprv.v0; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_freq_base (u64 *platform_base_freq) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(13, 0, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (platform_base_freq) *platform_base_freq = iprv.v0; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_freq_ratios (struct pal_freq_ratio *proc_ratio, struct pal_freq_ratio *bus_ratio, struct pal_freq_ratio *itc_ratio) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(14, 0, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (proc_ratio) *(u64 *)proc_ratio = iprv.v0; if (bus_ratio) *(u64 *)bus_ratio = iprv.v1; if (itc_ratio) *(u64 *)itc_ratio = iprv.v2; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_halt (u64 halt_state) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(28, halt_state, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } typedef union pal_power_mgmt_info_u { u64 ppmi_data; struct { u64 exit_latency : 16, entry_latency : 16, power_consumption : 28, im : 1, co : 1, reserved : 2; } pal_power_mgmt_info_s; } pal_power_mgmt_info_u_t; static inline __attribute__((always_inline)) s64 ia64_pal_halt_info (pal_power_mgmt_info_u_t *power_buf) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_stacked(257, (unsigned long) power_buf, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_get_pstate (u64 *pstate_index) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_stacked(262, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); *pstate_index = iprv.v0; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_set_pstate (u64 pstate_index) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_stacked(263, pstate_index, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_halt_light (void) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(29, 0, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_mc_clear_log (u64 *pending_vector) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(21, 0, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (pending_vector) *pending_vector = iprv.v0; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_mc_drain (void) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(22, 0, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_mc_dynamic_state (u64 offset, u64 *size, u64 *pds) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(24, offset, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (size) *size = iprv.v0; if (pds) *pds = iprv.v1; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_mc_error_info (u64 info_index, u64 type_index, u64 *size, u64 *error_info) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(25, info_index, type_index, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (size) *size = iprv.v0; if (error_info) *error_info = iprv.v1; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_mc_expected (u64 expected, u64 *previous) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(23, expected, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (previous) *previous = iprv.v0; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_mc_register_mem (u64 physical_addr) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(27, physical_addr, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_mc_resume (u64 set_cmci, u64 save_ptr) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(26, set_cmci, save_ptr, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_mem_attrib (u64 *mem_attrib) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(5, 0, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (mem_attrib) *mem_attrib = iprv.v0 & 0xff; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_mem_for_test (u64 *bytes_needed, u64 *alignment) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(37, 0, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (bytes_needed) *bytes_needed = iprv.v0; if (alignment) *alignment = iprv.v1; return iprv.status; } typedef union pal_perf_mon_info_u { u64 ppmi_data; struct { u64 generic : 8, width : 8, cycles : 8, retired : 8, reserved : 32; } pal_perf_mon_info_s; } pal_perf_mon_info_u_t; static inline __attribute__((always_inline)) s64 ia64_pal_perf_mon_info (u64 *pm_buffer, pal_perf_mon_info_u_t *pm_info) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(15, (unsigned long) pm_buffer, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (pm_info) pm_info->ppmi_data = iprv.v0; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_platform_addr (u64 type, u64 physical_addr) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(16, type, physical_addr, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_pmi_entrypoint (u64 sal_pmi_entry_addr) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(32, sal_pmi_entry_addr, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } struct pal_features_s; static inline __attribute__((always_inline)) s64 ia64_pal_proc_get_features (u64 *features_avail, u64 *features_status, u64 *features_control) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_phys_static(17, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (iprv.status == 0) { *features_avail = iprv.v0; *features_status = iprv.v1; *features_control = iprv.v2; } return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_proc_set_features (u64 feature_select) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_phys_static(18, feature_select, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } typedef struct ia64_ptce_info_s { u64 base; u32 count[2]; u32 stride[2]; } ia64_ptce_info_t; static inline __attribute__((always_inline)) s64 ia64_get_ptce (ia64_ptce_info_t *ptce) { struct ia64_pal_retval iprv; if (!ptce) return -1; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(6, 0, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (iprv.status == 0) { ptce->base = iprv.v0; ptce->count[0] = iprv.v1 >> 32; ptce->count[1] = iprv.v1 & 0xffffffff; ptce->stride[0] = iprv.v2 >> 32; ptce->stride[1] = iprv.v2 & 0xffffffff; } return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_register_info (u64 info_request, u64 *reg_info_1, u64 *reg_info_2) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(39, info_request, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (reg_info_1) *reg_info_1 = iprv.v0; if (reg_info_2) *reg_info_2 = iprv.v1; return iprv.status; } typedef union pal_hints_u { u64 ph_data; struct { u64 si : 1, li : 1, reserved : 62; } pal_hints_s; } pal_hints_u_t; static inline __attribute__((always_inline)) s64 ia64_pal_rse_info (u64 *num_phys_stacked, pal_hints_u_t *hints) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(19, 0, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (num_phys_stacked) *num_phys_stacked = iprv.v0; if (hints) hints->ph_data = iprv.v1; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_shutdown (void) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(40, 0, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_test_proc (u64 test_addr, u64 test_size, u64 attributes, u64 *self_test_state) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(258, test_addr, test_size, attributes, 0); ia64_load_scratch_fpregs(fr); } while (0); if (self_test_state) *self_test_state = iprv.v0; return iprv.status; } typedef union pal_version_u { u64 pal_version_val; struct { u64 pv_pal_b_rev : 8; u64 pv_pal_b_model : 8; u64 pv_reserved1 : 8; u64 pv_pal_vendor : 8; u64 pv_pal_a_rev : 8; u64 pv_pal_a_model : 8; u64 pv_reserved2 : 16; } pal_version_s; } pal_version_u_t; static inline __attribute__((always_inline)) s64 ia64_pal_version (pal_version_u_t *pal_min_version, pal_version_u_t *pal_cur_version) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_phys_static(20, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (pal_min_version) pal_min_version->pal_version_val = iprv.v0; if (pal_cur_version) pal_cur_version->pal_version_val = iprv.v1; return iprv.status; } typedef union pal_tc_info_u { u64 pti_val; struct { u64 num_sets : 8, associativity : 8, num_entries : 16, pf : 1, unified : 1, reduce_tr : 1, reserved : 29; } pal_tc_info_s; } pal_tc_info_u_t; # 1474 "linux-2.6.16.6/include/asm/pal.h" static inline __attribute__((always_inline)) s64 ia64_pal_vm_info (u64 tc_level, u64 tc_type, pal_tc_info_u_t *tc_info, u64 *tc_pages) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(7, tc_level, tc_type, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (tc_info) tc_info->pti_val = iprv.v0; if (tc_pages) *tc_pages = iprv.v1; return iprv.status; } static inline __attribute__((always_inline)) s64 ia64_pal_vm_page_size (u64 *tr_pages, u64 *vw_pages) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(34, 0, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (tr_pages) *tr_pages = iprv.v0; if (vw_pages) *vw_pages = iprv.v1; return iprv.status; } typedef union pal_vm_info_1_u { u64 pvi1_val; struct { u64 vw : 1, phys_add_size : 7, key_size : 8, max_pkr : 8, hash_tag_id : 8, max_dtr_entry : 8, max_itr_entry : 8, max_unique_tcs : 8, num_tc_levels : 8; } pal_vm_info_1_s; } pal_vm_info_1_u_t; typedef union pal_vm_info_2_u { u64 pvi2_val; struct { u64 impl_va_msb : 8, rid_size : 8, reserved : 48; } pal_vm_info_2_s; } pal_vm_info_2_u_t; static inline __attribute__((always_inline)) s64 ia64_pal_vm_summary (pal_vm_info_1_u_t *vm_info_1, pal_vm_info_2_u_t *vm_info_2) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(8, 0, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (vm_info_1) vm_info_1->pvi1_val = iprv.v0; if (vm_info_2) vm_info_2->pvi2_val = iprv.v1; return iprv.status; } typedef union pal_itr_valid_u { u64 piv_val; struct { u64 access_rights_valid : 1, priv_level_valid : 1, dirty_bit_valid : 1, mem_attr_valid : 1, reserved : 60; } pal_tr_valid_s; } pal_tr_valid_u_t; static inline __attribute__((always_inline)) s64 ia64_pal_tr_read (u64 reg_num, u64 tr_type, u64 *tr_buffer, pal_tr_valid_u_t *tr_valid) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_phys_stacked(261, reg_num, tr_type, (u64)({ __u64 ia64_pa; asm volatile ("tpa %0 = %1" : "=r"(ia64_pa) : "r"(tr_buffer) : "memory"); ia64_pa; })); ia64_load_scratch_fpregs(fr); } while (0); if (tr_valid) tr_valid->piv_val = iprv.v0; return iprv.status; } # 1576 "linux-2.6.16.6/include/asm/pal.h" static inline __attribute__((always_inline)) s64 ia64_pal_prefetch_visibility (s64 trans_type) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(41, trans_type, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); return iprv.status; } typedef union pal_log_overview_u { struct { u64 num_log :16, tpc :8, reserved3 :8, cpp :8, reserved2 :8, ppid :8, reserved1 :8; } overview_bits; u64 overview_data; } pal_log_overview_t; typedef union pal_proc_n_log_info1_u{ struct { u64 tid :16, reserved2 :16, cid :16, reserved1 :16; } ppli1_bits; u64 ppli1_data; } pal_proc_n_log_info1_t; typedef union pal_proc_n_log_info2_u { struct { u64 la :16, reserved :48; } ppli2_bits; u64 ppli2_data; } pal_proc_n_log_info2_t; typedef struct pal_logical_to_physical_s { pal_log_overview_t overview; pal_proc_n_log_info1_t ppli1; pal_proc_n_log_info2_t ppli2; } pal_logical_to_physical_t; # 1634 "linux-2.6.16.6/include/asm/pal.h" static inline __attribute__((always_inline)) s64 ia64_pal_logical_to_phys(u64 proc_number, pal_logical_to_physical_t *mapping) { struct ia64_pal_retval iprv; do { struct ia64_fpreg fr[6]; ia64_save_scratch_fpregs(fr); iprv = ia64_pal_call_static(42, proc_number, 0, 0, 0); ia64_load_scratch_fpregs(fr); } while (0); if (iprv.status == 0) { if (proc_number == 0) mapping->overview.overview_data = iprv.v0; mapping->ppli1.ppli1_data = iprv.v1; mapping->ppli2.ppli2_data = iprv.v2; } return iprv.status; } # 20 "linux-2.6.16.6/include/asm/system.h" 2 # 36 "linux-2.6.16.6/include/asm/system.h" struct pci_vector_struct { __u16 segment; __u16 bus; __u32 pci_id; __u8 pin; __u32 irq; }; extern struct ia64_boot_param { __u64 command_line; __u64 efi_systab; __u64 efi_memmap; __u64 efi_memmap_size; __u64 efi_memdesc_size; __u32 efi_memdesc_version; struct { __u16 num_cols; __u16 num_rows; __u16 orig_x; __u16 orig_y; } console_info; __u64 fpswa; __u64 initrd_start; __u64 initrd_size; } *ia64_boot_param; # 206 "linux-2.6.16.6/include/asm/system.h" extern struct task_struct *ia64_switch_to (void *next_task); struct task_struct; extern void ia64_save_extra (struct task_struct *task); extern void ia64_load_extra (struct task_struct *task); extern __typeof__(unsigned long) per_cpu__pfm_syst_info; # 256 "linux-2.6.16.6/include/asm/system.h" void cpu_idle_wait(void); void sched_cacheflush(void); # 58 "linux-2.6.16.6/include/linux/spinlock.h" 2 # 79 "linux-2.6.16.6/include/linux/spinlock.h" # 1 "linux-2.6.16.6/include/linux/spinlock_types.h" 1 # 13 "linux-2.6.16.6/include/linux/spinlock_types.h" # 1 "linux-2.6.16.6/include/asm/spinlock_types.h" 1 typedef struct { volatile unsigned int lock; } raw_spinlock_t; typedef struct { volatile unsigned int read_counter : 31; volatile unsigned int write_lock : 1; } raw_rwlock_t; # 14 "linux-2.6.16.6/include/linux/spinlock_types.h" 2 typedef struct { raw_spinlock_t raw_lock; } spinlock_t; typedef struct { raw_rwlock_t raw_lock; } rwlock_t; # 80 "linux-2.6.16.6/include/linux/spinlock.h" 2 extern int __attribute__((section(".spinlock.text"))) generic__raw_read_trylock(raw_rwlock_t *lock); # 1 "linux-2.6.16.6/include/asm/spinlock.h" 1 # 32 "linux-2.6.16.6/include/asm/spinlock.h" static inline __attribute__((always_inline)) void __raw_spin_lock_flags (raw_spinlock_t *lock, unsigned long flags) { register volatile unsigned int *ptr asm ("r31") = &lock->lock; # 78 "linux-2.6.16.6/include/asm/spinlock.h" asm volatile ("mov r30 = 1\n\t" "mov r27=%2\n\t" "mov ar.ccv = r0;;\n\t" "cmpxchg4.acq r30 = [%0], r30, ar.ccv;;\n\t" "cmp4.ne p14, p0 = r30, r0\n\t" "(p14) brl.call.spnt.many b6=ia64_spinlock_contention;;" : "=r"(ptr) : "r"(ptr), "r" (flags) : "ar.ccv", "ar.pfs", "p14", "p15", "r27", "r28", "r29", "r30", "b6", "memory"); } static inline __attribute__((always_inline)) void __raw_spin_unlock(raw_spinlock_t *x) { __asm__ __volatile__("": : :"memory"); asm volatile ("st4.rel.nta [%0] = r0\n\t" :: "r"(x)); } # 168 "linux-2.6.16.6/include/asm/spinlock.h" static inline __attribute__((always_inline)) void __raw_write_unlock(raw_rwlock_t *x) { u8 *y = (u8 *)x; __asm__ __volatile__("": : :"memory"); asm volatile ("st1.rel.nta [%0] = r0\n\t" :: "r"(y+3) : "memory" ); } # 204 "linux-2.6.16.6/include/asm/spinlock.h" static inline __attribute__((always_inline)) int __raw_read_trylock(raw_rwlock_t *x) { union { raw_rwlock_t lock; __u32 word; } old, new; old.lock = new.lock = *x; old.lock.write_lock = new.lock.write_lock = 0; ++new.lock.read_counter; return (u32)({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(old.word)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *)(x)), "r"(new.word) : "memory"); ia64_intri_res; }) == old.word; } # 88 "linux-2.6.16.6/include/linux/spinlock.h" 2 # 107 "linux-2.6.16.6/include/linux/spinlock.h" # 1 "linux-2.6.16.6/include/linux/spinlock_api_smp.h" 1 # 18 "linux-2.6.16.6/include/linux/spinlock_api_smp.h" int in_lock_functions(unsigned long addr); void __attribute__((section(".spinlock.text"))) _spin_lock(spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _read_lock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _write_lock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _spin_lock_bh(spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _read_lock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _write_lock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _spin_lock_irq(spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _read_lock_irq(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _write_lock_irq(rwlock_t *lock) ; unsigned long __attribute__((section(".spinlock.text"))) _spin_lock_irqsave(spinlock_t *lock) ; unsigned long __attribute__((section(".spinlock.text"))) _read_lock_irqsave(rwlock_t *lock) ; unsigned long __attribute__((section(".spinlock.text"))) _write_lock_irqsave(rwlock_t *lock) ; int __attribute__((section(".spinlock.text"))) _spin_trylock(spinlock_t *lock); int __attribute__((section(".spinlock.text"))) _read_trylock(rwlock_t *lock); int __attribute__((section(".spinlock.text"))) _write_trylock(rwlock_t *lock); int __attribute__((section(".spinlock.text"))) _spin_trylock_bh(spinlock_t *lock); void __attribute__((section(".spinlock.text"))) _spin_unlock(spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _read_unlock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _write_unlock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _spin_unlock_bh(spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _read_unlock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _write_unlock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _spin_unlock_irq(spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _read_unlock_irq(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _write_unlock_irq(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags) ; void __attribute__((section(".spinlock.text"))) _read_unlock_irqrestore(rwlock_t *lock, unsigned long flags) ; void __attribute__((section(".spinlock.text"))) _write_unlock_irqrestore(rwlock_t *lock, unsigned long flags) ; # 108 "linux-2.6.16.6/include/linux/spinlock.h" 2 # 237 "linux-2.6.16.6/include/linux/spinlock.h" extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); # 46 "linux-2.6.16.6/include/linux/capability.h" 2 # 58 "linux-2.6.16.6/include/linux/capability.h" typedef __u32 kernel_cap_t; # 295 "linux-2.6.16.6/include/linux/capability.h" extern kernel_cap_t cap_bset; # 323 "linux-2.6.16.6/include/linux/capability.h" static inline __attribute__((always_inline)) kernel_cap_t cap_combine(kernel_cap_t a, kernel_cap_t b) { kernel_cap_t dest; (dest) = (a) | (b); return dest; } static inline __attribute__((always_inline)) kernel_cap_t cap_intersect(kernel_cap_t a, kernel_cap_t b) { kernel_cap_t dest; (dest) = (a) & (b); return dest; } static inline __attribute__((always_inline)) kernel_cap_t cap_drop(kernel_cap_t a, kernel_cap_t drop) { kernel_cap_t dest; (dest) = (a) & ~(drop); return dest; } static inline __attribute__((always_inline)) kernel_cap_t cap_invert(kernel_cap_t c) { kernel_cap_t dest; (dest) = ~(c); return dest; } # 360 "linux-2.6.16.6/include/linux/capability.h" extern int capable(int cap); # 8 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/timex.h" 1 # 58 "linux-2.6.16.6/include/linux/timex.h" # 1 "linux-2.6.16.6/include/linux/time.h" 1 # 1 "linux-2.6.16.6/include/linux/seqlock.h" 1 # 33 "linux-2.6.16.6/include/linux/seqlock.h" typedef struct { unsigned sequence; spinlock_t lock; } seqlock_t; # 50 "linux-2.6.16.6/include/linux/seqlock.h" static inline __attribute__((always_inline)) void write_seqlock(seqlock_t *sl) { _spin_lock(&sl->lock); ++sl->sequence; asm volatile ("mf" ::: "memory"); } static inline __attribute__((always_inline)) void write_sequnlock(seqlock_t *sl) { asm volatile ("mf" ::: "memory"); sl->sequence++; __raw_spin_unlock(&(&sl->lock)->raw_lock); } static inline __attribute__((always_inline)) int write_tryseqlock(seqlock_t *sl) { int ret = (_spin_trylock(&sl->lock)); if (ret) { ++sl->sequence; asm volatile ("mf" ::: "memory"); } return ret; } static inline __attribute__((always_inline)) unsigned read_seqbegin(const seqlock_t *sl) { unsigned ret = sl->sequence; asm volatile ("mf" ::: "memory"); return ret; } # 91 "linux-2.6.16.6/include/linux/seqlock.h" static inline __attribute__((always_inline)) int read_seqretry(const seqlock_t *sl, unsigned iv) { asm volatile ("mf" ::: "memory"); return (iv & 1) | (sl->sequence ^ iv); } # 105 "linux-2.6.16.6/include/linux/seqlock.h" typedef struct seqcount { unsigned sequence; } seqcount_t; static inline __attribute__((always_inline)) unsigned read_seqcount_begin(const seqcount_t *s) { unsigned ret = s->sequence; asm volatile ("mf" ::: "memory"); return ret; } static inline __attribute__((always_inline)) int read_seqcount_retry(const seqcount_t *s, unsigned iv) { asm volatile ("mf" ::: "memory"); return (iv & 1) | (s->sequence ^ iv); } static inline __attribute__((always_inline)) void write_seqcount_begin(seqcount_t *s) { s->sequence++; asm volatile ("mf" ::: "memory"); } static inline __attribute__((always_inline)) void write_seqcount_end(seqcount_t *s) { asm volatile ("mf" ::: "memory"); s->sequence++; } # 8 "linux-2.6.16.6/include/linux/time.h" 2 struct timespec { time_t tv_sec; long tv_nsec; }; struct timeval { time_t tv_sec; suseconds_t tv_usec; }; struct timezone { int tz_minuteswest; int tz_dsttime; }; # 36 "linux-2.6.16.6/include/linux/time.h" static inline __attribute__((always_inline)) int timespec_equal(struct timespec *a, struct timespec *b) { return (a->tv_sec == b->tv_sec) && (a->tv_nsec == b->tv_nsec); } static inline __attribute__((always_inline)) int timespec_compare(struct timespec *lhs, struct timespec *rhs) { if (lhs->tv_sec < rhs->tv_sec) return -1; if (lhs->tv_sec > rhs->tv_sec) return 1; return lhs->tv_nsec - rhs->tv_nsec; } static inline __attribute__((always_inline)) int timeval_compare(struct timeval *lhs, struct timeval *rhs) { if (lhs->tv_sec < rhs->tv_sec) return -1; if (lhs->tv_sec > rhs->tv_sec) return 1; return lhs->tv_usec - rhs->tv_usec; } extern unsigned long mktime(const unsigned int year, const unsigned int mon, const unsigned int day, const unsigned int hour, const unsigned int min, const unsigned int sec); extern void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec); # 80 "linux-2.6.16.6/include/linux/time.h" typedef s64 nsec_t; extern struct timespec xtime; extern struct timespec wall_to_monotonic; extern seqlock_t xtime_lock; static inline __attribute__((always_inline)) unsigned long get_seconds(void) { return xtime.tv_sec; } struct timespec current_kernel_time(void); extern void do_gettimeofday(struct timeval *tv); extern int do_settimeofday(struct timespec *tv); extern int do_sys_settimeofday(struct timespec *tv, struct timezone *tz); extern long do_utimes(int dfd, char *filename, struct timeval *times); struct itimerval; extern int do_setitimer(int which, struct itimerval *value, struct itimerval *ovalue); extern int do_getitimer(int which, struct itimerval *value); extern void getnstimeofday(struct timespec *tv); extern struct timespec timespec_trunc(struct timespec t, unsigned gran); # 116 "linux-2.6.16.6/include/linux/time.h" static inline __attribute__((always_inline)) nsec_t timespec_to_ns(const struct timespec *ts) { return ((nsec_t) ts->tv_sec * 1000000000L) + ts->tv_nsec; } # 128 "linux-2.6.16.6/include/linux/time.h" static inline __attribute__((always_inline)) nsec_t timeval_to_ns(const struct timeval *tv) { return ((nsec_t) tv->tv_sec * 1000000000L) + tv->tv_usec * 1000L; } extern struct timespec ns_to_timespec(const nsec_t nsec); extern struct timeval ns_to_timeval(const nsec_t nsec); # 168 "linux-2.6.16.6/include/linux/time.h" struct itimerspec { struct timespec it_interval; struct timespec it_value; }; struct itimerval { struct timeval it_interval; struct timeval it_value; }; # 59 "linux-2.6.16.6/include/linux/timex.h" 2 # 1 "linux-2.6.16.6/include/asm/timex.h" 1 # 16 "linux-2.6.16.6/include/asm/timex.h" typedef unsigned long cycles_t; extern void (*ia64_udelay)(unsigned long usecs); # 33 "linux-2.6.16.6/include/asm/timex.h" static inline __attribute__((always_inline)) cycles_t get_cycles (void) { cycles_t ret; ret = ({ __u64 ia64_intri_res; switch (3116) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(3116 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (3116 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; }); return ret; } # 62 "linux-2.6.16.6/include/linux/timex.h" 2 # 135 "linux-2.6.16.6/include/linux/timex.h" struct timex { unsigned int modes; long offset; long freq; long maxerror; long esterror; int status; long constant; long precision; long tolerance; struct timeval time; long tick; long ppsfreq; long jitter; int shift; long stabil; long jitcnt; long calcnt; long errcnt; long stbcnt; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; }; # 227 "linux-2.6.16.6/include/linux/timex.h" extern unsigned long tick_usec; extern unsigned long tick_nsec; extern int tickadj; extern int time_state; extern int time_status; extern long time_offset; extern long time_constant; extern long time_tolerance; extern long time_precision; extern long time_maxerror; extern long time_esterror; extern long time_freq; extern long time_reftime; extern long time_adjust; extern long time_next_adjust; extern long pps_offset; extern long pps_jitter; extern long pps_freq; extern long pps_stabil; extern long pps_valid; extern int pps_shift; extern long pps_jitcnt; extern long pps_calcnt; extern long pps_errcnt; extern long pps_stbcnt; static inline __attribute__((always_inline)) void ntp_clear(void) { time_adjust = 0; time_status |= 0x0040; time_maxerror = (512000L << 5); time_esterror = (512000L << 5); } static inline __attribute__((always_inline)) int ntp_synced(void) { return !(time_status & 0x0040); } # 316 "linux-2.6.16.6/include/linux/timex.h" struct time_interpolator { u16 source; u8 shift; u8 jitter; u32 nsec_per_cyc; void *addr; u64 mask; unsigned long offset; u64 last_counter; u64 last_cycle; u64 frequency; long drift; unsigned long skips; unsigned long ns_skipped; struct time_interpolator *next; }; extern void register_time_interpolator(struct time_interpolator *); extern void unregister_time_interpolator(struct time_interpolator *); extern void time_interpolator_reset(void); extern unsigned long time_interpolator_get_offset(void); # 349 "linux-2.6.16.6/include/linux/timex.h" extern u64 current_tick_length(void); # 12 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/jiffies.h" 1 # 1 "linux-2.6.16.6/include/linux/calc64.h" 1 # 1 "linux-2.6.16.6/include/asm/div64.h" 1 # 1 "linux-2.6.16.6/include/asm-generic/div64.h" 1 # 1 "linux-2.6.16.6/include/asm/div64.h" 2 # 6 "linux-2.6.16.6/include/linux/calc64.h" 2 # 20 "linux-2.6.16.6/include/linux/calc64.h" static inline __attribute__((always_inline)) unsigned long do_div_llr(const long long dividend, const long divisor, long *remainder) { u64 result = dividend; *(remainder) = ({ uint32_t __base = (divisor); uint32_t __rem; __rem = ((uint64_t)(result)) % __base; (result) = ((uint64_t)(result)) / __base; __rem; }); return (unsigned long) result; } static inline __attribute__((always_inline)) long div_long_long_rem_signed(const long long dividend, const long divisor, long *remainder) { long res; if (__builtin_expect(!!(dividend < 0), 0)) { res = -do_div_llr((-dividend), divisor, remainder); *remainder = -(*remainder); } else res = do_div_llr((dividend), divisor, remainder); return res; } # 5 "linux-2.6.16.6/include/linux/jiffies.h" 2 # 75 "linux-2.6.16.6/include/linux/jiffies.h" extern u64 __attribute__((section(".data"))) jiffies_64; extern unsigned long volatile __attribute__((section(".data"))) jiffies; static inline __attribute__((always_inline)) u64 get_jiffies_64(void) { return (u64)jiffies; } # 246 "linux-2.6.16.6/include/linux/jiffies.h" static inline __attribute__((always_inline)) unsigned int jiffies_to_msecs(const unsigned long j) { return (1000L / 250) * j; } static inline __attribute__((always_inline)) unsigned int jiffies_to_usecs(const unsigned long j) { return (1000000L / 250) * j; } static inline __attribute__((always_inline)) unsigned long msecs_to_jiffies(const unsigned int m) { if (m > jiffies_to_msecs(((~0UL >> 1)-1))) return ((~0UL >> 1)-1); return (m + (1000L / 250) - 1) / (1000L / 250); } static inline __attribute__((always_inline)) unsigned long usecs_to_jiffies(const unsigned int u) { if (u > jiffies_to_usecs(((~0UL >> 1)-1))) return ((~0UL >> 1)-1); return (u + (1000000L / 250) - 1) / (1000000L / 250); } # 305 "linux-2.6.16.6/include/linux/jiffies.h" static __inline__ __attribute__((always_inline)) unsigned long timespec_to_jiffies(const struct timespec *value) { unsigned long sec = value->tv_sec; long nsec = value->tv_nsec + (( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))) - 1; if (sec >= (( (((((~0UL >> 1)-1) >> (32 - 8)) * (( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))) / 1000000000L) << 1) + ((((((~0UL >> 1)-1) >> (32 - 8)) * (( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))) % 1000000000L) << 1) + 1000000000L / 2) / 1000000000L) - 1)){ sec = (( (((((~0UL >> 1)-1) >> (32 - 8)) * (( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))) / 1000000000L) << 1) + ((((((~0UL >> 1)-1) >> (32 - 8)) * (( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))) % 1000000000L) << 1) + 1000000000L / 2) / 1000000000L) - 1); nsec = 0; } return (((u64)sec * ((unsigned long)((((u64)1000000000L << (32 - 8)) + (( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))) -1) / (u64)(( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))))))) + (((u64)nsec * ((unsigned long)((((u64)1 << ((32 - 8) + 29)) + (( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))) -1) / (u64)(( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))))))) >> (((32 - 8) + 29) - (32 - 8)))) >> (32 - 8); } static __inline__ __attribute__((always_inline)) void jiffies_to_timespec(const unsigned long jiffies, struct timespec *value) { u64 nsec = (u64)jiffies * (( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))); value->tv_sec = do_div_llr((nsec), 1000000000L, &value->tv_nsec); } # 344 "linux-2.6.16.6/include/linux/jiffies.h" static __inline__ __attribute__((always_inline)) unsigned long timeval_to_jiffies(const struct timeval *value) { unsigned long sec = value->tv_sec; long usec = value->tv_usec; if (sec >= (( (((((~0UL >> 1)-1) >> (32 - 8)) * (( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))) / 1000000000L) << 1) + ((((((~0UL >> 1)-1) >> (32 - 8)) * (( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))) % 1000000000L) << 1) + 1000000000L / 2) / 1000000000L) - 1)){ sec = (( (((((~0UL >> 1)-1) >> (32 - 8)) * (( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))) / 1000000000L) << 1) + ((((((~0UL >> 1)-1) >> (32 - 8)) * (( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))) % 1000000000L) << 1) + 1000000000L / 2) / 1000000000L) - 1); usec = 0; } return (((u64)sec * ((unsigned long)((((u64)1000000000L << (32 - 8)) + (( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))) -1) / (u64)(( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))))))) + (((u64)usec * ((unsigned long)((((u64)1000L << ((32 - 8) + 19)) + (( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))) -1) / (u64)(( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))))) + (u64)(((u64)1 << ((32 - 8) + 19)) - 1)) >> (((32 - 8) + 19) - (32 - 8)))) >> (32 - 8); } static __inline__ __attribute__((always_inline)) void jiffies_to_timeval(const unsigned long jiffies, struct timeval *value) { u64 nsec = (u64)jiffies * (( ((1000000UL * 1000 / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (((1000000UL * 1000 % (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250)))) << 8) + (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))) / 2) / (( (((250 * 100000UL) / (((250 * 100000UL) + 250/2) / 250)) << 8) + ((((250 * 100000UL) % (((250 * 100000UL) + 250/2) / 250)) << 8) + (((250 * 100000UL) + 250/2) / 250) / 2) / (((250 * 100000UL) + 250/2) / 250))))); long tv_usec; value->tv_sec = do_div_llr((nsec), 1000000000L, &tv_usec); tv_usec /= 1000L; value->tv_usec = tv_usec; } static inline __attribute__((always_inline)) clock_t jiffies_to_clock_t(long x) { return x / (250 / 250); } static inline __attribute__((always_inline)) unsigned long clock_t_to_jiffies(unsigned long x) { if (x >= ~0UL / (250 / 250)) return ~0UL; return x * (250 / 250); # 406 "linux-2.6.16.6/include/linux/jiffies.h" } static inline __attribute__((always_inline)) u64 jiffies_64_to_clock_t(u64 x) { ({ uint32_t __base = (250 / 250); uint32_t __rem; __rem = ((uint64_t)(x)) % __base; (x) = ((uint64_t)(x)) / __base; __rem; }); # 421 "linux-2.6.16.6/include/linux/jiffies.h" return x; } static inline __attribute__((always_inline)) u64 nsec_to_clock_t(u64 x) { ({ uint32_t __base = ((1000000000L / 250)); uint32_t __rem; __rem = ((uint64_t)(x)) % __base; (x) = ((uint64_t)(x)) / __base; __rem; }); # 441 "linux-2.6.16.6/include/linux/jiffies.h" return x; } # 13 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/rbtree.h" 1 # 100 "linux-2.6.16.6/include/linux/rbtree.h" struct rb_node { struct rb_node *rb_parent; int rb_color; struct rb_node *rb_right; struct rb_node *rb_left; }; struct rb_root { struct rb_node *rb_node; }; extern void rb_insert_color(struct rb_node *, struct rb_root *); extern void rb_erase(struct rb_node *, struct rb_root *); extern struct rb_node *rb_next(struct rb_node *); extern struct rb_node *rb_prev(struct rb_node *); extern struct rb_node *rb_first(struct rb_root *); extern struct rb_node *rb_last(struct rb_root *); extern void rb_replace_node(struct rb_node *victim, struct rb_node *new, struct rb_root *root); static inline __attribute__((always_inline)) void rb_link_node(struct rb_node * node, struct rb_node * parent, struct rb_node ** rb_link) { node->rb_parent = parent; node->rb_color = 0; node->rb_left = node->rb_right = ((void *)0); *rb_link = node; } # 14 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/cpumask.h" 1 # 86 "linux-2.6.16.6/include/linux/cpumask.h" # 1 "linux-2.6.16.6/include/linux/bitmap.h" 1 # 1 "linux-2.6.16.6/include/linux/string.h" 1 # 16 "linux-2.6.16.6/include/linux/string.h" extern char * strpbrk(const char *,const char *); extern char * strsep(char **,const char *); extern __kernel_size_t strspn(const char *,const char *); extern __kernel_size_t strcspn(const char *,const char *); # 1 "linux-2.6.16.6/include/asm/string.h" 1 # 18 "linux-2.6.16.6/include/asm/string.h" extern __kernel_size_t strlen (const char *); extern void *memcpy (void *, const void *, __kernel_size_t); extern void *memset (void *, int, __kernel_size_t); # 25 "linux-2.6.16.6/include/linux/string.h" 2 extern char * strcpy(char *,const char *); extern char * strncpy(char *,const char *, __kernel_size_t); size_t strlcpy(char *, const char *, size_t); extern char * strcat(char *, const char *); extern char * strncat(char *, const char *, __kernel_size_t); extern size_t strlcat(char *, const char *, __kernel_size_t); extern int strcmp(const char *,const char *); extern int strncmp(const char *,const char *,__kernel_size_t); extern int strnicmp(const char *, const char *, __kernel_size_t); extern char * strchr(const char *,int); extern char * strnchr(const char *, size_t, int); extern char * strrchr(const char *,int); extern char * strstr(const char *,const char *); extern __kernel_size_t strnlen(const char *,__kernel_size_t); # 79 "linux-2.6.16.6/include/linux/string.h" extern void * memmove(void *,const void *,__kernel_size_t); extern void * memscan(void *,int,__kernel_size_t); extern int memcmp(const void *,const void *,__kernel_size_t); extern void * memchr(const void *,int,__kernel_size_t); extern char *kstrdup(const char *s, gfp_t gfp); # 9 "linux-2.6.16.6/include/linux/bitmap.h" 2 # 77 "linux-2.6.16.6/include/linux/bitmap.h" extern int __bitmap_empty(const unsigned long *bitmap, int bits); extern int __bitmap_full(const unsigned long *bitmap, int bits); extern int __bitmap_equal(const unsigned long *bitmap1, const unsigned long *bitmap2, int bits); extern void __bitmap_complement(unsigned long *dst, const unsigned long *src, int bits); extern void __bitmap_shift_right(unsigned long *dst, const unsigned long *src, int shift, int bits); extern void __bitmap_shift_left(unsigned long *dst, const unsigned long *src, int shift, int bits); extern void __bitmap_and(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, int bits); extern void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, int bits); extern void __bitmap_xor(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, int bits); extern void __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, int bits); extern int __bitmap_intersects(const unsigned long *bitmap1, const unsigned long *bitmap2, int bits); extern int __bitmap_subset(const unsigned long *bitmap1, const unsigned long *bitmap2, int bits); extern int __bitmap_weight(const unsigned long *bitmap, int bits); extern int bitmap_scnprintf(char *buf, unsigned int len, const unsigned long *src, int nbits); extern int bitmap_parse(const char *ubuf, unsigned int ulen, unsigned long *dst, int nbits); extern int bitmap_scnlistprintf(char *buf, unsigned int len, const unsigned long *src, int nbits); extern int bitmap_parselist(const char *buf, unsigned long *maskp, int nmaskbits); extern void bitmap_remap(unsigned long *dst, const unsigned long *src, const unsigned long *old, const unsigned long *new, int bits); extern int bitmap_bitremap(int oldbit, const unsigned long *old, const unsigned long *new, int bits); extern int bitmap_find_free_region(unsigned long *bitmap, int bits, int order); extern void bitmap_release_region(unsigned long *bitmap, int pos, int order); extern int bitmap_allocate_region(unsigned long *bitmap, int pos, int order); static inline __attribute__((always_inline)) void bitmap_zero(unsigned long *dst, int nbits) { if (nbits <= 64) *dst = 0UL; else { int len = (((nbits)+64 -1)/64) * sizeof(unsigned long); memset(dst, 0, len); } } static inline __attribute__((always_inline)) void bitmap_fill(unsigned long *dst, int nbits) { size_t nlongs = (((nbits)+64 -1)/64); if (nlongs > 1) { int len = (nlongs - 1) * sizeof(unsigned long); memset(dst, 0xff, len); } dst[nlongs - 1] = ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL ); } static inline __attribute__((always_inline)) void bitmap_copy(unsigned long *dst, const unsigned long *src, int nbits) { if (nbits <= 64) *dst = *src; else { int len = (((nbits)+64 -1)/64) * sizeof(unsigned long); memcpy(dst, src, len); } } static inline __attribute__((always_inline)) void bitmap_and(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 64) *dst = *src1 & *src2; else __bitmap_and(dst, src1, src2, nbits); } static inline __attribute__((always_inline)) void bitmap_or(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 64) *dst = *src1 | *src2; else __bitmap_or(dst, src1, src2, nbits); } static inline __attribute__((always_inline)) void bitmap_xor(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 64) *dst = *src1 ^ *src2; else __bitmap_xor(dst, src1, src2, nbits); } static inline __attribute__((always_inline)) void bitmap_andnot(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 64) *dst = *src1 & ~(*src2); else __bitmap_andnot(dst, src1, src2, nbits); } static inline __attribute__((always_inline)) void bitmap_complement(unsigned long *dst, const unsigned long *src, int nbits) { if (nbits <= 64) *dst = ~(*src) & ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL ); else __bitmap_complement(dst, src, nbits); } static inline __attribute__((always_inline)) int bitmap_equal(const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 64) return ! ((*src1 ^ *src2) & ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL )); else return __bitmap_equal(src1, src2, nbits); } static inline __attribute__((always_inline)) int bitmap_intersects(const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 64) return ((*src1 & *src2) & ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL )) != 0; else return __bitmap_intersects(src1, src2, nbits); } static inline __attribute__((always_inline)) int bitmap_subset(const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 64) return ! ((*src1 & ~(*src2)) & ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL )); else return __bitmap_subset(src1, src2, nbits); } static inline __attribute__((always_inline)) int bitmap_empty(const unsigned long *src, int nbits) { if (nbits <= 64) return ! (*src & ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL )); else return __bitmap_empty(src, nbits); } static inline __attribute__((always_inline)) int bitmap_full(const unsigned long *src, int nbits) { if (nbits <= 64) return ! (~(*src) & ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL )); else return __bitmap_full(src, nbits); } static inline __attribute__((always_inline)) int bitmap_weight(const unsigned long *src, int nbits) { return __bitmap_weight(src, nbits); } static inline __attribute__((always_inline)) void bitmap_shift_right(unsigned long *dst, const unsigned long *src, int n, int nbits) { if (nbits <= 64) *dst = *src >> n; else __bitmap_shift_right(dst, src, n, nbits); } static inline __attribute__((always_inline)) void bitmap_shift_left(unsigned long *dst, const unsigned long *src, int n, int nbits) { if (nbits <= 64) *dst = (*src << n) & ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL ); else __bitmap_shift_left(dst, src, n, nbits); } # 87 "linux-2.6.16.6/include/linux/cpumask.h" 2 typedef struct { unsigned long bits[(((64)+64 -1)/64)]; } cpumask_t; extern cpumask_t _unused_cpumask_arg_; static inline __attribute__((always_inline)) void __cpu_set(int cpu, volatile cpumask_t *dstp) { set_bit(cpu, dstp->bits); } static inline __attribute__((always_inline)) void __cpu_clear(int cpu, volatile cpumask_t *dstp) { clear_bit(cpu, dstp->bits); } static inline __attribute__((always_inline)) void __cpus_setall(cpumask_t *dstp, int nbits) { bitmap_fill(dstp->bits, nbits); } static inline __attribute__((always_inline)) void __cpus_clear(cpumask_t *dstp, int nbits) { bitmap_zero(dstp->bits, nbits); } static inline __attribute__((always_inline)) int __cpu_test_and_set(int cpu, cpumask_t *addr) { return test_and_set_bit(cpu, addr->bits); } static inline __attribute__((always_inline)) void __cpus_and(cpumask_t *dstp, const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { bitmap_and(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) void __cpus_or(cpumask_t *dstp, const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { bitmap_or(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) void __cpus_xor(cpumask_t *dstp, const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { bitmap_xor(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) void __cpus_andnot(cpumask_t *dstp, const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { bitmap_andnot(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) void __cpus_complement(cpumask_t *dstp, const cpumask_t *srcp, int nbits) { bitmap_complement(dstp->bits, srcp->bits, nbits); } static inline __attribute__((always_inline)) int __cpus_equal(const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { return bitmap_equal(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) int __cpus_intersects(const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { return bitmap_intersects(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) int __cpus_subset(const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { return bitmap_subset(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) int __cpus_empty(const cpumask_t *srcp, int nbits) { return bitmap_empty(srcp->bits, nbits); } static inline __attribute__((always_inline)) int __cpus_full(const cpumask_t *srcp, int nbits) { return bitmap_full(srcp->bits, nbits); } static inline __attribute__((always_inline)) int __cpus_weight(const cpumask_t *srcp, int nbits) { return bitmap_weight(srcp->bits, nbits); } static inline __attribute__((always_inline)) void __cpus_shift_right(cpumask_t *dstp, const cpumask_t *srcp, int n, int nbits) { bitmap_shift_right(dstp->bits, srcp->bits, n, nbits); } static inline __attribute__((always_inline)) void __cpus_shift_left(cpumask_t *dstp, const cpumask_t *srcp, int n, int nbits) { bitmap_shift_left(dstp->bits, srcp->bits, n, nbits); } static inline __attribute__((always_inline)) int __first_cpu(const cpumask_t *srcp, int nbits) { return ({ int __x = (nbits); int __y = (__find_next_bit(((srcp->bits)), ((nbits)), (0))); __x < __y ? __x: __y; }); } static inline __attribute__((always_inline)) int __next_cpu(int n, const cpumask_t *srcp, int nbits) { return ({ int __x = (nbits); int __y = (__find_next_bit((srcp->bits), (nbits), (n+1))); __x < __y ? __x: __y; }); } # 272 "linux-2.6.16.6/include/linux/cpumask.h" static inline __attribute__((always_inline)) int __cpumask_scnprintf(char *buf, int len, const cpumask_t *srcp, int nbits) { return bitmap_scnprintf(buf, len, srcp->bits, nbits); } static inline __attribute__((always_inline)) int __cpumask_parse(const char *buf, int len, cpumask_t *dstp, int nbits) { return bitmap_parse(buf, len, dstp->bits, nbits); } static inline __attribute__((always_inline)) int __cpulist_scnprintf(char *buf, int len, const cpumask_t *srcp, int nbits) { return bitmap_scnlistprintf(buf, len, srcp->bits, nbits); } static inline __attribute__((always_inline)) int __cpulist_parse(const char *buf, cpumask_t *dstp, int nbits) { return bitmap_parselist(buf, dstp->bits, nbits); } static inline __attribute__((always_inline)) int __cpu_remap(int oldbit, const cpumask_t *oldp, const cpumask_t *newp, int nbits) { return bitmap_bitremap(oldbit, oldp->bits, newp->bits, nbits); } static inline __attribute__((always_inline)) void __cpus_remap(cpumask_t *dstp, const cpumask_t *srcp, const cpumask_t *oldp, const cpumask_t *newp, int nbits) { bitmap_remap(dstp->bits, srcp->bits, oldp->bits, newp->bits, nbits); } # 381 "linux-2.6.16.6/include/linux/cpumask.h" extern cpumask_t cpu_possible_map; extern cpumask_t cpu_online_map; extern cpumask_t cpu_present_map; # 16 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/errno.h" 1 # 1 "linux-2.6.16.6/include/asm/errno.h" 1 # 1 "linux-2.6.16.6/include/asm-generic/errno.h" 1 # 1 "linux-2.6.16.6/include/asm-generic/errno-base.h" 1 # 5 "linux-2.6.16.6/include/asm-generic/errno.h" 2 # 1 "linux-2.6.16.6/include/asm/errno.h" 2 # 5 "linux-2.6.16.6/include/linux/errno.h" 2 # 17 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/nodemask.h" 1 # 88 "linux-2.6.16.6/include/linux/nodemask.h" typedef struct { unsigned long bits[((((1 << 8))+64 -1)/64)]; } nodemask_t; extern nodemask_t _unused_nodemask_arg_; static inline __attribute__((always_inline)) void __node_set(int node, volatile nodemask_t *dstp) { set_bit(node, dstp->bits); } static inline __attribute__((always_inline)) void __node_clear(int node, volatile nodemask_t *dstp) { clear_bit(node, dstp->bits); } static inline __attribute__((always_inline)) void __nodes_setall(nodemask_t *dstp, int nbits) { bitmap_fill(dstp->bits, nbits); } static inline __attribute__((always_inline)) void __nodes_clear(nodemask_t *dstp, int nbits) { bitmap_zero(dstp->bits, nbits); } static inline __attribute__((always_inline)) int __node_test_and_set(int node, nodemask_t *addr) { return test_and_set_bit(node, addr->bits); } static inline __attribute__((always_inline)) void __nodes_and(nodemask_t *dstp, const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { bitmap_and(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) void __nodes_or(nodemask_t *dstp, const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { bitmap_or(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) void __nodes_xor(nodemask_t *dstp, const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { bitmap_xor(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) void __nodes_andnot(nodemask_t *dstp, const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { bitmap_andnot(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) void __nodes_complement(nodemask_t *dstp, const nodemask_t *srcp, int nbits) { bitmap_complement(dstp->bits, srcp->bits, nbits); } static inline __attribute__((always_inline)) int __nodes_equal(const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { return bitmap_equal(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) int __nodes_intersects(const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { return bitmap_intersects(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) int __nodes_subset(const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { return bitmap_subset(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) int __nodes_empty(const nodemask_t *srcp, int nbits) { return bitmap_empty(srcp->bits, nbits); } static inline __attribute__((always_inline)) int __nodes_full(const nodemask_t *srcp, int nbits) { return bitmap_full(srcp->bits, nbits); } static inline __attribute__((always_inline)) int __nodes_weight(const nodemask_t *srcp, int nbits) { return bitmap_weight(srcp->bits, nbits); } static inline __attribute__((always_inline)) void __nodes_shift_right(nodemask_t *dstp, const nodemask_t *srcp, int n, int nbits) { bitmap_shift_right(dstp->bits, srcp->bits, n, nbits); } static inline __attribute__((always_inline)) void __nodes_shift_left(nodemask_t *dstp, const nodemask_t *srcp, int n, int nbits) { bitmap_shift_left(dstp->bits, srcp->bits, n, nbits); } static inline __attribute__((always_inline)) int __first_node(const nodemask_t *srcp) { return ({ int __x = ((1 << 8)); int __y = (__find_next_bit(((srcp->bits)), (((1 << 8))), (0))); __x < __y ? __x: __y; }); } static inline __attribute__((always_inline)) int __next_node(int n, const nodemask_t *srcp) { return ({ int __x = ((1 << 8)); int __y = (__find_next_bit((srcp->bits), ((1 << 8)), (n+1))); __x < __y ? __x: __y; }); } # 251 "linux-2.6.16.6/include/linux/nodemask.h" static inline __attribute__((always_inline)) int __first_unset_node(const nodemask_t *maskp) { return ({ int __x = ((1 << 8)); int __y = (__find_next_zero_bit(((maskp->bits)), (((1 << 8))), (0))); __x < __y ? __x: __y; }); } # 285 "linux-2.6.16.6/include/linux/nodemask.h" static inline __attribute__((always_inline)) int __nodemask_scnprintf(char *buf, int len, const nodemask_t *srcp, int nbits) { return bitmap_scnprintf(buf, len, srcp->bits, nbits); } static inline __attribute__((always_inline)) int __nodemask_parse(const char *buf, int len, nodemask_t *dstp, int nbits) { return bitmap_parse(buf, len, dstp->bits, nbits); } static inline __attribute__((always_inline)) int __nodelist_scnprintf(char *buf, int len, const nodemask_t *srcp, int nbits) { return bitmap_scnlistprintf(buf, len, srcp->bits, nbits); } static inline __attribute__((always_inline)) int __nodelist_parse(const char *buf, nodemask_t *dstp, int nbits) { return bitmap_parselist(buf, dstp->bits, nbits); } static inline __attribute__((always_inline)) int __node_remap(int oldbit, const nodemask_t *oldp, const nodemask_t *newp, int nbits) { return bitmap_bitremap(oldbit, oldp->bits, newp->bits, nbits); } static inline __attribute__((always_inline)) void __nodes_remap(nodemask_t *dstp, const nodemask_t *srcp, const nodemask_t *oldp, const nodemask_t *newp, int nbits) { bitmap_remap(dstp->bits, srcp->bits, oldp->bits, newp->bits, nbits); } # 345 "linux-2.6.16.6/include/linux/nodemask.h" extern nodemask_t node_online_map; extern nodemask_t node_possible_map; # 18 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/asm/semaphore.h" 1 # 9 "linux-2.6.16.6/include/asm/semaphore.h" # 1 "linux-2.6.16.6/include/linux/wait.h" 1 # 23 "linux-2.6.16.6/include/linux/wait.h" # 1 "linux-2.6.16.6/include/linux/list.h" 1 # 1 "linux-2.6.16.6/include/linux/prefetch.h" 1 # 58 "linux-2.6.16.6/include/linux/prefetch.h" static inline __attribute__((always_inline)) void prefetch_range(void *addr, size_t len) { char *cp; char *end = addr + len; for (cp = addr; cp < end; cp += (1 << 7)) prefetch(cp); } # 8 "linux-2.6.16.6/include/linux/list.h" 2 # 28 "linux-2.6.16.6/include/linux/list.h" struct list_head { struct list_head *next, *prev; }; static inline __attribute__((always_inline)) void INIT_LIST_HEAD(struct list_head *list) { list->next = list; list->prev = list; } static inline __attribute__((always_inline)) void __list_add(struct list_head *new, struct list_head *prev, struct list_head *next) { next->prev = new; new->next = next; new->prev = prev; prev->next = new; } # 67 "linux-2.6.16.6/include/linux/list.h" static inline __attribute__((always_inline)) void list_add(struct list_head *new, struct list_head *head) { __list_add(new, head, head->next); } # 80 "linux-2.6.16.6/include/linux/list.h" static inline __attribute__((always_inline)) void list_add_tail(struct list_head *new, struct list_head *head) { __list_add(new, head->prev, head); } static inline __attribute__((always_inline)) void __list_add_rcu(struct list_head * new, struct list_head * prev, struct list_head * next) { new->next = next; new->prev = prev; asm volatile ("mf" ::: "memory"); next->prev = new; prev->next = new; } # 117 "linux-2.6.16.6/include/linux/list.h" static inline __attribute__((always_inline)) void list_add_rcu(struct list_head *new, struct list_head *head) { __list_add_rcu(new, head, head->next); } # 138 "linux-2.6.16.6/include/linux/list.h" static inline __attribute__((always_inline)) void list_add_tail_rcu(struct list_head *new, struct list_head *head) { __list_add_rcu(new, head->prev, head); } # 151 "linux-2.6.16.6/include/linux/list.h" static inline __attribute__((always_inline)) void __list_del(struct list_head * prev, struct list_head * next) { next->prev = prev; prev->next = next; } static inline __attribute__((always_inline)) void list_del(struct list_head *entry) { __list_del(entry->prev, entry->next); entry->next = ((void *) 0x00100100); entry->prev = ((void *) 0x00200200); } # 194 "linux-2.6.16.6/include/linux/list.h" static inline __attribute__((always_inline)) void list_del_rcu(struct list_head *entry) { __list_del(entry->prev, entry->next); entry->prev = ((void *) 0x00200200); } # 207 "linux-2.6.16.6/include/linux/list.h" static inline __attribute__((always_inline)) void list_replace_rcu(struct list_head *old, struct list_head *new) { new->next = old->next; new->prev = old->prev; asm volatile ("mf" ::: "memory"); new->next->prev = new; new->prev->next = new; old->prev = ((void *) 0x00200200); } static inline __attribute__((always_inline)) void list_del_init(struct list_head *entry) { __list_del(entry->prev, entry->next); INIT_LIST_HEAD(entry); } static inline __attribute__((always_inline)) void list_move(struct list_head *list, struct list_head *head) { __list_del(list->prev, list->next); list_add(list, head); } static inline __attribute__((always_inline)) void list_move_tail(struct list_head *list, struct list_head *head) { __list_del(list->prev, list->next); list_add_tail(list, head); } static inline __attribute__((always_inline)) int list_empty(const struct list_head *head) { return head->next == head; } # 272 "linux-2.6.16.6/include/linux/list.h" static inline __attribute__((always_inline)) int list_empty_careful(const struct list_head *head) { struct list_head *next = head->next; return (next == head) && (next == head->prev); } static inline __attribute__((always_inline)) void __list_splice(struct list_head *list, struct list_head *head) { struct list_head *first = list->next; struct list_head *last = list->prev; struct list_head *at = head->next; first->prev = head; head->next = first; last->next = at; at->prev = last; } static inline __attribute__((always_inline)) void list_splice(struct list_head *list, struct list_head *head) { if (!list_empty(list)) __list_splice(list, head); } # 310 "linux-2.6.16.6/include/linux/list.h" static inline __attribute__((always_inline)) void list_splice_init(struct list_head *list, struct list_head *head) { if (!list_empty(list)) { __list_splice(list, head); INIT_LIST_HEAD(list); } } # 528 "linux-2.6.16.6/include/linux/list.h" struct hlist_head { struct hlist_node *first; }; struct hlist_node { struct hlist_node *next, **pprev; }; static inline __attribute__((always_inline)) void INIT_HLIST_NODE(struct hlist_node *h) { h->next = ((void *)0); h->pprev = ((void *)0); } static inline __attribute__((always_inline)) int hlist_unhashed(const struct hlist_node *h) { return !h->pprev; } static inline __attribute__((always_inline)) int hlist_empty(const struct hlist_head *h) { return !h->first; } static inline __attribute__((always_inline)) void __hlist_del(struct hlist_node *n) { struct hlist_node *next = n->next; struct hlist_node **pprev = n->pprev; *pprev = next; if (next) next->pprev = pprev; } static inline __attribute__((always_inline)) void hlist_del(struct hlist_node *n) { __hlist_del(n); n->next = ((void *) 0x00100100); n->pprev = ((void *) 0x00200200); } # 590 "linux-2.6.16.6/include/linux/list.h" static inline __attribute__((always_inline)) void hlist_del_rcu(struct hlist_node *n) { __hlist_del(n); n->pprev = ((void *) 0x00200200); } static inline __attribute__((always_inline)) void hlist_del_init(struct hlist_node *n) { if (n->pprev) { __hlist_del(n); INIT_HLIST_NODE(n); } } # 611 "linux-2.6.16.6/include/linux/list.h" static inline __attribute__((always_inline)) void hlist_replace_rcu(struct hlist_node *old, struct hlist_node *new) { struct hlist_node *next = old->next; new->next = next; new->pprev = old->pprev; asm volatile ("mf" ::: "memory"); if (next) new->next->pprev = &new->next; *new->pprev = new; old->pprev = ((void *) 0x00200200); } static inline __attribute__((always_inline)) void hlist_add_head(struct hlist_node *n, struct hlist_head *h) { struct hlist_node *first = h->first; n->next = first; if (first) first->pprev = &n->next; h->first = n; n->pprev = &h->first; } # 652 "linux-2.6.16.6/include/linux/list.h" static inline __attribute__((always_inline)) void hlist_add_head_rcu(struct hlist_node *n, struct hlist_head *h) { struct hlist_node *first = h->first; n->next = first; n->pprev = &h->first; asm volatile ("mf" ::: "memory"); if (first) first->pprev = &n->next; h->first = n; } static inline __attribute__((always_inline)) void hlist_add_before(struct hlist_node *n, struct hlist_node *next) { n->pprev = next->pprev; n->next = next; next->pprev = &n->next; *(n->pprev) = n; } static inline __attribute__((always_inline)) void hlist_add_after(struct hlist_node *n, struct hlist_node *next) { next->next = n->next; n->next = next; next->pprev = &n->next; if(next->next) next->next->pprev = &next->next; } # 700 "linux-2.6.16.6/include/linux/list.h" static inline __attribute__((always_inline)) void hlist_add_before_rcu(struct hlist_node *n, struct hlist_node *next) { n->pprev = next->pprev; n->next = next; asm volatile ("mf" ::: "memory"); next->pprev = &n->next; *(n->pprev) = n; } # 725 "linux-2.6.16.6/include/linux/list.h" static inline __attribute__((always_inline)) void hlist_add_after_rcu(struct hlist_node *prev, struct hlist_node *n) { n->next = prev->next; n->pprev = &prev->next; asm volatile ("mf" ::: "memory"); prev->next = n; if (n->next) n->next->pprev = &n->next; } # 24 "linux-2.6.16.6/include/linux/wait.h" 2 typedef struct __wait_queue wait_queue_t; typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int sync, void *key); int default_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key); struct __wait_queue { unsigned int flags; void *private; wait_queue_func_t func; struct list_head task_list; }; struct wait_bit_key { void *flags; int bit_nr; }; struct wait_bit_queue { struct wait_bit_key key; wait_queue_t wait; }; struct __wait_queue_head { spinlock_t lock; struct list_head task_list; }; typedef struct __wait_queue_head wait_queue_head_t; struct task_struct; # 81 "linux-2.6.16.6/include/linux/wait.h" static inline __attribute__((always_inline)) void init_waitqueue_head(wait_queue_head_t *q) { do { *(&q->lock) = (spinlock_t) { .raw_lock = { 0 } }; } while (0); INIT_LIST_HEAD(&q->task_list); } static inline __attribute__((always_inline)) void init_waitqueue_entry(wait_queue_t *q, struct task_struct *p) { q->flags = 0; q->private = p; q->func = default_wake_function; } static inline __attribute__((always_inline)) void init_waitqueue_func_entry(wait_queue_t *q, wait_queue_func_t func) { q->flags = 0; q->private = ((void *)0); q->func = func; } static inline __attribute__((always_inline)) int waitqueue_active(wait_queue_head_t *q) { return !list_empty(&q->task_list); } # 116 "linux-2.6.16.6/include/linux/wait.h" extern void add_wait_queue(wait_queue_head_t *q, wait_queue_t * wait); extern void add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t * wait); extern void remove_wait_queue(wait_queue_head_t *q, wait_queue_t * wait); static inline __attribute__((always_inline)) void __add_wait_queue(wait_queue_head_t *head, wait_queue_t *new) { list_add(&new->task_list, &head->task_list); } static inline __attribute__((always_inline)) void __add_wait_queue_tail(wait_queue_head_t *head, wait_queue_t *new) { list_add_tail(&new->task_list, &head->task_list); } static inline __attribute__((always_inline)) void __remove_wait_queue(wait_queue_head_t *head, wait_queue_t *old) { list_del(&old->task_list); } void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr, void *key); extern void __wake_up_locked(wait_queue_head_t *q, unsigned int mode); extern void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr); void __wake_up_bit(wait_queue_head_t *, void *, int); int __wait_on_bit(wait_queue_head_t *, struct wait_bit_queue *, int (*)(void *), unsigned); int __wait_on_bit_lock(wait_queue_head_t *, struct wait_bit_queue *, int (*)(void *), unsigned); void wake_up_bit(void *, int); int out_of_line_wait_on_bit(void *, int, int (*)(void *), unsigned); int out_of_line_wait_on_bit_lock(void *, int, int (*)(void *), unsigned); wait_queue_head_t *bit_waitqueue(void *, int); # 347 "linux-2.6.16.6/include/linux/wait.h" static inline __attribute__((always_inline)) void add_wait_queue_exclusive_locked(wait_queue_head_t *q, wait_queue_t * wait) { wait->flags |= 0x01; __add_wait_queue_tail(q, wait); } static inline __attribute__((always_inline)) void remove_wait_queue_locked(wait_queue_head_t *q, wait_queue_t * wait) { __remove_wait_queue(q, wait); } extern void sleep_on(wait_queue_head_t *q); extern long sleep_on_timeout(wait_queue_head_t *q, signed long timeout); extern void interruptible_sleep_on(wait_queue_head_t *q); extern long interruptible_sleep_on_timeout(wait_queue_head_t *q, signed long timeout); void prepare_to_wait(wait_queue_head_t *q, wait_queue_t *wait, int state); void prepare_to_wait_exclusive(wait_queue_head_t *q, wait_queue_t *wait, int state); void finish_wait(wait_queue_head_t *q, wait_queue_t *wait); int autoremove_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key); int wake_bit_function(wait_queue_t *wait, unsigned mode, int sync, void *key); # 425 "linux-2.6.16.6/include/linux/wait.h" static inline __attribute__((always_inline)) int wait_on_bit(void *word, int bit, int (*action)(void *), unsigned mode) { if (!test_bit(bit, word)) return 0; return out_of_line_wait_on_bit(word, bit, action, mode); } # 449 "linux-2.6.16.6/include/linux/wait.h" static inline __attribute__((always_inline)) int wait_on_bit_lock(void *word, int bit, int (*action)(void *), unsigned mode) { if (!test_and_set_bit(bit, word)) return 0; return out_of_line_wait_on_bit_lock(word, bit, action, mode); } # 10 "linux-2.6.16.6/include/asm/semaphore.h" 2 # 1 "linux-2.6.16.6/include/linux/rwsem.h" 1 # 22 "linux-2.6.16.6/include/linux/rwsem.h" struct rw_semaphore; # 1 "linux-2.6.16.6/include/asm/rwsem.h" 1 # 32 "linux-2.6.16.6/include/asm/rwsem.h" struct rw_semaphore { signed long count; spinlock_t wait_lock; struct list_head wait_list; }; # 65 "linux-2.6.16.6/include/asm/rwsem.h" extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem); extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem); extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem); extern struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem); static inline __attribute__((always_inline)) void init_rwsem (struct rw_semaphore *sem) { sem->count = 0x0000000000000000UL; do { *(&sem->wait_lock) = (spinlock_t) { .raw_lock = { 0 } }; } while (0); INIT_LIST_HEAD(&sem->wait_list); } static inline __attribute__((always_inline)) void __down_read (struct rw_semaphore *sem) { long result = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *)&sem->count), "i" (1) : "memory"); ia64_intri_res; }); if (result < 0) rwsem_down_read_failed(sem); } static inline __attribute__((always_inline)) void __down_write (struct rw_semaphore *sem) { long old, new; do { old = sem->count; new = old + (-0x0000000100000000UL + 0x0000000000000001UL); } while (({ __u64 _o_, _r_; switch (sizeof(*(&sem->count))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (long) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } switch (sizeof(*(&sem->count))) { case 1: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg1.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u8 *) (&sem->count)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 2: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg2.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u16 *) (&sem->count)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 4: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *) (&sem->count)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 8: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg8.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u64 *) (&sem->count)), "r"((new)) : "memory"); ia64_intri_res; }); break; default: _r_ = ia64_cmpxchg_called_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old); if (old != 0) rwsem_down_write_failed(sem); } static inline __attribute__((always_inline)) void __up_read (struct rw_semaphore *sem) { long result = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *)&sem->count), "i" (-1) : "memory"); ia64_intri_res; }); if (result < 0 && (--result & 0x00000000ffffffffUL) == 0) rwsem_wake(sem); } static inline __attribute__((always_inline)) void __up_write (struct rw_semaphore *sem) { long old, new; do { old = sem->count; new = old - (-0x0000000100000000UL + 0x0000000000000001UL); } while (({ __u64 _o_, _r_; switch (sizeof(*(&sem->count))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (long) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } switch (sizeof(*(&sem->count))) { case 1: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg1.rel %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u8 *) (&sem->count)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 2: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg2.rel %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u16 *) (&sem->count)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 4: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg4.rel %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *) (&sem->count)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 8: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg8.rel %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u64 *) (&sem->count)), "r"((new)) : "memory"); ia64_intri_res; }); break; default: _r_ = ia64_cmpxchg_called_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old); if (new < 0 && (new & 0x00000000ffffffffUL) == 0) rwsem_wake(sem); } static inline __attribute__((always_inline)) int __down_read_trylock (struct rw_semaphore *sem) { long tmp; while ((tmp = sem->count) >= 0) { if (tmp == ({ __u64 _o_, _r_; switch (sizeof(*(&sem->count))) { case 1: _o_ = (__u8 ) (long) ((tmp)); break; case 2: _o_ = (__u16) (long) ((tmp)); break; case 4: _o_ = (__u32) (long) ((tmp)); break; case 8: _o_ = (__u64) (long) ((tmp)); break; default: break; } switch (sizeof(*(&sem->count))) { case 1: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg1.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u8 *) (&sem->count)), "r"((tmp+1)) : "memory"); ia64_intri_res; }); break; case 2: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg2.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u16 *) (&sem->count)), "r"((tmp+1)) : "memory"); ia64_intri_res; }); break; case 4: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *) (&sem->count)), "r"((tmp+1)) : "memory"); ia64_intri_res; }); break; case 8: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg8.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u64 *) (&sem->count)), "r"((tmp+1)) : "memory"); ia64_intri_res; }); break; default: _r_ = ia64_cmpxchg_called_with_bad_pointer(); break; } (__typeof__((tmp))) _r_; })) { return 1; } } return 0; } static inline __attribute__((always_inline)) int __down_write_trylock (struct rw_semaphore *sem) { long tmp = ({ __u64 _o_, _r_; switch (sizeof(*(&sem->count))) { case 1: _o_ = (__u8 ) (long) ((0x0000000000000000UL)); break; case 2: _o_ = (__u16) (long) ((0x0000000000000000UL)); break; case 4: _o_ = (__u32) (long) ((0x0000000000000000UL)); break; case 8: _o_ = (__u64) (long) ((0x0000000000000000UL)); break; default: break; } switch (sizeof(*(&sem->count))) { case 1: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg1.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u8 *) (&sem->count)), "r"(((-0x0000000100000000UL + 0x0000000000000001UL))) : "memory"); ia64_intri_res; }); break; case 2: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg2.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u16 *) (&sem->count)), "r"(((-0x0000000100000000UL + 0x0000000000000001UL))) : "memory"); ia64_intri_res; }); break; case 4: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *) (&sem->count)), "r"(((-0x0000000100000000UL + 0x0000000000000001UL))) : "memory"); ia64_intri_res; }); break; case 8: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg8.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u64 *) (&sem->count)), "r"(((-0x0000000100000000UL + 0x0000000000000001UL))) : "memory"); ia64_intri_res; }); break; default: _r_ = ia64_cmpxchg_called_with_bad_pointer(); break; } (__typeof__((0x0000000000000000UL))) _r_; }); return tmp == 0x0000000000000000UL; } static inline __attribute__((always_inline)) void __downgrade_write (struct rw_semaphore *sem) { long old, new; do { old = sem->count; new = old - -0x0000000100000000UL; } while (({ __u64 _o_, _r_; switch (sizeof(*(&sem->count))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (long) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } switch (sizeof(*(&sem->count))) { case 1: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg1.rel %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u8 *) (&sem->count)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 2: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg2.rel %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u16 *) (&sem->count)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 4: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg4.rel %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u32 *) (&sem->count)), "r"((new)) : "memory"); ia64_intri_res; }); break; case 8: _r_ = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(_o_)); asm volatile ("cmpxchg8.rel %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"((__u64 *) (&sem->count)), "r"((new)) : "memory"); ia64_intri_res; }); break; default: _r_ = ia64_cmpxchg_called_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old); if (old < 0) rwsem_downgrade_wake(sem); } # 189 "linux-2.6.16.6/include/asm/rwsem.h" static inline __attribute__((always_inline)) int rwsem_is_locked(struct rw_semaphore *sem) { return (sem->count != 0); } # 28 "linux-2.6.16.6/include/linux/rwsem.h" 2 # 41 "linux-2.6.16.6/include/linux/rwsem.h" static inline __attribute__((always_inline)) void down_read(struct rw_semaphore *sem) { do { do { } while (0); } while (0); ; __down_read(sem); ; } static inline __attribute__((always_inline)) int down_read_trylock(struct rw_semaphore *sem) { int ret; ; ret = __down_read_trylock(sem); ; return ret; } static inline __attribute__((always_inline)) void down_write(struct rw_semaphore *sem) { do { do { } while (0); } while (0); ; __down_write(sem); ; } static inline __attribute__((always_inline)) int down_write_trylock(struct rw_semaphore *sem) { int ret; ; ret = __down_write_trylock(sem); ; return ret; } static inline __attribute__((always_inline)) void up_read(struct rw_semaphore *sem) { ; __up_read(sem); ; } static inline __attribute__((always_inline)) void up_write(struct rw_semaphore *sem) { ; __up_write(sem); ; } static inline __attribute__((always_inline)) void downgrade_write(struct rw_semaphore *sem) { ; __downgrade_write(sem); ; } # 11 "linux-2.6.16.6/include/asm/semaphore.h" 2 struct semaphore { atomic_t count; int sleepers; wait_queue_head_t wait; }; # 33 "linux-2.6.16.6/include/asm/semaphore.h" static inline __attribute__((always_inline)) void sema_init (struct semaphore *sem, int val) { *sem = (struct semaphore) { .count = ((atomic_t) { (val) }), .sleepers = 0, .wait = { .lock = (spinlock_t) { .raw_lock = { 0 } }, .task_list = { &((*sem).wait).task_list, &((*sem).wait).task_list } } }; } static inline __attribute__((always_inline)) void init_MUTEX (struct semaphore *sem) { sema_init(sem, 1); } static inline __attribute__((always_inline)) void init_MUTEX_LOCKED (struct semaphore *sem) { sema_init(sem, 0); } extern void __down (struct semaphore * sem); extern int __down_interruptible (struct semaphore * sem); extern int __down_trylock (struct semaphore * sem); extern void __up (struct semaphore * sem); static inline __attribute__((always_inline)) void down (struct semaphore *sem) { do { do { } while (0); } while (0); if (({ __u64 _tmp; volatile __typeof__(*(&sem->count.counter)) *_v = (&sem->count.counter); if ((-1) == -16) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == -8) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == -4) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == -1) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == 1) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == 4) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == 8) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == 16) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&sem->count.counter))) (_tmp); }) < 1) __down(sem); } static inline __attribute__((always_inline)) int down_interruptible (struct semaphore * sem) { int ret = 0; do { do { } while (0); } while (0); if (({ __u64 _tmp; volatile __typeof__(*(&sem->count.counter)) *_v = (&sem->count.counter); if ((-1) == -16) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == -8) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == -4) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == -1) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == 1) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == 4) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == 8) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == 16) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&sem->count.counter))) (_tmp); }) < 1) ret = __down_interruptible(sem); return ret; } static inline __attribute__((always_inline)) int down_trylock (struct semaphore *sem) { int ret = 0; if (({ __u64 _tmp; volatile __typeof__(*(&sem->count.counter)) *_v = (&sem->count.counter); if ((-1) == -16) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == -8) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == -4) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == -1) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == 1) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == 4) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == 8) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-1) == 16) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.acq %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&sem->count.counter))) (_tmp); }) < 1) ret = __down_trylock(sem); return ret; } static inline __attribute__((always_inline)) void up (struct semaphore * sem) { if (({ __u64 _tmp; volatile __typeof__(*(&sem->count.counter)) *_v = (&sem->count.counter); if ((1) == -16) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((1) == -8) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((1) == -4) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((1) == -1) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((1) == 1) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((1) == 4) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((1) == 8) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((1) == 16) ({ switch (sizeof(*(&sem->count.counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&sem->count.counter))) (_tmp); }) <= -1) __up(sem); } # 21 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/asm/mmu.h" 1 # 9 "linux-2.6.16.6/include/asm/mmu.h" typedef volatile unsigned long mm_context_t; typedef unsigned long nv_mm_context_t; # 24 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/asm/cputime.h" 1 # 1 "linux-2.6.16.6/include/asm-generic/cputime.h" 1 typedef unsigned long cputime_t; # 23 "linux-2.6.16.6/include/asm-generic/cputime.h" typedef u64 cputime64_t; # 5 "linux-2.6.16.6/include/asm/cputime.h" 2 # 25 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/smp.h" 1 # 11 "linux-2.6.16.6/include/linux/smp.h" extern void cpu_idle(void); # 1 "linux-2.6.16.6/include/asm/smp.h" 1 # 14 "linux-2.6.16.6/include/asm/smp.h" # 1 "linux-2.6.16.6/include/linux/init.h" 1 # 64 "linux-2.6.16.6/include/linux/init.h" typedef int (*initcall_t)(void); typedef void (*exitcall_t)(void); extern initcall_t __con_initcall_start[], __con_initcall_end[]; extern initcall_t __security_initcall_start[], __security_initcall_end[]; extern char saved_command_line[]; # 110 "linux-2.6.16.6/include/linux/init.h" struct obs_kernel_param { const char *str; int (*setup_func)(char *); int early; }; # 145 "linux-2.6.16.6/include/linux/init.h" void __attribute__ ((__section__ (".init.text"))) parse_early_param(void); # 15 "linux-2.6.16.6/include/asm/smp.h" 2 # 1 "linux-2.6.16.6/include/asm/io.h" 1 # 46 "linux-2.6.16.6/include/asm/io.h" struct io_space { unsigned long mmio_base; int sparse; }; extern struct io_space io_space[]; extern unsigned int num_io_spaces; # 70 "linux-2.6.16.6/include/asm/io.h" # 1 "linux-2.6.16.6/include/asm/machvec.h" 1 # 17 "linux-2.6.16.6/include/asm/machvec.h" struct device; struct pt_regs; struct scatterlist; struct page; struct mm_struct; struct pci_bus; typedef void ia64_mv_setup_t (char **); typedef void ia64_mv_cpu_init_t (void); typedef void ia64_mv_irq_init_t (void); typedef void ia64_mv_send_ipi_t (int, int, int, int); typedef void ia64_mv_timer_interrupt_t (int, void *, struct pt_regs *); typedef void ia64_mv_global_tlb_purge_t (struct mm_struct *, unsigned long, unsigned long, unsigned long); typedef void ia64_mv_tlb_migrate_finish_t (struct mm_struct *); typedef unsigned int ia64_mv_local_vector_to_irq (u8); typedef char *ia64_mv_pci_get_legacy_mem_t (struct pci_bus *); typedef int ia64_mv_pci_legacy_read_t (struct pci_bus *, u16 port, u32 *val, u8 size); typedef int ia64_mv_pci_legacy_write_t (struct pci_bus *, u16 port, u32 val, u8 size); typedef void ia64_mv_dma_init (void); typedef void *ia64_mv_dma_alloc_coherent (struct device *, size_t, dma_addr_t *, gfp_t); typedef void ia64_mv_dma_free_coherent (struct device *, size_t, void *, dma_addr_t); typedef dma_addr_t ia64_mv_dma_map_single (struct device *, void *, size_t, int); typedef void ia64_mv_dma_unmap_single (struct device *, dma_addr_t, size_t, int); typedef int ia64_mv_dma_map_sg (struct device *, struct scatterlist *, int, int); typedef void ia64_mv_dma_unmap_sg (struct device *, struct scatterlist *, int, int); typedef void ia64_mv_dma_sync_single_for_cpu (struct device *, dma_addr_t, size_t, int); typedef void ia64_mv_dma_sync_sg_for_cpu (struct device *, struct scatterlist *, int, int); typedef void ia64_mv_dma_sync_single_for_device (struct device *, dma_addr_t, size_t, int); typedef void ia64_mv_dma_sync_sg_for_device (struct device *, struct scatterlist *, int, int); typedef int ia64_mv_dma_mapping_error (dma_addr_t dma_addr); typedef int ia64_mv_dma_supported (struct device *, u64); # 62 "linux-2.6.16.6/include/asm/machvec.h" typedef unsigned int ia64_mv_inb_t (unsigned long); typedef unsigned int ia64_mv_inw_t (unsigned long); typedef unsigned int ia64_mv_inl_t (unsigned long); typedef void ia64_mv_outb_t (unsigned char, unsigned long); typedef void ia64_mv_outw_t (unsigned short, unsigned long); typedef void ia64_mv_outl_t (unsigned int, unsigned long); typedef void ia64_mv_mmiowb_t (void); typedef unsigned char ia64_mv_readb_t (const volatile void *); typedef unsigned short ia64_mv_readw_t (const volatile void *); typedef unsigned int ia64_mv_readl_t (const volatile void *); typedef unsigned long ia64_mv_readq_t (const volatile void *); typedef unsigned char ia64_mv_readb_relaxed_t (const volatile void *); typedef unsigned short ia64_mv_readw_relaxed_t (const volatile void *); typedef unsigned int ia64_mv_readl_relaxed_t (const volatile void *); typedef unsigned long ia64_mv_readq_relaxed_t (const volatile void *); static inline __attribute__((always_inline)) void machvec_noop (void) { } static inline __attribute__((always_inline)) void machvec_noop_mm (struct mm_struct *mm) { } extern void machvec_setup (char **); extern void machvec_timer_interrupt (int, void *, struct pt_regs *); extern void machvec_dma_sync_single (struct device *, dma_addr_t, size_t, int); extern void machvec_dma_sync_sg (struct device *, struct scatterlist *, int, int); extern void machvec_tlb_migrate_finish (struct mm_struct *); # 156 "linux-2.6.16.6/include/asm/machvec.h" struct ia64_machine_vector { const char *name; ia64_mv_setup_t *setup; ia64_mv_cpu_init_t *cpu_init; ia64_mv_irq_init_t *irq_init; ia64_mv_send_ipi_t *send_ipi; ia64_mv_timer_interrupt_t *timer_interrupt; ia64_mv_global_tlb_purge_t *global_tlb_purge; ia64_mv_tlb_migrate_finish_t *tlb_migrate_finish; ia64_mv_dma_init *dma_init; ia64_mv_dma_alloc_coherent *dma_alloc_coherent; ia64_mv_dma_free_coherent *dma_free_coherent; ia64_mv_dma_map_single *dma_map_single; ia64_mv_dma_unmap_single *dma_unmap_single; ia64_mv_dma_map_sg *dma_map_sg; ia64_mv_dma_unmap_sg *dma_unmap_sg; ia64_mv_dma_sync_single_for_cpu *dma_sync_single_for_cpu; ia64_mv_dma_sync_sg_for_cpu *dma_sync_sg_for_cpu; ia64_mv_dma_sync_single_for_device *dma_sync_single_for_device; ia64_mv_dma_sync_sg_for_device *dma_sync_sg_for_device; ia64_mv_dma_mapping_error *dma_mapping_error; ia64_mv_dma_supported *dma_supported; ia64_mv_local_vector_to_irq *local_vector_to_irq; ia64_mv_pci_get_legacy_mem_t *pci_get_legacy_mem; ia64_mv_pci_legacy_read_t *pci_legacy_read; ia64_mv_pci_legacy_write_t *pci_legacy_write; ia64_mv_inb_t *inb; ia64_mv_inw_t *inw; ia64_mv_inl_t *inl; ia64_mv_outb_t *outb; ia64_mv_outw_t *outw; ia64_mv_outl_t *outl; ia64_mv_mmiowb_t *mmiowb; ia64_mv_readb_t *readb; ia64_mv_readw_t *readw; ia64_mv_readl_t *readl; ia64_mv_readq_t *readq; ia64_mv_readb_relaxed_t *readb_relaxed; ia64_mv_readw_relaxed_t *readw_relaxed; ia64_mv_readl_relaxed_t *readl_relaxed; ia64_mv_readq_relaxed_t *readq_relaxed; } __attribute__((__aligned__(16))); # 243 "linux-2.6.16.6/include/asm/machvec.h" extern struct ia64_machine_vector ia64_mv; extern void machvec_init (const char *name); # 253 "linux-2.6.16.6/include/asm/machvec.h" extern ia64_mv_dma_init swiotlb_init; extern ia64_mv_dma_alloc_coherent swiotlb_alloc_coherent; extern ia64_mv_dma_free_coherent swiotlb_free_coherent; extern ia64_mv_dma_map_single swiotlb_map_single; extern ia64_mv_dma_unmap_single swiotlb_unmap_single; extern ia64_mv_dma_map_sg swiotlb_map_sg; extern ia64_mv_dma_unmap_sg swiotlb_unmap_sg; extern ia64_mv_dma_sync_single_for_cpu swiotlb_sync_single_for_cpu; extern ia64_mv_dma_sync_sg_for_cpu swiotlb_sync_sg_for_cpu; extern ia64_mv_dma_sync_single_for_device swiotlb_sync_single_for_device; extern ia64_mv_dma_sync_sg_for_device swiotlb_sync_sg_for_device; extern ia64_mv_dma_mapping_error swiotlb_dma_mapping_error; extern ia64_mv_dma_supported swiotlb_dma_supported; # 71 "linux-2.6.16.6/include/asm/io.h" 2 # 1 "linux-2.6.16.6/include/asm-generic/iomap.h" 1 # 28 "linux-2.6.16.6/include/asm-generic/iomap.h" extern unsigned int ioread8(void *); extern unsigned int ioread16(void *); extern unsigned int ioread16be(void *); extern unsigned int ioread32(void *); extern unsigned int ioread32be(void *); extern void iowrite8(u8, void *); extern void iowrite16(u16, void *); extern void iowrite16be(u16, void *); extern void iowrite32(u32, void *); extern void iowrite32be(u32, void *); # 51 "linux-2.6.16.6/include/asm-generic/iomap.h" extern void ioread8_rep(void *port, void *buf, unsigned long count); extern void ioread16_rep(void *port, void *buf, unsigned long count); extern void ioread32_rep(void *port, void *buf, unsigned long count); extern void iowrite8_rep(void *port, const void *buf, unsigned long count); extern void iowrite16_rep(void *port, const void *buf, unsigned long count); extern void iowrite32_rep(void *port, const void *buf, unsigned long count); extern void *ioport_map(unsigned long port, unsigned int nr); extern void ioport_unmap(void *); struct pci_dev; extern void *pci_iomap(struct pci_dev *dev, int bar, unsigned long max); extern void pci_iounmap(struct pci_dev *dev, void *); # 74 "linux-2.6.16.6/include/asm/io.h" 2 static inline __attribute__((always_inline)) unsigned long virt_to_phys (volatile void *address) { return (unsigned long) address - (7UL<<(61)); } static inline __attribute__((always_inline)) void* phys_to_virt (unsigned long address) { return (void *) (address + (7UL<<(61))); } extern int valid_phys_addr_range (unsigned long addr, size_t *count); extern int valid_mmap_phys_addr_range (unsigned long addr, size_t *count); # 119 "linux-2.6.16.6/include/asm/io.h" static inline __attribute__((always_inline)) void ___ia64_mmiowb(void) { asm volatile ("mf.a" ::: "memory"); } static inline __attribute__((always_inline)) void* __ia64_mk_io_addr (unsigned long port) { struct io_space *space; unsigned long offset; space = &io_space[((port) >> 24)]; port = ((port) & ((1UL << 24) - 1)); if (space->sparse) offset = ((((port) >> 2) << 12) | ((port) & 0xfff)); else offset = port; return (void *) (space->mmio_base | offset); } # 168 "linux-2.6.16.6/include/asm/io.h" static inline __attribute__((always_inline)) unsigned int ___ia64_inb (unsigned long port) { volatile unsigned char *addr = __ia64_mk_io_addr(port); unsigned char ret; ret = *addr; asm volatile ("mf.a" ::: "memory"); return ret; } static inline __attribute__((always_inline)) unsigned int ___ia64_inw (unsigned long port) { volatile unsigned short *addr = __ia64_mk_io_addr(port); unsigned short ret; ret = *addr; asm volatile ("mf.a" ::: "memory"); return ret; } static inline __attribute__((always_inline)) unsigned int ___ia64_inl (unsigned long port) { volatile unsigned int *addr = __ia64_mk_io_addr(port); unsigned int ret; ret = *addr; asm volatile ("mf.a" ::: "memory"); return ret; } static inline __attribute__((always_inline)) void ___ia64_outb (unsigned char val, unsigned long port) { volatile unsigned char *addr = __ia64_mk_io_addr(port); *addr = val; asm volatile ("mf.a" ::: "memory"); } static inline __attribute__((always_inline)) void ___ia64_outw (unsigned short val, unsigned long port) { volatile unsigned short *addr = __ia64_mk_io_addr(port); *addr = val; asm volatile ("mf.a" ::: "memory"); } static inline __attribute__((always_inline)) void ___ia64_outl (unsigned int val, unsigned long port) { volatile unsigned int *addr = __ia64_mk_io_addr(port); *addr = val; asm volatile ("mf.a" ::: "memory"); } static inline __attribute__((always_inline)) void __insb (unsigned long port, void *dst, unsigned long count) { unsigned char *dp = dst; while (count--) *dp++ = ia64_mv.inb(port); } static inline __attribute__((always_inline)) void __insw (unsigned long port, void *dst, unsigned long count) { unsigned short *dp = dst; while (count--) *dp++ = ia64_mv.inw(port); } static inline __attribute__((always_inline)) void __insl (unsigned long port, void *dst, unsigned long count) { unsigned int *dp = dst; while (count--) *dp++ = ia64_mv.inl(port); } static inline __attribute__((always_inline)) void __outsb (unsigned long port, const void *src, unsigned long count) { const unsigned char *sp = src; while (count--) ia64_mv.outb(*sp++, port); } static inline __attribute__((always_inline)) void __outsw (unsigned long port, const void *src, unsigned long count) { const unsigned short *sp = src; while (count--) ia64_mv.outw(*sp++, port); } static inline __attribute__((always_inline)) void __outsl (unsigned long port, const void *src, unsigned long count) { const unsigned int *sp = src; while (count--) ia64_mv.outl(*sp++, port); } # 317 "linux-2.6.16.6/include/asm/io.h" static inline __attribute__((always_inline)) unsigned char ___ia64_readb (const volatile void *addr) { return *(volatile unsigned char *)addr; } static inline __attribute__((always_inline)) unsigned short ___ia64_readw (const volatile void *addr) { return *(volatile unsigned short *)addr; } static inline __attribute__((always_inline)) unsigned int ___ia64_readl (const volatile void *addr) { return *(volatile unsigned int *) addr; } static inline __attribute__((always_inline)) unsigned long ___ia64_readq (const volatile void *addr) { return *(volatile unsigned long *) addr; } static inline __attribute__((always_inline)) void __writeb (unsigned char val, volatile void *addr) { *(volatile unsigned char *) addr = val; } static inline __attribute__((always_inline)) void __writew (unsigned short val, volatile void *addr) { *(volatile unsigned short *) addr = val; } static inline __attribute__((always_inline)) void __writel (unsigned int val, volatile void *addr) { *(volatile unsigned int *) addr = val; } static inline __attribute__((always_inline)) void __writeq (unsigned long val, volatile void *addr) { *(volatile unsigned long *) addr = val; } # 425 "linux-2.6.16.6/include/asm/io.h" static inline __attribute__((always_inline)) void * ioremap (unsigned long offset, unsigned long size) { return (void *) ((6UL<<(61)) | (offset)); } static inline __attribute__((always_inline)) void iounmap (volatile void *addr) { } # 443 "linux-2.6.16.6/include/asm/io.h" extern void memcpy_fromio(void *dst, const volatile void *src, long n); extern void memcpy_toio(volatile void *dst, const void *src, long n); extern void memset_io(volatile void *s, int c, long n); # 460 "linux-2.6.16.6/include/asm/io.h" extern unsigned long ia64_max_iommu_merge_mask; # 21 "linux-2.6.16.6/include/asm/smp.h" 2 static inline __attribute__((always_inline)) unsigned int ia64_get_lid (void) { union { struct { unsigned long reserved : 16; unsigned long eid : 8; unsigned long id : 8; unsigned long ignored : 32; } f; unsigned long bits; } lid; lid.bits = ({ __u64 ia64_intri_res; switch (4160) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(4160 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (4160 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; }); return lid.f.id << 8 | lid.f.eid; } # 51 "linux-2.6.16.6/include/asm/smp.h" extern struct smp_boot_data { int cpu_count; int cpu_phys_id[64]; } smp_boot_data __attribute__ ((__section__ (".init.data"))); extern char no_int_routing ; extern cpumask_t cpu_online_map; extern cpumask_t cpu_core_map[64]; extern cpumask_t cpu_sibling_map[64]; extern int smp_num_siblings; extern int smp_num_cpucores; extern void *ipi_base_addr; extern unsigned char smp_int_redirect; extern volatile int ia64_cpu_to_sapicid[]; extern unsigned long ap_wakeup_vector; static inline __attribute__((always_inline)) int cpu_logical_id (int cpuid) { int i; for (i = 0; i < 64; ++i) if (ia64_cpu_to_sapicid[i] == cpuid) break; return i; } # 93 "linux-2.6.16.6/include/asm/smp.h" static inline __attribute__((always_inline)) void min_xtp (void) { if (smp_int_redirect & (1 << 0)) __writeb((0x00), (ipi_base_addr + 0x1e0008)); } static inline __attribute__((always_inline)) void normal_xtp (void) { if (smp_int_redirect & (1 << 0)) __writeb((0x08), (ipi_base_addr + 0x1e0008)); } static inline __attribute__((always_inline)) void max_xtp (void) { if (smp_int_redirect & (1 << 0)) __writeb((0x0f), (ipi_base_addr + 0x1e0008)); } extern int __cpu_disable (void); extern void __cpu_die (unsigned int cpu); extern void cpu_die (void) __attribute__ ((noreturn)); extern int __cpu_up (unsigned int cpu); extern void __attribute__ ((__section__ (".init.text"))) smp_build_cpu_map(void); extern void __attribute__ ((__section__ (".init.text"))) init_smp_config (void); extern void smp_do_timer (struct pt_regs *regs); extern int smp_call_function_single (int cpuid, void (*func) (void *info), void *info, int retry, int wait); extern void smp_send_reschedule (int cpu); extern void lock_ipi_calllock(void); extern void unlock_ipi_calllock(void); extern void identify_siblings (struct cpuinfo_ia64 *); # 20 "linux-2.6.16.6/include/linux/smp.h" 2 # 29 "linux-2.6.16.6/include/linux/smp.h" extern void smp_send_stop(void); extern void smp_send_reschedule(int cpu); extern void smp_prepare_cpus(unsigned int max_cpus); extern int __cpu_up(unsigned int cpunum); extern void smp_cpus_done(unsigned int max_cpus); extern int smp_call_function (void (*func) (void *info), void *info, int retry, int wait); static inline __attribute__((always_inline)) int on_each_cpu(void (*func) (void *info), void *info, int retry, int wait) { int ret = 0; do { } while (0); ret = smp_call_function(func, info, retry, wait); func(info); do { } while (0); return ret; } # 87 "linux-2.6.16.6/include/linux/smp.h" void smp_prepare_boot_cpu(void); # 27 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/sem.h" 1 # 1 "linux-2.6.16.6/include/linux/ipc.h" 1 # 9 "linux-2.6.16.6/include/linux/ipc.h" struct ipc_perm { __kernel_key_t key; __kernel_uid_t uid; __kernel_gid_t gid; __kernel_uid_t cuid; __kernel_gid_t cgid; __kernel_mode_t mode; unsigned short seq; }; # 1 "linux-2.6.16.6/include/asm/ipcbuf.h" 1 # 14 "linux-2.6.16.6/include/asm/ipcbuf.h" struct ipc64_perm { __kernel_key_t key; __kernel_uid_t uid; __kernel_gid_t gid; __kernel_uid_t cuid; __kernel_gid_t cgid; __kernel_mode_t mode; unsigned short seq; unsigned short __pad1; unsigned long __unused1; unsigned long __unused2; }; # 22 "linux-2.6.16.6/include/linux/ipc.h" 2 # 57 "linux-2.6.16.6/include/linux/ipc.h" struct kern_ipc_perm { spinlock_t lock; int deleted; key_t key; uid_t uid; gid_t gid; uid_t cuid; gid_t cgid; mode_t mode; unsigned long seq; void *security; }; # 5 "linux-2.6.16.6/include/linux/sem.h" 2 # 24 "linux-2.6.16.6/include/linux/sem.h" struct semid_ds { struct ipc_perm sem_perm; __kernel_time_t sem_otime; __kernel_time_t sem_ctime; struct sem *sem_base; struct sem_queue *sem_pending; struct sem_queue **sem_pending_last; struct sem_undo *undo; unsigned short sem_nsems; }; # 1 "linux-2.6.16.6/include/asm/sembuf.h" 1 # 13 "linux-2.6.16.6/include/asm/sembuf.h" struct semid64_ds { struct ipc64_perm sem_perm; __kernel_time_t sem_otime; __kernel_time_t sem_ctime; unsigned long sem_nsems; unsigned long __unused1; unsigned long __unused2; }; # 37 "linux-2.6.16.6/include/linux/sem.h" 2 struct sembuf { unsigned short sem_num; short sem_op; short sem_flg; }; union semun { int val; struct semid_ds *buf; unsigned short *array; struct seminfo *__buf; void *__pad; }; struct seminfo { int semmap; int semmni; int semmns; int semmnu; int semmsl; int semopm; int semume; int semusz; int semvmx; int semaem; }; # 82 "linux-2.6.16.6/include/linux/sem.h" struct task_struct; struct sem { int semval; int sempid; }; struct sem_array { struct kern_ipc_perm sem_perm; int sem_id; time_t sem_otime; time_t sem_ctime; struct sem *sem_base; struct sem_queue *sem_pending; struct sem_queue **sem_pending_last; struct sem_undo *undo; unsigned long sem_nsems; }; struct sem_queue { struct sem_queue * next; struct sem_queue ** prev; struct task_struct* sleeper; struct sem_undo * undo; int pid; int status; struct sem_array * sma; int id; struct sembuf * sops; int nsops; int alter; }; struct sem_undo { struct sem_undo * proc_next; struct sem_undo * id_next; int semid; short * semadj; }; struct sem_undo_list { atomic_t refcnt; spinlock_t lock; struct sem_undo *proc_list; }; struct sysv_sem { struct sem_undo_list *undo_list; }; extern int copy_semundo(unsigned long clone_flags, struct task_struct *tsk); extern void exit_sem(struct task_struct *tsk); # 28 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/signal.h" 1 # 1 "linux-2.6.16.6/include/asm/signal.h" 1 # 121 "linux-2.6.16.6/include/asm/signal.h" # 1 "linux-2.6.16.6/include/asm-generic/signal.h" 1 # 12 "linux-2.6.16.6/include/asm-generic/signal.h" typedef void __signalfn_t(int); typedef __signalfn_t *__sighandler_t; typedef void __restorefn_t(void); typedef __restorefn_t *__sigrestore_t; # 122 "linux-2.6.16.6/include/asm/signal.h" 2 struct siginfo; typedef struct sigaltstack { void *ss_sp; int ss_flags; size_t ss_size; } stack_t; typedef unsigned long old_sigset_t; typedef struct { unsigned long sig[(64 / 64)]; } sigset_t; struct sigaction { __sighandler_t sa_handler; unsigned long sa_flags; sigset_t sa_mask; }; struct k_sigaction { struct sigaction sa; }; # 1 "linux-2.6.16.6/include/asm/sigcontext.h" 1 # 34 "linux-2.6.16.6/include/asm/sigcontext.h" struct sigcontext { unsigned long sc_flags; unsigned long sc_nat; stack_t sc_stack; unsigned long sc_ip; unsigned long sc_cfm; unsigned long sc_um; unsigned long sc_ar_rsc; unsigned long sc_ar_bsp; unsigned long sc_ar_rnat; unsigned long sc_ar_ccv; unsigned long sc_ar_unat; unsigned long sc_ar_fpsr; unsigned long sc_ar_pfs; unsigned long sc_ar_lc; unsigned long sc_pr; unsigned long sc_br[8]; unsigned long sc_gr[32]; struct ia64_fpreg sc_fr[128]; unsigned long sc_rbs_base; unsigned long sc_loadrs; unsigned long sc_ar25; unsigned long sc_ar26; unsigned long sc_rsvd[12]; sigset_t sc_mask; }; # 158 "linux-2.6.16.6/include/asm/signal.h" 2 void set_sigdelayed(pid_t pid, int signo, int code, void *addr); # 7 "linux-2.6.16.6/include/linux/signal.h" 2 # 1 "linux-2.6.16.6/include/asm/siginfo.h" 1 # 17 "linux-2.6.16.6/include/asm/siginfo.h" # 1 "linux-2.6.16.6/include/asm-generic/siginfo.h" 1 typedef union sigval { int sival_int; void *sival_ptr; } sigval_t; # 251 "linux-2.6.16.6/include/asm-generic/siginfo.h" typedef struct sigevent { sigval_t sigev_value; int sigev_signo; int sigev_notify; union { int _pad[((64 - (sizeof(int) * 2 + sizeof(sigval_t))) / sizeof(int))]; int _tid; struct { void (*_function)(sigval_t); void *_attribute; } _sigev_thread; } _sigev_un; } sigevent_t; struct siginfo; void do_schedule_next_timer(struct siginfo *info); # 290 "linux-2.6.16.6/include/asm-generic/siginfo.h" extern int copy_siginfo_to_user(struct siginfo *to, struct siginfo *from); # 18 "linux-2.6.16.6/include/asm/siginfo.h" 2 typedef struct siginfo { int si_signo; int si_errno; int si_code; int __pad0; union { int _pad[((128 - (4 * sizeof(int))) / sizeof(int))]; struct { pid_t _pid; uid_t _uid; } _kill; struct { timer_t _tid; int _overrun; char _pad[sizeof(uid_t) - sizeof(int)]; sigval_t _sigval; int _sys_private; } _timer; struct { pid_t _pid; uid_t _uid; sigval_t _sigval; } _rt; struct { pid_t _pid; uid_t _uid; int _status; clock_t _utime; clock_t _stime; } _sigchld; struct { void *_addr; int _imm; unsigned int _flags; unsigned long _isr; } _sigfault; struct { long _band; int _fd; } _sigpoll; } _sifields; } siginfo_t; # 127 "linux-2.6.16.6/include/asm/siginfo.h" static inline __attribute__((always_inline)) void copy_siginfo (siginfo_t *to, siginfo_t *from) { if (from->si_code < 0) memcpy(to, from, sizeof(siginfo_t)); else memcpy(to, from, 4*sizeof(int) + sizeof(from->_sifields._sigchld)); } # 8 "linux-2.6.16.6/include/linux/signal.h" 2 # 39 "linux-2.6.16.6/include/linux/signal.h" struct sigqueue { struct list_head list; int flags; siginfo_t info; struct user_struct *user; }; struct sigpending { struct list_head list; sigset_t signal; }; # 63 "linux-2.6.16.6/include/linux/signal.h" static inline __attribute__((always_inline)) void sigaddset(sigset_t *set, int _sig) { unsigned long sig = _sig - 1; if ((64 / 64) == 1) set->sig[0] |= 1UL << sig; else set->sig[sig / 64] |= 1UL << (sig % 64); } static inline __attribute__((always_inline)) void sigdelset(sigset_t *set, int _sig) { unsigned long sig = _sig - 1; if ((64 / 64) == 1) set->sig[0] &= ~(1UL << sig); else set->sig[sig / 64] &= ~(1UL << (sig % 64)); } static inline __attribute__((always_inline)) int sigismember(sigset_t *set, int _sig) { unsigned long sig = _sig - 1; if ((64 / 64) == 1) return 1 & (set->sig[0] >> sig); else return 1 & (set->sig[sig / 64] >> (sig % 64)); } static inline __attribute__((always_inline)) int sigfindinword(unsigned long word) { return ffz(~word); } static inline __attribute__((always_inline)) int sigisemptyset(sigset_t *set) { extern void _NSIG_WORDS_is_unsupported_size(void); switch ((64 / 64)) { case 4: return (set->sig[3] | set->sig[2] | set->sig[1] | set->sig[0]) == 0; case 2: return (set->sig[1] | set->sig[0]) == 0; case 1: return set->sig[0] == 0; default: _NSIG_WORDS_is_unsupported_size(); return 0; } } # 144 "linux-2.6.16.6/include/linux/signal.h" static inline __attribute__((always_inline)) void sigorsets(sigset_t *r, const sigset_t *a, const sigset_t *b) { extern void _NSIG_WORDS_is_unsupported_size(void); unsigned long a0, a1, a2, a3, b0, b1, b2, b3; switch ((64 / 64)) { case 4: a3 = a->sig[3]; a2 = a->sig[2]; b3 = b->sig[3]; b2 = b->sig[2]; r->sig[3] = ((a3) | (b3)); r->sig[2] = ((a2) | (b2)); case 2: a1 = a->sig[1]; b1 = b->sig[1]; r->sig[1] = ((a1) | (b1)); case 1: a0 = a->sig[0]; b0 = b->sig[0]; r->sig[0] = ((a0) | (b0)); break; default: _NSIG_WORDS_is_unsupported_size(); } } static inline __attribute__((always_inline)) void sigandsets(sigset_t *r, const sigset_t *a, const sigset_t *b) { extern void _NSIG_WORDS_is_unsupported_size(void); unsigned long a0, a1, a2, a3, b0, b1, b2, b3; switch ((64 / 64)) { case 4: a3 = a->sig[3]; a2 = a->sig[2]; b3 = b->sig[3]; b2 = b->sig[2]; r->sig[3] = ((a3) & (b3)); r->sig[2] = ((a2) & (b2)); case 2: a1 = a->sig[1]; b1 = b->sig[1]; r->sig[1] = ((a1) & (b1)); case 1: a0 = a->sig[0]; b0 = b->sig[0]; r->sig[0] = ((a0) & (b0)); break; default: _NSIG_WORDS_is_unsupported_size(); } } static inline __attribute__((always_inline)) void signandsets(sigset_t *r, const sigset_t *a, const sigset_t *b) { extern void _NSIG_WORDS_is_unsupported_size(void); unsigned long a0, a1, a2, a3, b0, b1, b2, b3; switch ((64 / 64)) { case 4: a3 = a->sig[3]; a2 = a->sig[2]; b3 = b->sig[3]; b2 = b->sig[2]; r->sig[3] = ((a3) & ~(b3)); r->sig[2] = ((a2) & ~(b2)); case 2: a1 = a->sig[1]; b1 = b->sig[1]; r->sig[1] = ((a1) & ~(b1)); case 1: a0 = a->sig[0]; b0 = b->sig[0]; r->sig[0] = ((a0) & ~(b0)); break; default: _NSIG_WORDS_is_unsupported_size(); } } # 174 "linux-2.6.16.6/include/linux/signal.h" static inline __attribute__((always_inline)) void signotset(sigset_t *set) { extern void _NSIG_WORDS_is_unsupported_size(void); switch ((64 / 64)) { case 4: set->sig[3] = (~(set->sig[3])); set->sig[2] = (~(set->sig[2])); case 2: set->sig[1] = (~(set->sig[1])); case 1: set->sig[0] = (~(set->sig[0])); break; default: _NSIG_WORDS_is_unsupported_size(); } } static inline __attribute__((always_inline)) void sigemptyset(sigset_t *set) { switch ((64 / 64)) { default: memset(set, 0, sizeof(sigset_t)); break; case 2: set->sig[1] = 0; case 1: set->sig[0] = 0; break; } } static inline __attribute__((always_inline)) void sigfillset(sigset_t *set) { switch ((64 / 64)) { default: memset(set, -1, sizeof(sigset_t)); break; case 2: set->sig[1] = -1; case 1: set->sig[0] = -1; break; } } static inline __attribute__((always_inline)) void sigaddsetmask(sigset_t *set, unsigned long mask) { set->sig[0] |= mask; } static inline __attribute__((always_inline)) void sigdelsetmask(sigset_t *set, unsigned long mask) { set->sig[0] &= ~mask; } static inline __attribute__((always_inline)) int sigtestsetmask(sigset_t *set, unsigned long mask) { return (set->sig[0] & mask) != 0; } static inline __attribute__((always_inline)) void siginitset(sigset_t *set, unsigned long mask) { set->sig[0] = mask; switch ((64 / 64)) { default: memset(&set->sig[1], 0, sizeof(long)*((64 / 64)-1)); break; case 2: set->sig[1] = 0; case 1: ; } } static inline __attribute__((always_inline)) void siginitsetinv(sigset_t *set, unsigned long mask) { set->sig[0] = ~mask; switch ((64 / 64)) { default: memset(&set->sig[1], -1, sizeof(long)*((64 / 64)-1)); break; case 2: set->sig[1] = -1; case 1: ; } } static inline __attribute__((always_inline)) void init_sigpending(struct sigpending *sig) { sigemptyset(&sig->signal); INIT_LIST_HEAD(&sig->list); } static inline __attribute__((always_inline)) int valid_signal(unsigned long sig) { return sig <= 64 ? 1 : 0; } extern int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p); extern int __group_send_sig_info(int, struct siginfo *, struct task_struct *); extern long do_sigpending(void *, unsigned long); extern int sigprocmask(int, sigset_t *, sigset_t *); struct pt_regs; extern int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka, struct pt_regs *regs, void *cookie); # 29 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/securebits.h" 1 extern unsigned securebits; # 30 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/fs_struct.h" 1 struct dentry; struct vfsmount; struct fs_struct { atomic_t count; rwlock_t lock; int umask; struct dentry * root, * pwd, * altroot; struct vfsmount * rootmnt, * pwdmnt, * altrootmnt; }; extern void exit_fs(struct task_struct *); extern void set_fs_altroot(void); extern void set_fs_root(struct fs_struct *, struct vfsmount *, struct dentry *); extern void set_fs_pwd(struct fs_struct *, struct vfsmount *, struct dentry *); extern struct fs_struct *copy_fs_struct(struct fs_struct *); extern void put_fs_struct(struct fs_struct *); # 31 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/completion.h" 1 # 13 "linux-2.6.16.6/include/linux/completion.h" struct completion { unsigned int done; wait_queue_head_t wait; }; static inline __attribute__((always_inline)) void init_completion(struct completion *x) { x->done = 0; init_waitqueue_head(&x->wait); } extern void wait_for_completion(struct completion *); extern int wait_for_completion_interruptible(struct completion *x); extern unsigned long wait_for_completion_timeout(struct completion *x, unsigned long timeout); extern unsigned long wait_for_completion_interruptible_timeout( struct completion *x, unsigned long timeout); extern void complete(struct completion *); extern void complete_all(struct completion *); # 33 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/pid.h" 1 enum pid_type { PIDTYPE_PID, PIDTYPE_TGID, PIDTYPE_PGID, PIDTYPE_SID, PIDTYPE_MAX }; struct pid { int nr; struct hlist_node pid_chain; struct list_head pid_list; }; # 29 "linux-2.6.16.6/include/linux/pid.h" extern int attach_pid(struct task_struct *task, enum pid_type type, int nr); extern void detach_pid(struct task_struct *task, enum pid_type); extern struct pid *find_pid(enum pid_type, int); extern int alloc_pidmap(void); extern void free_pidmap(int); extern void switch_exec_pids(struct task_struct *leader, struct task_struct *thread); # 34 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/percpu.h" 1 # 1 "linux-2.6.16.6/include/linux/slab.h" 1 # 12 "linux-2.6.16.6/include/linux/slab.h" typedef struct kmem_cache kmem_cache_t; # 1 "linux-2.6.16.6/include/linux/gfp.h" 1 # 1 "linux-2.6.16.6/include/linux/mmzone.h" 1 # 25 "linux-2.6.16.6/include/linux/mmzone.h" struct free_area { struct list_head free_list; unsigned long nr_free; }; struct pglist_data; # 39 "linux-2.6.16.6/include/linux/mmzone.h" struct zone_padding { char x[0]; } __attribute__((__aligned__(1 << (7)))); struct per_cpu_pages { int count; int high; int batch; struct list_head list; }; struct per_cpu_pageset { struct per_cpu_pages pcp[2]; unsigned long numa_hit; unsigned long numa_miss; unsigned long numa_foreign; unsigned long interleave_hit; unsigned long local_node; unsigned long other_node; } __attribute__((__aligned__((1 << 7)))); # 120 "linux-2.6.16.6/include/linux/mmzone.h" struct zone { unsigned long free_pages; unsigned long pages_min, pages_low, pages_high; # 132 "linux-2.6.16.6/include/linux/mmzone.h" unsigned long lowmem_reserve[4]; struct per_cpu_pageset *pageset[64]; spinlock_t lock; struct free_area free_area[17]; struct zone_padding _pad1_; spinlock_t lru_lock; struct list_head active_list; struct list_head inactive_list; unsigned long nr_scan_active; unsigned long nr_scan_inactive; unsigned long nr_active; unsigned long nr_inactive; unsigned long pages_scanned; int all_unreclaimable; atomic_t reclaim_in_progress; unsigned long last_unsuccessful_zone_reclaim; # 189 "linux-2.6.16.6/include/linux/mmzone.h" int temp_priority; int prev_priority; struct zone_padding _pad2_; # 220 "linux-2.6.16.6/include/linux/mmzone.h" wait_queue_head_t * wait_table; unsigned long wait_table_size; unsigned long wait_table_bits; struct pglist_data *zone_pgdat; struct page *zone_mem_map; unsigned long zone_start_pfn; # 242 "linux-2.6.16.6/include/linux/mmzone.h" unsigned long spanned_pages; unsigned long present_pages; char *name; } __attribute__((__aligned__(1 << (7)))); # 270 "linux-2.6.16.6/include/linux/mmzone.h" struct zonelist { struct zone *zones[(1 << 8) * 4 + 1]; }; # 286 "linux-2.6.16.6/include/linux/mmzone.h" struct bootmem_data; typedef struct pglist_data { struct zone node_zones[4]; struct zonelist node_zonelists[((0x07 + 1) / 2 + 1)]; int nr_zones; struct page *node_mem_map; struct bootmem_data *bdata; # 305 "linux-2.6.16.6/include/linux/mmzone.h" unsigned long node_start_pfn; unsigned long node_present_pages; unsigned long node_spanned_pages; int node_id; struct pglist_data *pgdat_next; wait_queue_head_t kswapd_wait; struct task_struct *kswapd; int kswapd_max_order; } pg_data_t; # 325 "linux-2.6.16.6/include/linux/mmzone.h" # 1 "linux-2.6.16.6/include/linux/memory_hotplug.h" 1 # 1 "linux-2.6.16.6/include/linux/mmzone.h" 1 # 5 "linux-2.6.16.6/include/linux/memory_hotplug.h" 2 # 1 "linux-2.6.16.6/include/linux/notifier.h" 1 # 14 "linux-2.6.16.6/include/linux/notifier.h" struct notifier_block { int (*notifier_call)(struct notifier_block *self, unsigned long, void *); struct notifier_block *next; int priority; }; extern int notifier_chain_register(struct notifier_block **list, struct notifier_block *n); extern int notifier_chain_unregister(struct notifier_block **nl, struct notifier_block *n); extern int notifier_call_chain(struct notifier_block **n, unsigned long val, void *v); # 8 "linux-2.6.16.6/include/linux/memory_hotplug.h" 2 struct page; struct zone; struct pglist_data; # 72 "linux-2.6.16.6/include/linux/memory_hotplug.h" static inline __attribute__((always_inline)) void pgdat_resize_lock(struct pglist_data *p, unsigned long *f) {} static inline __attribute__((always_inline)) void pgdat_resize_unlock(struct pglist_data *p, unsigned long *f) {} static inline __attribute__((always_inline)) void pgdat_resize_init(struct pglist_data *pgdat) {} static inline __attribute__((always_inline)) unsigned zone_span_seqbegin(struct zone *zone) { return 0; } static inline __attribute__((always_inline)) int zone_span_seqretry(struct zone *zone, unsigned iv) { return 0; } static inline __attribute__((always_inline)) void zone_span_writelock(struct zone *zone) {} static inline __attribute__((always_inline)) void zone_span_writeunlock(struct zone *zone) {} static inline __attribute__((always_inline)) void zone_seqlock_init(struct zone *zone) {} static inline __attribute__((always_inline)) int mhp_notimplemented(const char *func) { printk("<4>" "%s() called, with CONFIG_MEMORY_HOTPLUG disabled\n", func); dump_stack(); return -38; } static inline __attribute__((always_inline)) int __add_pages(struct zone *zone, unsigned long start_pfn, unsigned long nr_pages) { return mhp_notimplemented((__func__)); } static inline __attribute__((always_inline)) int __remove_pages(struct zone *zone, unsigned long start_pfn, unsigned long nr_pages) { printk("<4>" "%s() called, not yet supported\n", (__func__)); dump_stack(); return -38; } # 326 "linux-2.6.16.6/include/linux/mmzone.h" 2 extern struct pglist_data *pgdat_list; void __get_zone_counts(unsigned long *active, unsigned long *inactive, unsigned long *free, struct pglist_data *pgdat); void get_zone_counts(unsigned long *active, unsigned long *inactive, unsigned long *free); void build_all_zonelists(void); void wakeup_kswapd(struct zone *zone, int order); int zone_watermark_ok(struct zone *z, int order, unsigned long mark, int classzone_idx, int alloc_flags); static inline __attribute__((always_inline)) void memory_present(int nid, unsigned long start, unsigned long end) {} # 371 "linux-2.6.16.6/include/linux/mmzone.h" static inline __attribute__((always_inline)) struct zone *next_zone(struct zone *zone) { pg_data_t *pgdat = zone->zone_pgdat; if (zone < pgdat->node_zones + 4 - 1) zone++; else if (pgdat->pgdat_next) { pgdat = pgdat->pgdat_next; zone = pgdat->node_zones; } else zone = ((void *)0); return zone; } # 404 "linux-2.6.16.6/include/linux/mmzone.h" static inline __attribute__((always_inline)) int populated_zone(struct zone *zone) { return (!!zone->present_pages); } static inline __attribute__((always_inline)) int is_highmem_idx(int idx) { return (idx == 3); } static inline __attribute__((always_inline)) int is_normal_idx(int idx) { return (idx == 2); } static inline __attribute__((always_inline)) int is_highmem(struct zone *zone) { return zone == zone->zone_pgdat->node_zones + 3; } static inline __attribute__((always_inline)) int is_normal(struct zone *zone) { return zone == zone->zone_pgdat->node_zones + 2; } static inline __attribute__((always_inline)) int is_dma32(struct zone *zone) { return zone == zone->zone_pgdat->node_zones + 1; } static inline __attribute__((always_inline)) int is_dma(struct zone *zone) { return zone == zone->zone_pgdat->node_zones + 0; } struct ctl_table; struct file; int min_free_kbytes_sysctl_handler(struct ctl_table *, int, struct file *, void *, size_t *, loff_t *); extern int sysctl_lowmem_reserve_ratio[4 -1]; int lowmem_reserve_ratio_sysctl_handler(struct ctl_table *, int, struct file *, void *, size_t *, loff_t *); int percpu_pagelist_fraction_sysctl_handler(struct ctl_table *, int, struct file *, void *, size_t *, loff_t *); # 1 "linux-2.6.16.6/include/linux/topology.h" 1 # 34 "linux-2.6.16.6/include/linux/topology.h" # 1 "linux-2.6.16.6/include/asm/topology.h" 1 # 16 "linux-2.6.16.6/include/asm/topology.h" # 1 "linux-2.6.16.6/include/asm/acpi.h" 1 # 61 "linux-2.6.16.6/include/asm/acpi.h" static inline __attribute__((always_inline)) int ia64_acpi_acquire_global_lock (unsigned int *lock) { unsigned int old, new, val; do { old = *lock; new = (((old & ~0x3) + 2) + ((old >> 1) & 0x1)); val = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(old)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"(lock), "r"(new) : "memory"); ia64_intri_res; }); } while (__builtin_expect(!!(val != old), 0)); return (new < 3) ? -1 : 0; } static inline __attribute__((always_inline)) int ia64_acpi_release_global_lock (unsigned int *lock) { unsigned int old, new, val; do { old = *lock; new = old & ~0x3; val = ({ __u64 ia64_intri_res; asm volatile ("mov ar.ccv=%0;;" :: "rO"(old)); asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": "=r"(ia64_intri_res) : "r"(lock), "r"(new) : "memory"); ia64_intri_res; }); } while (__builtin_expect(!!(val != old), 0)); return old & 0x1; } # 95 "linux-2.6.16.6/include/asm/acpi.h" static inline __attribute__((always_inline)) void disable_acpi(void) { } const char *acpi_get_sysname (void); int acpi_request_vector (u32 int_type); int acpi_gsi_to_irq (u32 gsi, unsigned int *irq); extern unsigned int can_cpei_retarget(void); extern unsigned int is_cpu_cpei_target(unsigned int cpu); extern void set_cpei_target_cpu(unsigned int cpu); extern unsigned int get_cpei_target_cpu(void); extern void prefill_possible_map(void); extern int additional_cpus; extern int pxm_to_nid_map[(256)]; extern int __attribute__ ((__section__ (".init.data"))) nid_to_pxm_map[(1 << 8)]; extern u16 ia64_acpiid_to_sapicid[]; # 17 "linux-2.6.16.6/include/asm/topology.h" 2 # 1 "linux-2.6.16.6/include/asm/numa.h" 1 # 26 "linux-2.6.16.6/include/asm/numa.h" extern u8 cpu_to_node_map[64] __attribute__((__aligned__((1 << 7)), __section__(".data.cacheline_aligned"))); extern cpumask_t node_to_cpu_mask[(1 << 8)] __attribute__((__aligned__((1 << 7)), __section__(".data.cacheline_aligned"))); extern int num_node_memblks; struct node_memblk_s { unsigned long start_paddr; unsigned long size; int nid; int bank; }; struct node_cpuid_s { u16 phys_id; int nid; }; extern struct node_memblk_s node_memblk[((1 << 8) * 4)]; extern struct node_cpuid_s node_cpuid[64]; # 61 "linux-2.6.16.6/include/asm/numa.h" extern u8 numa_slit[(1 << 8) * (1 << 8)]; extern int paddr_to_nid(unsigned long paddr); # 18 "linux-2.6.16.6/include/asm/topology.h" 2 # 52 "linux-2.6.16.6/include/asm/topology.h" void build_cpu_to_node_map(void); # 112 "linux-2.6.16.6/include/asm/topology.h" # 1 "linux-2.6.16.6/include/asm-generic/topology.h" 1 # 113 "linux-2.6.16.6/include/asm/topology.h" 2 # 35 "linux-2.6.16.6/include/linux/topology.h" 2 # 457 "linux-2.6.16.6/include/linux/mmzone.h" 2 # 649 "linux-2.6.16.6/include/linux/mmzone.h" void memory_present(int nid, unsigned long start, unsigned long end); unsigned long __attribute__ ((__section__ (".init.text"))) node_memmap_size_bytes(int, unsigned long, unsigned long); # 5 "linux-2.6.16.6/include/linux/gfp.h" 2 struct vm_area_struct; # 78 "linux-2.6.16.6/include/linux/gfp.h" static inline __attribute__((always_inline)) int gfp_zone(gfp_t gfp) { int zone = 0x07 & ( int) gfp; do { if (__builtin_expect(!!((zone >= ((0x07 + 1) / 2 + 1))!=0), 0)) do { printk("kernel BUG at %s:%d!\n", "linux-2.6.16.6/include/linux/gfp.h", 81); __builtin_trap(); } while (0); } while(0); return zone; } # 101 "linux-2.6.16.6/include/linux/gfp.h" static inline __attribute__((always_inline)) void arch_free_page(struct page *page, int order) { } extern struct page * __alloc_pages(gfp_t, unsigned int, struct zonelist *); static inline __attribute__((always_inline)) struct page *alloc_pages_node(int nid, gfp_t gfp_mask, unsigned int order) { if (__builtin_expect(!!(order >= 17), 0)) return ((void *)0); if (nid < 0) nid = ((int)(cpu_to_node_map[(((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984))->cpu)])); return __alloc_pages(gfp_mask, order, (((&(per_cpu__cpu_info))->node_data)->pg_data_ptrs[nid])->node_zonelists + gfp_zone(gfp_mask)); } extern struct page *alloc_pages_current(gfp_t gfp_mask, unsigned order); static inline __attribute__((always_inline)) struct page * alloc_pages(gfp_t gfp_mask, unsigned int order) { if (__builtin_expect(!!(order >= 17), 0)) return ((void *)0); return alloc_pages_current(gfp_mask, order); } extern struct page *alloc_page_vma(gfp_t gfp_mask, struct vm_area_struct *vma, unsigned long addr); extern unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order); extern unsigned long get_zeroed_page(gfp_t gfp_mask); extern void __free_pages(struct page *page, unsigned int order); extern void free_pages(unsigned long addr, unsigned int order); extern void free_hot_page(struct page *page); extern void free_cold_page(struct page *page); void page_alloc_init(void); void drain_node_pages(int node); # 16 "linux-2.6.16.6/include/linux/slab.h" 2 # 59 "linux-2.6.16.6/include/linux/slab.h" extern void __attribute__ ((__section__ (".init.text"))) kmem_cache_init(void); extern kmem_cache_t *kmem_cache_create(const char *, size_t, size_t, unsigned long, void (*)(void *, kmem_cache_t *, unsigned long), void (*)(void *, kmem_cache_t *, unsigned long)); extern int kmem_cache_destroy(kmem_cache_t *); extern int kmem_cache_shrink(kmem_cache_t *); extern void *kmem_cache_alloc(kmem_cache_t *, gfp_t); extern void kmem_cache_free(kmem_cache_t *, void *); extern unsigned int kmem_cache_size(kmem_cache_t *); extern const char *kmem_cache_name(kmem_cache_t *); extern kmem_cache_t *kmem_find_general_cachep(size_t size, gfp_t gfpflags); struct cache_sizes { size_t cs_size; kmem_cache_t *cs_cachep; kmem_cache_t *cs_dmacachep; }; extern struct cache_sizes malloc_sizes[]; extern void *__kmalloc(size_t, gfp_t); static inline __attribute__((always_inline)) void *kmalloc(size_t size, gfp_t flags) { if (__builtin_constant_p(size)) { int i = 0; # 1 "linux-2.6.16.6/include/linux/kmalloc_sizes.h" 1 if (size <= 64) goto found; else i++; if (size <= 128) goto found; else i++; if (size <= 256) goto found; else i++; if (size <= 512) goto found; else i++; if (size <= 1024) goto found; else i++; if (size <= 2048) goto found; else i++; if (size <= 4096) goto found; else i++; if (size <= 8192) goto found; else i++; if (size <= 16384) goto found; else i++; if (size <= 32768) goto found; else i++; if (size <= 65536) goto found; else i++; if (size <= 131072) goto found; else i++; # 98 "linux-2.6.16.6/include/linux/slab.h" 2 { extern void __you_cannot_kmalloc_that_much(void); __you_cannot_kmalloc_that_much(); } found: return kmem_cache_alloc((flags & (( gfp_t)0x01u)) ? malloc_sizes[i].cs_dmacachep : malloc_sizes[i].cs_cachep, flags); } return __kmalloc(size, flags); } extern void *kzalloc(size_t, gfp_t); static inline __attribute__((always_inline)) void *kcalloc(size_t n, size_t size, gfp_t flags) { if (n != 0 && size > ((int)(~0U>>1)) / n) return ((void *)0); return kzalloc(n * size, flags); } extern void kfree(const void *); extern unsigned int ksize(const void *); extern void *kmem_cache_alloc_node(kmem_cache_t *, gfp_t flags, int node); extern void *kmalloc_node(size_t size, gfp_t flags, int node); # 143 "linux-2.6.16.6/include/linux/slab.h" extern int kmem_cache_reap(int); extern int kmem_ptr_validate(kmem_cache_t *cachep, void *ptr); # 180 "linux-2.6.16.6/include/linux/slab.h" extern kmem_cache_t *vm_area_cachep; extern kmem_cache_t *names_cachep; extern kmem_cache_t *files_cachep; extern kmem_cache_t *filp_cachep; extern kmem_cache_t *fs_cachep; extern kmem_cache_t *signal_cachep; extern kmem_cache_t *sighand_cachep; extern kmem_cache_t *bio_cachep; extern atomic_t slab_reclaim_pages; # 5 "linux-2.6.16.6/include/linux/percpu.h" 2 # 20 "linux-2.6.16.6/include/linux/percpu.h" struct percpu_data { void *ptrs[64]; }; # 35 "linux-2.6.16.6/include/linux/percpu.h" extern void *__alloc_percpu(size_t size); extern void free_percpu(const void *); # 35 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/seccomp.h" 1 # 29 "linux-2.6.16.6/include/linux/seccomp.h" typedef struct { } seccomp_t; static inline __attribute__((always_inline)) int has_secure_computing(struct thread_info *ti) { return 0; } # 37 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/rcupdate.h" 1 # 50 "linux-2.6.16.6/include/linux/rcupdate.h" struct rcu_head { struct rcu_head *next; void (*func)(struct rcu_head *head); }; # 64 "linux-2.6.16.6/include/linux/rcupdate.h" struct rcu_ctrlblk { long cur; long completed; int next_pending; spinlock_t lock __attribute__((__aligned__(1 << (7)))); cpumask_t cpumask; } __attribute__((__aligned__(1 << (7)))); static inline __attribute__((always_inline)) int rcu_batch_before(long a, long b) { return (a - b) < 0; } static inline __attribute__((always_inline)) int rcu_batch_after(long a, long b) { return (a - b) > 0; } struct rcu_data { long quiescbatch; int passed_quiesc; int qs_pending; long batch; struct rcu_head *nxtlist; struct rcu_head **nxttail; long qlen; struct rcu_head *curlist; struct rcu_head **curtail; struct rcu_head *donelist; struct rcu_head **donetail; long blimit; int cpu; struct rcu_head barrier; long last_rs_qlen; }; extern __typeof__(struct rcu_data) per_cpu__rcu_data; extern __typeof__(struct rcu_data) per_cpu__rcu_bh_data; extern struct rcu_ctrlblk rcu_ctrlblk; extern struct rcu_ctrlblk rcu_bh_ctrlblk; static inline __attribute__((always_inline)) void rcu_qsctr_inc(int cpu) { struct rcu_data *rdp = &(*({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"(&per_cpu__rcu_data)); (typeof(&per_cpu__rcu_data)) (__ptr + (__per_cpu_offset[cpu])); })); rdp->passed_quiesc = 1; } static inline __attribute__((always_inline)) void rcu_bh_qsctr_inc(int cpu) { struct rcu_data *rdp = &(*({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"(&per_cpu__rcu_bh_data)); (typeof(&per_cpu__rcu_bh_data)) (__ptr + (__per_cpu_offset[cpu])); })); rdp->passed_quiesc = 1; } extern int rcu_pending(int cpu); # 258 "linux-2.6.16.6/include/linux/rcupdate.h" extern void rcu_init(void); extern void rcu_check_callbacks(int cpu, int user); extern void rcu_restart_cpu(int cpu); extern long rcu_batches_completed(void); extern void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *head)); extern void call_rcu_bh(struct rcu_head *head, void (*func)(struct rcu_head *head)); extern void synchronize_kernel(void); extern void synchronize_rcu(void); void synchronize_idle(void); extern void rcu_barrier(void); # 38 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/auxvec.h" 1 # 1 "linux-2.6.16.6/include/asm/auxvec.h" 1 # 5 "linux-2.6.16.6/include/linux/auxvec.h" 2 # 40 "linux-2.6.16.6/include/linux/sched.h" 2 struct exec_domain; # 81 "linux-2.6.16.6/include/linux/sched.h" extern unsigned long avenrun[]; # 95 "linux-2.6.16.6/include/linux/sched.h" extern unsigned long total_forks; extern int nr_threads; extern int last_pid; extern __typeof__(unsigned long) per_cpu__process_counts; extern int nr_processes(void); extern unsigned long nr_running(void); extern unsigned long nr_uninterruptible(void); extern unsigned long nr_iowait(void); # 1 "linux-2.6.16.6/include/linux/param.h" 1 # 106 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/resource.h" 1 # 21 "linux-2.6.16.6/include/linux/resource.h" struct rusage { struct timeval ru_utime; struct timeval ru_stime; long ru_maxrss; long ru_ixrss; long ru_idrss; long ru_isrss; long ru_minflt; long ru_majflt; long ru_nswap; long ru_inblock; long ru_oublock; long ru_msgsnd; long ru_msgrcv; long ru_nsignals; long ru_nvcsw; long ru_nivcsw; }; struct rlimit { unsigned long rlim_cur; unsigned long rlim_max; }; # 68 "linux-2.6.16.6/include/linux/resource.h" # 1 "linux-2.6.16.6/include/asm/resource.h" 1 # 1 "linux-2.6.16.6/include/asm-generic/resource.h" 1 # 7 "linux-2.6.16.6/include/asm/resource.h" 2 # 69 "linux-2.6.16.6/include/linux/resource.h" 2 # 107 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/timer.h" 1 # 9 "linux-2.6.16.6/include/linux/timer.h" struct timer_base_s; struct timer_list { struct list_head entry; unsigned long expires; void (*function)(unsigned long); unsigned long data; struct timer_base_s *base; }; extern struct timer_base_s __init_timer_base; # 34 "linux-2.6.16.6/include/linux/timer.h" void init_timer(struct timer_list * timer); static inline __attribute__((always_inline)) void setup_timer(struct timer_list * timer, void (*function)(unsigned long), unsigned long data) { timer->function = function; timer->data = data; init_timer(timer); } # 55 "linux-2.6.16.6/include/linux/timer.h" static inline __attribute__((always_inline)) int timer_pending(const struct timer_list * timer) { return timer->entry.next != ((void *)0); } extern void add_timer_on(struct timer_list *timer, int cpu); extern int del_timer(struct timer_list * timer); extern int __mod_timer(struct timer_list *timer, unsigned long expires); extern int mod_timer(struct timer_list *timer, unsigned long expires); extern unsigned long next_timer_interrupt(void); # 81 "linux-2.6.16.6/include/linux/timer.h" static inline __attribute__((always_inline)) void add_timer(struct timer_list *timer) { do { if (__builtin_expect(!!((timer_pending(timer))!=0), 0)) do { printk("kernel BUG at %s:%d!\n", "linux-2.6.16.6/include/linux/timer.h", 83); __builtin_trap(); } while (0); } while(0); __mod_timer(timer, timer->expires); } extern int try_to_del_timer_sync(struct timer_list *timer); extern int del_timer_sync(struct timer_list *timer); extern void init_timers(void); extern void run_local_timers(void); extern int it_real_fn(void *); # 108 "linux-2.6.16.6/include/linux/sched.h" 2 # 1 "linux-2.6.16.6/include/linux/hrtimer.h" 1 # 19 "linux-2.6.16.6/include/linux/hrtimer.h" # 1 "linux-2.6.16.6/include/linux/ktime.h" 1 # 46 "linux-2.6.16.6/include/linux/ktime.h" typedef union { s64 tv64; # 57 "linux-2.6.16.6/include/linux/ktime.h" } ktime_t; # 78 "linux-2.6.16.6/include/linux/ktime.h" static inline __attribute__((always_inline)) ktime_t ktime_set(const long secs, const unsigned long nsecs) { return (ktime_t) { .tv64 = (s64)secs * 1000000000L + (s64)nsecs }; } # 99 "linux-2.6.16.6/include/linux/ktime.h" static inline __attribute__((always_inline)) ktime_t timespec_to_ktime(struct timespec ts) { return ktime_set(ts.tv_sec, ts.tv_nsec); } static inline __attribute__((always_inline)) ktime_t timeval_to_ktime(struct timeval tv) { return ktime_set(tv.tv_sec, tv.tv_usec * 1000L); } # 291 "linux-2.6.16.6/include/linux/ktime.h" extern void ktime_get_ts(struct timespec *ts); # 20 "linux-2.6.16.6/include/linux/hrtimer.h" 2 enum hrtimer_mode { HRTIMER_ABS, HRTIMER_REL, }; enum hrtimer_restart { HRTIMER_NORESTART, HRTIMER_RESTART, }; enum hrtimer_state { HRTIMER_INACTIVE, HRTIMER_EXPIRED, HRTIMER_RUNNING, HRTIMER_PENDING, }; struct hrtimer_base; # 63 "linux-2.6.16.6/include/linux/hrtimer.h" struct hrtimer { struct rb_node node; ktime_t expires; enum hrtimer_state state; int (*function)(void *); void *data; struct hrtimer_base *base; }; # 84 "linux-2.6.16.6/include/linux/hrtimer.h" struct hrtimer_base { clockid_t index; spinlock_t lock; struct rb_root active; struct rb_node *first; ktime_t resolution; ktime_t (*get_time)(void); struct hrtimer *curr_timer; }; # 104 "linux-2.6.16.6/include/linux/hrtimer.h" extern void hrtimer_init(struct hrtimer *timer, clockid_t which_clock, enum hrtimer_mode mode); extern int hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode); extern int hrtimer_cancel(struct hrtimer *timer); extern int hrtimer_try_to_cancel(struct hrtimer *timer); extern ktime_t hrtimer_get_remaining(const struct hrtimer *timer); extern int hrtimer_get_res(const clockid_t which_clock, struct timespec *tp); static inline __attribute__((always_inline)) int hrtimer_active(const struct hrtimer *timer) { return timer->state == HRTIMER_PENDING; } extern unsigned long hrtimer_forward(struct hrtimer *timer, ktime_t interval); extern long hrtimer_nanosleep(struct timespec *rqtp, struct timespec *rmtp, const enum hrtimer_mode mode, const clockid_t clockid); extern void hrtimer_run_queues(void); extern void __attribute__ ((__section__ (".init.text"))) hrtimers_init(void); # 109 "linux-2.6.16.6/include/linux/sched.h" 2 # 165 "linux-2.6.16.6/include/linux/sched.h" struct sched_param { int sched_priority; }; # 179 "linux-2.6.16.6/include/linux/sched.h" extern rwlock_t tasklist_lock; extern spinlock_t mmlist_lock; typedef struct task_struct task_t; extern void sched_init(void); extern void sched_init_smp(void); extern void init_idle(task_t *idle, int cpu); extern cpumask_t nohz_cpu_mask; extern void show_state(void); extern void show_regs(struct pt_regs *); extern void show_stack(struct task_struct *task, unsigned long *sp); void io_schedule(void); long io_schedule_timeout(long timeout); extern void cpu_init (void); extern void trap_init(void); extern void update_process_times(int user); extern void scheduler_tick(void); static inline __attribute__((always_inline)) void softlockup_tick(struct pt_regs *regs) { } static inline __attribute__((always_inline)) void spawn_softlockup_task(void) { } static inline __attribute__((always_inline)) void touch_softlockup_watchdog(void) { } extern int in_sched_functions(unsigned long addr); extern signed long schedule_timeout(signed long timeout); extern signed long schedule_timeout_interruptible(signed long timeout); extern signed long schedule_timeout_uninterruptible(signed long timeout); __attribute__((syscall_linkage)) void schedule(void); struct namespace; extern int sysctl_max_map_count; # 1 "linux-2.6.16.6/include/linux/aio.h" 1 # 1 "linux-2.6.16.6/include/linux/workqueue.h" 1 # 12 "linux-2.6.16.6/include/linux/workqueue.h" struct workqueue_struct; struct work_struct { unsigned long pending; struct list_head entry; void (*func)(void *); void *data; void *wq_data; struct timer_list timer; }; # 53 "linux-2.6.16.6/include/linux/workqueue.h" extern struct workqueue_struct *__create_workqueue(const char *name, int singlethread); extern void destroy_workqueue(struct workqueue_struct *wq); extern int queue_work(struct workqueue_struct *wq, struct work_struct *work); extern int queue_delayed_work(struct workqueue_struct *wq, struct work_struct *work, unsigned long delay); extern void flush_workqueue(struct workqueue_struct *wq); extern int schedule_work(struct work_struct *work); extern int schedule_delayed_work(struct work_struct *work, unsigned long delay); extern int schedule_delayed_work_on(int cpu, struct work_struct *work, unsigned long delay); extern int schedule_on_each_cpu(void (*func)(void *info), void *info); extern void flush_scheduled_work(void); extern int current_is_keventd(void); extern int keventd_up(void); extern void init_workqueues(void); void cancel_rearming_delayed_work(struct work_struct *work); void cancel_rearming_delayed_workqueue(struct workqueue_struct *, struct work_struct *); static inline __attribute__((always_inline)) int cancel_delayed_work(struct work_struct *work) { int ret; ret = del_timer_sync(&work->timer); if (ret) clear_bit(0, &work->pending); return ret; } # 6 "linux-2.6.16.6/include/linux/aio.h" 2 # 1 "linux-2.6.16.6/include/linux/aio_abi.h" 1 # 32 "linux-2.6.16.6/include/linux/aio_abi.h" typedef unsigned long aio_context_t; enum { IOCB_CMD_PREAD = 0, IOCB_CMD_PWRITE = 1, IOCB_CMD_FSYNC = 2, IOCB_CMD_FDSYNC = 3, IOCB_CMD_NOOP = 6, }; struct io_event { __u64 data; __u64 obj; __s64 res; __s64 res2; }; # 68 "linux-2.6.16.6/include/linux/aio_abi.h" struct iocb { __u64 aio_data; __u32 aio_key, aio_reserved1; __u16 aio_lio_opcode; __s16 aio_reqprio; __u32 aio_fildes; __u64 aio_buf; __u64 aio_nbytes; __s64 aio_offset; __u64 aio_reserved2; __u64 aio_reserved3; }; # 7 "linux-2.6.16.6/include/linux/aio.h" 2 struct kioctx; # 85 "linux-2.6.16.6/include/linux/aio.h" struct kiocb { struct list_head ki_run_list; long ki_flags; int ki_users; unsigned ki_key; struct file *ki_filp; struct kioctx *ki_ctx; int (*ki_cancel)(struct kiocb *, struct io_event *); ssize_t (*ki_retry)(struct kiocb *); void (*ki_dtor)(struct kiocb *); union { void *user; struct task_struct *tsk; } ki_obj; __u64 ki_user_data; wait_queue_t ki_wait; loff_t ki_pos; void *private; unsigned short ki_opcode; size_t ki_nbytes; char *ki_buf; size_t ki_left; long ki_retried; long ki_kicked; long ki_queued; struct list_head ki_list; }; # 140 "linux-2.6.16.6/include/linux/aio.h" struct aio_ring { unsigned id; unsigned nr; unsigned head; unsigned tail; unsigned magic; unsigned compat_features; unsigned incompat_features; unsigned header_length; struct io_event io_events[0]; }; struct aio_ring_info { unsigned long mmap_base; unsigned long mmap_size; struct page **ring_pages; spinlock_t ring_lock; long nr_pages; unsigned nr, tail; struct page *internal_pages[8]; }; struct kioctx { atomic_t users; int dead; struct mm_struct *mm; unsigned long user_id; struct kioctx *next; wait_queue_head_t wait; spinlock_t ctx_lock; int reqs_active; struct list_head active_reqs; struct list_head run_list; unsigned max_reqs; struct aio_ring_info ring_info; struct work_struct wq; }; extern unsigned aio_max_size; extern ssize_t wait_on_sync_kiocb(struct kiocb *iocb); extern int aio_put_req(struct kiocb *iocb); extern void kick_iocb(struct kiocb *iocb); extern int aio_complete(struct kiocb *iocb, long res, long res2); extern void __put_ioctx(struct kioctx *ctx); struct mm_struct; extern void exit_aio(struct mm_struct *mm); extern struct kioctx *lookup_ioctx(unsigned long ctx_id); extern int io_submit_one(struct kioctx *ctx, struct iocb *user_iocb, struct iocb *iocb); struct kioctx *lookup_ioctx(unsigned long ctx_id); int io_submit_one(struct kioctx *ctx, struct iocb *user_iocb, struct iocb *iocb); # 241 "linux-2.6.16.6/include/linux/aio.h" static inline __attribute__((always_inline)) struct kiocb *list_kiocb(struct list_head *h) { return ({ const typeof( ((struct kiocb *)0)->ki_list ) *__mptr = (h); (struct kiocb *)( (char *)__mptr - __builtin_offsetof(struct kiocb,ki_list) );}); } extern unsigned long aio_nr; extern unsigned long aio_max_nr; # 244 "linux-2.6.16.6/include/linux/sched.h" 2 extern unsigned long arch_get_unmapped_area(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); extern unsigned long arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags); extern void arch_unmap_area(struct mm_struct *, unsigned long); extern void arch_unmap_area_topdown(struct mm_struct *, unsigned long); # 265 "linux-2.6.16.6/include/linux/sched.h" typedef atomic_long_t mm_counter_t; # 293 "linux-2.6.16.6/include/linux/sched.h" struct mm_struct { struct vm_area_struct * mmap; struct rb_root mm_rb; struct vm_area_struct * mmap_cache; unsigned long (*get_unmapped_area) (struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags); void (*unmap_area) (struct mm_struct *mm, unsigned long addr); unsigned long mmap_base; unsigned long task_size; unsigned long cached_hole_size; unsigned long free_area_cache; pgd_t * pgd; atomic_t mm_users; atomic_t mm_count; int map_count; struct rw_semaphore mmap_sem; spinlock_t page_table_lock; struct list_head mmlist; mm_counter_t _file_rss; mm_counter_t _anon_rss; unsigned long hiwater_rss; unsigned long hiwater_vm; unsigned long total_vm, locked_vm, shared_vm, exec_vm; unsigned long stack_vm, reserved_vm, def_flags, nr_ptes; unsigned long start_code, end_code, start_data, end_data; unsigned long start_brk, brk, start_stack; unsigned long arg_start, arg_end, env_start, env_end; unsigned long saved_auxv[44]; unsigned dumpable:2; cpumask_t cpu_vm_mask; mm_context_t context; unsigned long swap_token_time; char recent_pagein; int core_waiters; struct completion *core_startup_done, core_done; rwlock_t ioctx_list_lock; struct kioctx *ioctx_list; }; struct sighand_struct { atomic_t count; struct k_sigaction action[64]; spinlock_t siglock; struct rcu_head rcu; }; extern void sighand_free_cb(struct rcu_head *rhp); static inline __attribute__((always_inline)) void sighand_free(struct sighand_struct *sp) { call_rcu(&sp->rcu, sighand_free_cb); } # 374 "linux-2.6.16.6/include/linux/sched.h" struct signal_struct { atomic_t count; atomic_t live; wait_queue_head_t wait_chldexit; task_t *curr_target; struct sigpending shared_pending; int group_exit_code; struct task_struct *group_exit_task; int notify_count; int group_stop_count; unsigned int flags; struct list_head posix_timers; struct hrtimer real_timer; ktime_t it_real_incr; cputime_t it_prof_expires, it_virt_expires; cputime_t it_prof_incr, it_virt_incr; pid_t pgrp; pid_t tty_old_pgrp; pid_t session; int leader; struct tty_struct *tty; cputime_t utime, stime, cutime, cstime; unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw; unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt; unsigned long long sched_time; # 447 "linux-2.6.16.6/include/linux/sched.h" struct rlimit rlim[15]; struct list_head cpu_timers[3]; }; # 496 "linux-2.6.16.6/include/linux/sched.h" struct user_struct { atomic_t __count; atomic_t processes; atomic_t files; atomic_t sigpending; atomic_t inotify_watches; atomic_t inotify_devs; unsigned long mq_bytes; unsigned long locked_shm; struct list_head uidhash_list; uid_t uid; }; extern struct user_struct *find_user(uid_t); extern struct user_struct root_user; typedef struct prio_array prio_array_t; struct backing_dev_info; struct reclaim_state; # 543 "linux-2.6.16.6/include/linux/sched.h" enum idle_type { SCHED_IDLE, NOT_IDLE, NEWLY_IDLE, MAX_IDLE_TYPES }; # 566 "linux-2.6.16.6/include/linux/sched.h" struct sched_group { struct sched_group *next; cpumask_t cpumask; unsigned long cpu_power; }; struct sched_domain { struct sched_domain *parent; struct sched_group *groups; cpumask_t span; unsigned long min_interval; unsigned long max_interval; unsigned int busy_factor; unsigned int imbalance_pct; unsigned long long cache_hot_time; unsigned int cache_nice_tries; unsigned int per_cpu_gain; unsigned int busy_idx; unsigned int idle_idx; unsigned int newidle_idx; unsigned int wake_idx; unsigned int forkexec_idx; int flags; unsigned long last_balance; unsigned int balance_interval; unsigned int nr_balance_failed; # 632 "linux-2.6.16.6/include/linux/sched.h" }; extern void partition_sched_domains(cpumask_t *partition1, cpumask_t *partition2); extern unsigned int max_cache_size; struct io_context; void exit_io_context(void); struct cpuset; struct group_info { int ngroups; atomic_t usage; gid_t small_block[32]; int nblocks; gid_t *blocks[0]; }; # 675 "linux-2.6.16.6/include/linux/sched.h" extern struct group_info *groups_alloc(int gidsetsize); extern void groups_free(struct group_info *group_info); extern int set_current_groups(struct group_info *group_info); extern int groups_search(struct group_info *group_info, gid_t grp); extern void prefetch_stack(struct task_struct*); struct audit_context; struct mempolicy; struct task_struct { volatile long state; struct thread_info *thread_info; atomic_t usage; unsigned long flags; unsigned long ptrace; int lock_depth; int oncpu; int prio, static_prio; struct list_head run_list; prio_array_t *array; unsigned short ioprio; unsigned long sleep_avg; unsigned long long timestamp, last_ran; unsigned long long sched_time; int activated; unsigned long policy; cpumask_t cpus_allowed; unsigned int time_slice, first_time_slice; struct list_head tasks; struct list_head ptrace_children; struct list_head ptrace_list; struct mm_struct *mm, *active_mm; struct linux_binfmt *binfmt; long exit_state; int exit_code, exit_signal; int pdeath_signal; unsigned long personality; unsigned did_exec:1; pid_t pid; pid_t tgid; struct task_struct *real_parent; struct task_struct *parent; struct list_head children; struct list_head sibling; struct task_struct *group_leader; struct pid pids[PIDTYPE_MAX]; struct completion *vfork_done; int *set_child_tid; int *clear_child_tid; unsigned long rt_priority; cputime_t utime, stime; unsigned long nvcsw, nivcsw; struct timespec start_time; unsigned long min_flt, maj_flt; cputime_t it_prof_expires, it_virt_expires; unsigned long long it_sched_expires; struct list_head cpu_timers[3]; uid_t uid,euid,suid,fsuid; gid_t gid,egid,sgid,fsgid; struct group_info *group_info; kernel_cap_t cap_effective, cap_inheritable, cap_permitted; unsigned keep_capabilities:1; struct user_struct *user; int oomkilladj; char comm[16]; int link_count, total_link_count; struct sysv_sem sysvsem; struct thread_struct thread; struct fs_struct *fs; struct files_struct *files; struct namespace *namespace; struct signal_struct *signal; struct sighand_struct *sighand; sigset_t blocked, real_blocked; sigset_t saved_sigmask; struct sigpending pending; unsigned long sas_ss_sp; size_t sas_ss_size; int (*notifier)(void *priv); void *notifier_data; sigset_t *notifier_mask; void *security; struct audit_context *audit_context; seccomp_t seccomp; u32 parent_exec_id; u32 self_exec_id; spinlock_t alloc_lock; spinlock_t proc_lock; void *journal_info; struct reclaim_state *reclaim_state; struct dentry *proc_dentry; struct backing_dev_info *backing_dev_info; struct io_context *io_context; unsigned long ptrace_message; siginfo_t *last_siginfo; wait_queue_t *io_wait; u64 rchar, wchar, syscr, syscw; u64 acct_rss_mem1; u64 acct_vm_mem1; clock_t acct_stimexpd; struct mempolicy *mempolicy; short il_next; struct cpuset *cpuset; nodemask_t mems_allowed; int cpuset_mems_generation; atomic_t fs_excl; struct rcu_head rcu; }; static inline __attribute__((always_inline)) pid_t process_group(struct task_struct *tsk) { return tsk->signal->pgrp; } # 889 "linux-2.6.16.6/include/linux/sched.h" static inline __attribute__((always_inline)) int pid_alive(struct task_struct *p) { return p->pids[PIDTYPE_PID].nr != 0; } extern void free_task(struct task_struct *tsk); extern void __put_task_struct_cb(struct rcu_head *rhp); static inline __attribute__((always_inline)) void put_task_struct(struct task_struct *t) { if ((({ int __ia64_asr_i = (1); (__builtin_constant_p(1) && ( (__ia64_asr_i == 1) || (__ia64_asr_i == 4) || (__ia64_asr_i == 8) || (__ia64_asr_i == 16) || (__ia64_asr_i == -1) || (__ia64_asr_i == -4) || (__ia64_asr_i == -8) || (__ia64_asr_i == -16))) ? (({ __u64 _tmp; volatile __typeof__(*(&((&t->usage))->counter)) *_v = (&((&t->usage))->counter); if ((-__ia64_asr_i) == -16) ({ switch (sizeof(*(&((&t->usage))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == -8) ({ switch (sizeof(*(&((&t->usage))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == -4) ({ switch (sizeof(*(&((&t->usage))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == -1) ({ switch (sizeof(*(&((&t->usage))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 1) ({ switch (sizeof(*(&((&t->usage))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 4) ({ switch (sizeof(*(&((&t->usage))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 8) ({ switch (sizeof(*(&((&t->usage))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 16) ({ switch (sizeof(*(&((&t->usage))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&((&t->usage))->counter))) (_tmp); }) + (-__ia64_asr_i)) : ia64_atomic_sub(__ia64_asr_i, (&t->usage)); }) == 0)) call_rcu(&t->rcu, __put_task_struct_cb); } # 958 "linux-2.6.16.6/include/linux/sched.h" extern int set_cpus_allowed(task_t *p, cpumask_t new_mask); # 968 "linux-2.6.16.6/include/linux/sched.h" extern unsigned long long sched_clock(void); extern unsigned long long current_sched_time(const task_t *current_task); extern void sched_exec(void); extern void idle_task_exit(void); extern void sched_idle_next(void); extern void set_user_nice(task_t *p, long nice); extern int task_prio(const task_t *p); extern int task_nice(const task_t *p); extern int can_nice(const task_t *p, const int nice); extern int task_curr(const task_t *p); extern int idle_cpu(int cpu); extern int sched_setscheduler(struct task_struct *, int, struct sched_param *); extern task_t *idle_task(int cpu); extern task_t *curr_task(int cpu); extern void set_curr_task(int cpu, task_t *p); void yield(void); extern struct exec_domain default_exec_domain; union thread_union { struct thread_info thread_info; unsigned long stack[((1 << 1)*(1UL << 14))/sizeof(long)]; }; static inline __attribute__((always_inline)) int kstack_end(void *addr) { return !(((unsigned long)addr+sizeof(void*)-1) & (((1 << 1)*(1UL << 14))-sizeof(void*))); } extern union thread_union init_thread_union; extern struct task_struct init_task; extern struct mm_struct init_mm; extern struct task_struct *find_task_by_pid_type(int type, int pid); extern void set_special_pids(pid_t session, pid_t pgrp); extern void __set_special_pids(pid_t session, pid_t pgrp); extern struct user_struct * alloc_uid(uid_t); static inline __attribute__((always_inline)) struct user_struct *get_uid(struct user_struct *u) { ({ int __ia64_aar_i = ((1)); (__builtin_constant_p((1)) && ( (__ia64_aar_i == 1) || (__ia64_aar_i == 4) || (__ia64_aar_i == 8) || (__ia64_aar_i == 16) || (__ia64_aar_i == -1) || (__ia64_aar_i == -4) || (__ia64_aar_i == -8) || (__ia64_aar_i == -16))) ? (({ __u64 _tmp; volatile __typeof__(*(&(((&u->__count)))->counter)) *_v = (&(((&u->__count)))->counter); if ((__ia64_aar_i) == -16) ({ switch (sizeof(*(&(((&u->__count)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -8) ({ switch (sizeof(*(&(((&u->__count)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -4) ({ switch (sizeof(*(&(((&u->__count)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -1) ({ switch (sizeof(*(&(((&u->__count)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 1) ({ switch (sizeof(*(&(((&u->__count)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 4) ({ switch (sizeof(*(&(((&u->__count)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 8) ({ switch (sizeof(*(&(((&u->__count)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 16) ({ switch (sizeof(*(&(((&u->__count)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&(((&u->__count)))->counter))) (_tmp); }) + (__ia64_aar_i)) : ia64_atomic_add(__ia64_aar_i, ((&u->__count))); }); return u; } extern void free_uid(struct user_struct *); extern void switch_uid(struct user_struct *); extern void do_timer(struct pt_regs *); extern int wake_up_state(struct task_struct * tsk, unsigned int state); extern int wake_up_process(struct task_struct * tsk); extern void wake_up_new_task(struct task_struct * tsk, unsigned long clone_flags); extern void kick_process(struct task_struct *tsk); extern void sched_fork(task_t * p, int clone_flags); extern void sched_exit(task_t * p); extern int in_group_p(gid_t); extern int in_egroup_p(gid_t); extern void proc_caches_init(void); extern void flush_signals(struct task_struct *); extern void flush_signal_handlers(struct task_struct *, int force_default); extern int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info); static inline __attribute__((always_inline)) int dequeue_signal_lock(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) { unsigned long flags; int ret; flags = _spin_lock_irqsave(&tsk->sighand->siglock); ret = dequeue_signal(tsk, mask, info); _spin_unlock_irqrestore(&tsk->sighand->siglock, flags); return ret; } extern void block_all_signals(int (*notifier)(void *priv), void *priv, sigset_t *mask); extern void unblock_all_signals(void); extern void release_task(struct task_struct * p); extern int send_sig_info(int, struct siginfo *, struct task_struct *); extern int send_group_sig_info(int, struct siginfo *, struct task_struct *); extern int force_sigsegv(int, struct task_struct *); extern int force_sig_info(int, struct siginfo *, struct task_struct *); extern int __kill_pg_info(int sig, struct siginfo *info, pid_t pgrp); extern int kill_pg_info(int, struct siginfo *, pid_t); extern int kill_proc_info(int, struct siginfo *, pid_t); extern int kill_proc_info_as_uid(int, struct siginfo *, pid_t, uid_t, uid_t); extern void do_notify_parent(struct task_struct *, int); extern void force_sig(int, struct task_struct *); extern void force_sig_specific(int, struct task_struct *); extern int send_sig(int, struct task_struct *, int); extern void zap_other_threads(struct task_struct *p); extern int kill_pg(pid_t, int, int); extern int kill_sl(pid_t, int, int); extern int kill_proc(pid_t, int, int); extern struct sigqueue *sigqueue_alloc(void); extern void sigqueue_free(struct sigqueue *); extern int send_sigqueue(int, struct sigqueue *, struct task_struct *); extern int send_group_sigqueue(int, struct sigqueue *, struct task_struct *); extern int do_sigaction(int, struct k_sigaction *, struct k_sigaction *); extern int do_sigaltstack(const stack_t *, stack_t *, unsigned long); static inline __attribute__((always_inline)) int is_si_special(const struct siginfo *info) { return info <= ((struct siginfo *) 2); } static inline __attribute__((always_inline)) int on_sig_stack(unsigned long sp) { return (sp - ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; }))->sas_ss_sp < ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; }))->sas_ss_size); } static inline __attribute__((always_inline)) int sas_ss_flags(unsigned long sp) { return (((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; }))->sas_ss_size == 0 ? 2 : on_sig_stack(sp) ? 1 : 0); } extern struct mm_struct * mm_alloc(void); extern void __mmdrop(struct mm_struct *); static inline __attribute__((always_inline)) void mmdrop(struct mm_struct * mm) { if ((({ int __ia64_asr_i = (1); (__builtin_constant_p(1) && ( (__ia64_asr_i == 1) || (__ia64_asr_i == 4) || (__ia64_asr_i == 8) || (__ia64_asr_i == 16) || (__ia64_asr_i == -1) || (__ia64_asr_i == -4) || (__ia64_asr_i == -8) || (__ia64_asr_i == -16))) ? (({ __u64 _tmp; volatile __typeof__(*(&((&mm->mm_count))->counter)) *_v = (&((&mm->mm_count))->counter); if ((-__ia64_asr_i) == -16) ({ switch (sizeof(*(&((&mm->mm_count))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == -8) ({ switch (sizeof(*(&((&mm->mm_count))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == -4) ({ switch (sizeof(*(&((&mm->mm_count))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == -1) ({ switch (sizeof(*(&((&mm->mm_count))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 1) ({ switch (sizeof(*(&((&mm->mm_count))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 4) ({ switch (sizeof(*(&((&mm->mm_count))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 8) ({ switch (sizeof(*(&((&mm->mm_count))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 16) ({ switch (sizeof(*(&((&mm->mm_count))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&((&mm->mm_count))->counter))) (_tmp); }) + (-__ia64_asr_i)) : ia64_atomic_sub(__ia64_asr_i, (&mm->mm_count)); }) == 0)) __mmdrop(mm); } extern void mmput(struct mm_struct *); extern struct mm_struct *get_task_mm(struct task_struct *task); extern void mm_release(struct task_struct *, struct mm_struct *); extern int copy_thread(int, unsigned long, unsigned long, unsigned long, struct task_struct *, struct pt_regs *); extern void flush_thread(void); extern void exit_thread(void); extern void exit_files(struct task_struct *); extern void exit_signal(struct task_struct *); extern void __exit_signal(struct task_struct *); extern void exit_sighand(struct task_struct *); extern void __exit_sighand(struct task_struct *); extern void exit_itimers(struct signal_struct *); extern void do_group_exit(int); extern void daemonize(const char *, ...); extern int allow_signal(int); extern int disallow_signal(int); extern task_t *child_reaper; extern int do_execve(char *, char * *, char * *, struct pt_regs *); extern long do_fork(unsigned long, unsigned long, struct pt_regs *, unsigned long, int *, int *); task_t *fork_idle(int); extern void set_task_comm(struct task_struct *tsk, char *from); extern void get_task_comm(char *to, struct task_struct *tsk); extern void wait_task_inactive(task_t * p); # 1206 "linux-2.6.16.6/include/linux/sched.h" extern task_t * next_thread(const task_t *p); static inline __attribute__((always_inline)) int thread_group_empty(task_t *p) { return list_empty(&p->pids[PIDTYPE_TGID].pid_list); } extern void unhash_process(struct task_struct *p); # 1229 "linux-2.6.16.6/include/linux/sched.h" static inline __attribute__((always_inline)) void task_lock(struct task_struct *p) { _spin_lock(&p->alloc_lock); } static inline __attribute__((always_inline)) void task_unlock(struct task_struct *p) { __raw_spin_unlock(&(&p->alloc_lock)->raw_lock); } # 1260 "linux-2.6.16.6/include/linux/sched.h" static inline __attribute__((always_inline)) void set_tsk_thread_flag(struct task_struct *tsk, int flag) { set_ti_thread_flag(((struct thread_info *) ((char *) (tsk) + 3984)), flag); } static inline __attribute__((always_inline)) void clear_tsk_thread_flag(struct task_struct *tsk, int flag) { clear_ti_thread_flag(((struct thread_info *) ((char *) (tsk) + 3984)), flag); } static inline __attribute__((always_inline)) int test_and_set_tsk_thread_flag(struct task_struct *tsk, int flag) { return test_and_set_ti_thread_flag(((struct thread_info *) ((char *) (tsk) + 3984)), flag); } static inline __attribute__((always_inline)) int test_and_clear_tsk_thread_flag(struct task_struct *tsk, int flag) { return test_and_clear_ti_thread_flag(((struct thread_info *) ((char *) (tsk) + 3984)), flag); } static inline __attribute__((always_inline)) int test_tsk_thread_flag(struct task_struct *tsk, int flag) { return test_ti_thread_flag(((struct thread_info *) ((char *) (tsk) + 3984)), flag); } static inline __attribute__((always_inline)) void set_tsk_need_resched(struct task_struct *tsk) { set_tsk_thread_flag(tsk,2); } static inline __attribute__((always_inline)) void clear_tsk_need_resched(struct task_struct *tsk) { clear_tsk_thread_flag(tsk,2); } static inline __attribute__((always_inline)) int signal_pending(struct task_struct *p) { return __builtin_expect(!!(test_tsk_thread_flag(p,1)), 0); } static inline __attribute__((always_inline)) int need_resched(void) { return __builtin_expect(!!(test_ti_thread_flag(((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984)), 2)), 0); } # 1312 "linux-2.6.16.6/include/linux/sched.h" extern int cond_resched(void); extern int cond_resched_lock(spinlock_t * lock); extern int cond_resched_softirq(void); # 1330 "linux-2.6.16.6/include/linux/sched.h" static inline __attribute__((always_inline)) int lock_need_resched(spinlock_t *lock) { if (0 || need_resched()) return 1; return 0; } extern void recalc_sigpending_tsk(struct task_struct *t); extern void recalc_sigpending(void); extern void signal_wake_up(struct task_struct *t, int resume_stopped); static inline __attribute__((always_inline)) unsigned int task_cpu(const struct task_struct *p) { return ((struct thread_info *) ((char *) (p) + 3984))->cpu; } static inline __attribute__((always_inline)) void set_task_cpu(struct task_struct *p, unsigned int cpu) { ((struct thread_info *) ((char *) (p) + 3984))->cpu = cpu; } # 1377 "linux-2.6.16.6/include/linux/sched.h" static inline __attribute__((always_inline)) void arch_pick_mmap_layout(struct mm_struct *mm) { mm->mmap_base = (((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; }))->thread.map_base); mm->get_unmapped_area = arch_get_unmapped_area; mm->unmap_area = arch_unmap_area; } extern long sched_setaffinity(pid_t pid, cpumask_t new_mask); extern long sched_getaffinity(pid_t pid, cpumask_t *mask); extern void normalize_rt_tasks(void); static inline __attribute__((always_inline)) int frozen(struct task_struct *p) { return p->flags & 0x00010000; } static inline __attribute__((always_inline)) int freezing(struct task_struct *p) { return p->flags & 0x00004000; } static inline __attribute__((always_inline)) void freeze(struct task_struct *p) { p->flags |= 0x00004000; } static inline __attribute__((always_inline)) int thaw_process(struct task_struct *p) { if (frozen(p)) { p->flags &= ~0x00010000; wake_up_process(p); return 1; } return 0; } static inline __attribute__((always_inline)) void frozen_process(struct task_struct *p) { p->flags = (p->flags & ~0x00004000) | 0x00010000; } extern void refrigerator(void); extern int freeze_processes(void); extern void thaw_processes(void); static inline __attribute__((always_inline)) int try_to_freeze(void) { if (freezing(((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })))) { refrigerator(); return 1; } else return 0; } # 11 "linux-2.6.16.6/include/linux/module.h" 2 # 1 "linux-2.6.16.6/include/linux/stat.h" 1 # 1 "linux-2.6.16.6/include/asm/stat.h" 1 # 9 "linux-2.6.16.6/include/asm/stat.h" struct stat { unsigned long st_dev; unsigned long st_ino; unsigned long st_nlink; unsigned int st_mode; unsigned int st_uid; unsigned int st_gid; unsigned int __pad0; unsigned long st_rdev; unsigned long st_size; unsigned long st_atime; unsigned long st_atime_nsec; unsigned long st_mtime; unsigned long st_mtime_nsec; unsigned long st_ctime; unsigned long st_ctime_nsec; unsigned long st_blksize; long st_blocks; unsigned long __unused[3]; }; struct ia64_oldstat { unsigned int st_dev; unsigned int st_ino; unsigned int st_mode; unsigned int st_nlink; unsigned int st_uid; unsigned int st_gid; unsigned int st_rdev; unsigned int __pad1; unsigned long st_size; unsigned long st_atime; unsigned long st_mtime; unsigned long st_ctime; unsigned int st_blksize; int st_blocks; unsigned int __unused1; unsigned int __unused2; }; # 7 "linux-2.6.16.6/include/linux/stat.h" 2 # 59 "linux-2.6.16.6/include/linux/stat.h" struct kstat { unsigned long ino; dev_t dev; umode_t mode; unsigned int nlink; uid_t uid; gid_t gid; dev_t rdev; loff_t size; struct timespec atime; struct timespec mtime; struct timespec ctime; unsigned long blksize; unsigned long blocks; }; # 14 "linux-2.6.16.6/include/linux/module.h" 2 # 1 "linux-2.6.16.6/include/linux/kmod.h" 1 # 32 "linux-2.6.16.6/include/linux/kmod.h" extern int request_module(const char * name, ...) __attribute__ ((format (printf, 1, 2))); struct key; extern int call_usermodehelper_keys(char *path, char *argv[], char *envp[], struct key *session_keyring, int wait); static inline __attribute__((always_inline)) int call_usermodehelper(char *path, char **argv, char **envp, int wait) { return call_usermodehelper_keys(path, argv, envp, ((void *)0), wait); } extern void usermodehelper_init(void); # 17 "linux-2.6.16.6/include/linux/module.h" 2 # 1 "linux-2.6.16.6/include/linux/elf.h" 1 # 1 "linux-2.6.16.6/include/asm/elf.h" 1 # 140 "linux-2.6.16.6/include/asm/elf.h" extern void ia64_init_addr_space (void); # 158 "linux-2.6.16.6/include/asm/elf.h" typedef unsigned long elf_fpxregset_t; typedef unsigned long elf_greg_t; typedef elf_greg_t elf_gregset_t[128]; typedef struct ia64_fpreg elf_fpreg_t; typedef elf_fpreg_t elf_fpregset_t[128]; struct pt_regs; extern void ia64_elf_core_copy_regs (struct pt_regs *src, elf_gregset_t dst); # 186 "linux-2.6.16.6/include/asm/elf.h" struct task_struct; extern int dump_task_regs(struct task_struct *, elf_gregset_t *); extern int dump_task_fpu (struct task_struct *, elf_fpregset_t *); # 7 "linux-2.6.16.6/include/linux/elf.h" 2 # 16 "linux-2.6.16.6/include/linux/elf.h" typedef __u32 Elf32_Addr; typedef __u16 Elf32_Half; typedef __u32 Elf32_Off; typedef __s32 Elf32_Sword; typedef __u32 Elf32_Word; typedef __u64 Elf64_Addr; typedef __u16 Elf64_Half; typedef __s16 Elf64_SHalf; typedef __u64 Elf64_Off; typedef __s32 Elf64_Sword; typedef __u32 Elf64_Word; typedef __u64 Elf64_Xword; typedef __s64 Elf64_Sxword; # 164 "linux-2.6.16.6/include/linux/elf.h" typedef struct dynamic{ Elf32_Sword d_tag; union{ Elf32_Sword d_val; Elf32_Addr d_ptr; } d_un; } Elf32_Dyn; typedef struct { Elf64_Sxword d_tag; union { Elf64_Xword d_val; Elf64_Addr d_ptr; } d_un; } Elf64_Dyn; # 187 "linux-2.6.16.6/include/linux/elf.h" typedef struct elf32_rel { Elf32_Addr r_offset; Elf32_Word r_info; } Elf32_Rel; typedef struct elf64_rel { Elf64_Addr r_offset; Elf64_Xword r_info; } Elf64_Rel; typedef struct elf32_rela{ Elf32_Addr r_offset; Elf32_Word r_info; Elf32_Sword r_addend; } Elf32_Rela; typedef struct elf64_rela { Elf64_Addr r_offset; Elf64_Xword r_info; Elf64_Sxword r_addend; } Elf64_Rela; typedef struct elf32_sym{ Elf32_Word st_name; Elf32_Addr st_value; Elf32_Word st_size; unsigned char st_info; unsigned char st_other; Elf32_Half st_shndx; } Elf32_Sym; typedef struct elf64_sym { Elf64_Word st_name; unsigned char st_info; unsigned char st_other; Elf64_Half st_shndx; Elf64_Addr st_value; Elf64_Xword st_size; } Elf64_Sym; typedef struct elf32_hdr{ unsigned char e_ident[16]; Elf32_Half e_type; Elf32_Half e_machine; Elf32_Word e_version; Elf32_Addr e_entry; Elf32_Off e_phoff; Elf32_Off e_shoff; Elf32_Word e_flags; Elf32_Half e_ehsize; Elf32_Half e_phentsize; Elf32_Half e_phnum; Elf32_Half e_shentsize; Elf32_Half e_shnum; Elf32_Half e_shstrndx; } Elf32_Ehdr; typedef struct elf64_hdr { unsigned char e_ident[16]; Elf64_Half e_type; Elf64_Half e_machine; Elf64_Word e_version; Elf64_Addr e_entry; Elf64_Off e_phoff; Elf64_Off e_shoff; Elf64_Word e_flags; Elf64_Half e_ehsize; Elf64_Half e_phentsize; Elf64_Half e_phnum; Elf64_Half e_shentsize; Elf64_Half e_shnum; Elf64_Half e_shstrndx; } Elf64_Ehdr; typedef struct elf32_phdr{ Elf32_Word p_type; Elf32_Off p_offset; Elf32_Addr p_vaddr; Elf32_Addr p_paddr; Elf32_Word p_filesz; Elf32_Word p_memsz; Elf32_Word p_flags; Elf32_Word p_align; } Elf32_Phdr; typedef struct elf64_phdr { Elf64_Word p_type; Elf64_Word p_flags; Elf64_Off p_offset; Elf64_Addr p_vaddr; Elf64_Addr p_paddr; Elf64_Xword p_filesz; Elf64_Xword p_memsz; Elf64_Xword p_align; } Elf64_Phdr; # 326 "linux-2.6.16.6/include/linux/elf.h" typedef struct { Elf32_Word sh_name; Elf32_Word sh_type; Elf32_Word sh_flags; Elf32_Addr sh_addr; Elf32_Off sh_offset; Elf32_Word sh_size; Elf32_Word sh_link; Elf32_Word sh_info; Elf32_Word sh_addralign; Elf32_Word sh_entsize; } Elf32_Shdr; typedef struct elf64_shdr { Elf64_Word sh_name; Elf64_Word sh_type; Elf64_Xword sh_flags; Elf64_Addr sh_addr; Elf64_Off sh_offset; Elf64_Xword sh_size; Elf64_Word sh_link; Elf64_Word sh_info; Elf64_Xword sh_addralign; Elf64_Xword sh_entsize; } Elf64_Shdr; # 399 "linux-2.6.16.6/include/linux/elf.h" typedef struct elf32_note { Elf32_Word n_namesz; Elf32_Word n_descsz; Elf32_Word n_type; } Elf32_Nhdr; typedef struct elf64_note { Elf64_Word n_namesz; Elf64_Word n_descsz; Elf64_Word n_type; } Elf64_Nhdr; # 421 "linux-2.6.16.6/include/linux/elf.h" extern Elf64_Dyn _DYNAMIC []; # 18 "linux-2.6.16.6/include/linux/module.h" 2 # 1 "linux-2.6.16.6/include/linux/kobject.h" 1 # 22 "linux-2.6.16.6/include/linux/kobject.h" # 1 "linux-2.6.16.6/include/linux/sysfs.h" 1 # 15 "linux-2.6.16.6/include/linux/sysfs.h" struct kobject; struct module; struct attribute { const char * name; struct module * owner; mode_t mode; }; struct attribute_group { const char * name; struct attribute ** attrs; }; # 51 "linux-2.6.16.6/include/linux/sysfs.h" struct vm_area_struct; struct bin_attribute { struct attribute attr; size_t size; void *private; ssize_t (*read)(struct kobject *, char *, loff_t, size_t); ssize_t (*write)(struct kobject *, char *, loff_t, size_t); int (*mmap)(struct kobject *, struct bin_attribute *attr, struct vm_area_struct *vma); }; struct sysfs_ops { ssize_t (*show)(struct kobject *, struct attribute *,char *); ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t); }; struct sysfs_dirent { atomic_t s_count; struct list_head s_sibling; struct list_head s_children; void * s_element; int s_type; umode_t s_mode; struct dentry * s_dentry; struct iattr * s_iattr; }; # 88 "linux-2.6.16.6/include/linux/sysfs.h" extern int sysfs_create_dir(struct kobject *); extern void sysfs_remove_dir(struct kobject *); extern int sysfs_rename_dir(struct kobject *, const char *new_name); extern int sysfs_create_file(struct kobject *, const struct attribute *); extern int sysfs_update_file(struct kobject *, const struct attribute *); extern int sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode); extern void sysfs_remove_file(struct kobject *, const struct attribute *); extern int sysfs_create_link(struct kobject * kobj, struct kobject * target, const char * name); extern void sysfs_remove_link(struct kobject *, const char * name); int sysfs_create_bin_file(struct kobject * kobj, struct bin_attribute * attr); int sysfs_remove_bin_file(struct kobject * kobj, struct bin_attribute * attr); int sysfs_create_group(struct kobject *, const struct attribute_group *); void sysfs_remove_group(struct kobject *, const struct attribute_group *); # 23 "linux-2.6.16.6/include/linux/kobject.h" 2 # 1 "linux-2.6.16.6/include/linux/kref.h" 1 # 23 "linux-2.6.16.6/include/linux/kref.h" struct kref { atomic_t refcount; }; void kref_init(struct kref *kref); void kref_get(struct kref *kref); int kref_put(struct kref *kref, void (*release) (struct kref *kref)); # 26 "linux-2.6.16.6/include/linux/kobject.h" 2 extern char uevent_helper[]; extern u64 uevent_seqnum; typedef int kobject_action_t; enum kobject_action { KOBJ_ADD = ( kobject_action_t) 0x01, KOBJ_REMOVE = ( kobject_action_t) 0x02, KOBJ_CHANGE = ( kobject_action_t) 0x03, KOBJ_MOUNT = ( kobject_action_t) 0x04, KOBJ_UMOUNT = ( kobject_action_t) 0x05, KOBJ_OFFLINE = ( kobject_action_t) 0x06, KOBJ_ONLINE = ( kobject_action_t) 0x07, }; struct kobject { const char * k_name; char name[20]; struct kref kref; struct list_head entry; struct kobject * parent; struct kset * kset; struct kobj_type * ktype; struct dentry * dentry; }; extern int kobject_set_name(struct kobject *, const char *, ...) __attribute__((format(printf,2,3))); static inline __attribute__((always_inline)) const char * kobject_name(const struct kobject * kobj) { return kobj->k_name; } extern void kobject_init(struct kobject *); extern void kobject_cleanup(struct kobject *); extern int kobject_add(struct kobject *); extern void kobject_del(struct kobject *); extern int kobject_rename(struct kobject *, const char *new_name); extern int kobject_register(struct kobject *); extern void kobject_unregister(struct kobject *); extern struct kobject * kobject_get(struct kobject *); extern void kobject_put(struct kobject *); extern char * kobject_get_path(struct kobject *, gfp_t); struct kobj_type { void (*release)(struct kobject *); struct sysfs_ops * sysfs_ops; struct attribute ** default_attrs; }; # 109 "linux-2.6.16.6/include/linux/kobject.h" struct kset_uevent_ops { int (*filter)(struct kset *kset, struct kobject *kobj); const char *(*name)(struct kset *kset, struct kobject *kobj); int (*uevent)(struct kset *kset, struct kobject *kobj, char **envp, int num_envp, char *buffer, int buffer_size); }; struct kset { struct subsystem * subsys; struct kobj_type * ktype; struct list_head list; spinlock_t list_lock; struct kobject kobj; struct kset_uevent_ops * uevent_ops; }; extern void kset_init(struct kset * k); extern int kset_add(struct kset * k); extern int kset_register(struct kset * k); extern void kset_unregister(struct kset * k); static inline __attribute__((always_inline)) struct kset * to_kset(struct kobject * kobj) { return kobj ? ({ const typeof( ((struct kset *)0)->kobj ) *__mptr = (kobj); (struct kset *)( (char *)__mptr - __builtin_offsetof(struct kset,kobj) );}) : ((void *)0); } static inline __attribute__((always_inline)) struct kset * kset_get(struct kset * k) { return k ? to_kset(kobject_get(&k->kobj)) : ((void *)0); } static inline __attribute__((always_inline)) void kset_put(struct kset * k) { kobject_put(&k->kobj); } static inline __attribute__((always_inline)) struct kobj_type * get_ktype(struct kobject * k) { if (k->kset && k->kset->ktype) return k->kset->ktype; else return k->ktype; } extern struct kobject * kset_find_obj(struct kset *, const char *); # 165 "linux-2.6.16.6/include/linux/kobject.h" struct subsystem { struct kset kset; struct rw_semaphore rwsem; }; # 188 "linux-2.6.16.6/include/linux/kobject.h" extern struct subsystem kernel_subsys; # 235 "linux-2.6.16.6/include/linux/kobject.h" extern void subsystem_init(struct subsystem *); extern int subsystem_register(struct subsystem *); extern void subsystem_unregister(struct subsystem *); static inline __attribute__((always_inline)) struct subsystem * subsys_get(struct subsystem * s) { return s ? ({ const typeof( ((struct subsystem *)0)->kset ) *__mptr = (kset_get(&s->kset)); (struct subsystem *)( (char *)__mptr - __builtin_offsetof(struct subsystem,kset) );}) : ((void *)0); } static inline __attribute__((always_inline)) void subsys_put(struct subsystem * s) { kset_put(&s->kset); } struct subsys_attribute { struct attribute attr; ssize_t (*show)(struct subsystem *, char *); ssize_t (*store)(struct subsystem *, const char *, size_t); }; extern int subsys_create_file(struct subsystem * , struct subsys_attribute *); extern void subsys_remove_file(struct subsystem * , struct subsys_attribute *); void kobject_uevent(struct kobject *kobj, enum kobject_action action); int add_uevent_var(char **envp, int num_envp, int *cur_index, char *buffer, int buffer_size, int *cur_len, const char *format, ...) __attribute__((format (printf, 7, 8))); # 20 "linux-2.6.16.6/include/linux/module.h" 2 # 1 "linux-2.6.16.6/include/linux/moduleparam.h" 1 # 29 "linux-2.6.16.6/include/linux/moduleparam.h" struct kernel_param; typedef int (*param_set_fn)(const char *val, struct kernel_param *kp); typedef int (*param_get_fn)(char *buffer, struct kernel_param *kp); struct kernel_param { const char *name; unsigned int perm; param_set_fn set; param_get_fn get; void *arg; }; struct kparam_string { unsigned int maxlen; char *string; }; struct kparam_array { unsigned int max; unsigned int *num; param_set_fn set; param_get_fn get; unsigned int elemsize; void *elem; }; # 95 "linux-2.6.16.6/include/linux/moduleparam.h" extern int parse_args(const char *name, char *args, struct kernel_param *params, unsigned num, int (*unknown)(char *param, char *val)); extern int param_set_byte(const char *val, struct kernel_param *kp); extern int param_get_byte(char *buffer, struct kernel_param *kp); extern int param_set_short(const char *val, struct kernel_param *kp); extern int param_get_short(char *buffer, struct kernel_param *kp); extern int param_set_ushort(const char *val, struct kernel_param *kp); extern int param_get_ushort(char *buffer, struct kernel_param *kp); extern int param_set_int(const char *val, struct kernel_param *kp); extern int param_get_int(char *buffer, struct kernel_param *kp); extern int param_set_uint(const char *val, struct kernel_param *kp); extern int param_get_uint(char *buffer, struct kernel_param *kp); extern int param_set_long(const char *val, struct kernel_param *kp); extern int param_get_long(char *buffer, struct kernel_param *kp); extern int param_set_ulong(const char *val, struct kernel_param *kp); extern int param_get_ulong(char *buffer, struct kernel_param *kp); extern int param_set_charp(const char *val, struct kernel_param *kp); extern int param_get_charp(char *buffer, struct kernel_param *kp); extern int param_set_bool(const char *val, struct kernel_param *kp); extern int param_get_bool(char *buffer, struct kernel_param *kp); extern int param_set_invbool(const char *val, struct kernel_param *kp); extern int param_get_invbool(char *buffer, struct kernel_param *kp); # 159 "linux-2.6.16.6/include/linux/moduleparam.h" extern int param_array_set(const char *val, struct kernel_param *kp); extern int param_array_get(char *buffer, struct kernel_param *kp); extern int param_set_copystring(const char *val, struct kernel_param *kp); extern int param_get_string(char *buffer, struct kernel_param *kp); int param_array(const char *name, const char *val, unsigned int min, unsigned int max, void *elem, int elemsize, int (*set)(const char *, struct kernel_param *kp), int *num); struct module; extern int module_param_sysfs_setup(struct module *mod, struct kernel_param *kparam, unsigned int num_params); extern void module_param_sysfs_remove(struct module *mod); # 21 "linux-2.6.16.6/include/linux/module.h" 2 # 1 "linux-2.6.16.6/include/asm/local.h" 1 # 11 "linux-2.6.16.6/include/asm/local.h" typedef struct { atomic64_t val; } local_t; # 22 "linux-2.6.16.6/include/linux/module.h" 2 # 1 "linux-2.6.16.6/include/asm/module.h" 1 # 11 "linux-2.6.16.6/include/asm/module.h" struct elf64_shdr; struct mod_arch_specific { struct elf64_shdr *core_plt; struct elf64_shdr *init_plt; struct elf64_shdr *got; struct elf64_shdr *opd; struct elf64_shdr *unwind; unsigned long gp; void *core_unw_table; void *init_unw_table; unsigned int next_got_entry; }; # 24 "linux-2.6.16.6/include/linux/module.h" 2 # 35 "linux-2.6.16.6/include/linux/module.h" struct kernel_symbol { unsigned long value; const char *name; }; struct modversion_info { unsigned long crc; char name[(64 - sizeof(unsigned long))]; }; struct module; struct module_attribute { struct attribute attr; ssize_t (*show)(struct module_attribute *, struct module *, char *); ssize_t (*store)(struct module_attribute *, struct module *, const char *, size_t count); void (*setup)(struct module *, const char *); int (*test)(struct module *); void (*free)(struct module *); }; struct module_kobject { struct kobject kobj; struct module *mod; }; extern int init_module(void); extern void cleanup_module(void); struct exception_table_entry; const struct exception_table_entry * search_extable(const struct exception_table_entry *first, const struct exception_table_entry *last, unsigned long value); void sort_extable(struct exception_table_entry *start, struct exception_table_entry *finish); void sort_main_extable(void); extern struct subsystem module_subsys; # 159 "linux-2.6.16.6/include/linux/module.h" const struct exception_table_entry *search_exception_tables(unsigned long add); struct notifier_block; void *__symbol_get(const char *symbol); void *__symbol_get_gpl(const char *symbol); # 203 "linux-2.6.16.6/include/linux/module.h" struct module_ref { local_t count; } __attribute__((__aligned__((1 << 7)))); enum module_state { MODULE_STATE_LIVE, MODULE_STATE_COMING, MODULE_STATE_GOING, }; struct module_sect_attr { struct module_attribute mattr; char name[32]; unsigned long address; }; struct module_sect_attrs { struct attribute_group grp; struct module_sect_attr attrs[0]; }; struct module_param_attrs; struct module { enum module_state state; struct list_head list; char name[(64 - sizeof(unsigned long))]; struct module_kobject mkobj; struct module_param_attrs *param_attrs; const char *version; const char *srcversion; const struct kernel_symbol *syms; unsigned int num_syms; const unsigned long *crcs; const struct kernel_symbol *gpl_syms; unsigned int num_gpl_syms; const unsigned long *gpl_crcs; unsigned int num_exentries; const struct exception_table_entry *extable; int (*init)(void); void *module_init; void *module_core; unsigned long init_size, core_size; unsigned long init_text_size, core_text_size; struct mod_arch_specific arch; int unsafe; int license_gplok; struct module_ref ref[64]; struct list_head modules_which_use_me; struct task_struct *waiter; void (*exit)(void); Elf64_Sym *symtab; unsigned long num_symtab; char *strtab; struct module_sect_attrs *sect_attrs; void *percpu; char *args; }; static inline __attribute__((always_inline)) int module_is_live(struct module *mod) { return mod->state != MODULE_STATE_GOING; } struct module *module_text_address(unsigned long addr); struct module *__module_text_address(unsigned long addr); struct module *module_get_kallsym(unsigned int symnum, unsigned long *value, char *type, char namebuf[128]); unsigned long module_kallsyms_lookup_name(const char *name); int is_exported(const char *name, const struct module *mod); extern void __module_put_and_exit(struct module *mod, long code) __attribute__((noreturn)); unsigned int module_refcount(struct module *mod); void __symbol_put(const char *symbol); void symbol_put_addr(void *addr); static inline __attribute__((always_inline)) void __module_get(struct module *module) { if (module) { do { if (__builtin_expect(!!((module_refcount(module) == 0)!=0), 0)) do { printk("kernel BUG at %s:%d!\n", "linux-2.6.16.6/include/linux/module.h", 357); __builtin_trap(); } while (0); } while(0); ({ long __ia64_aar_i = ((1)); (__builtin_constant_p((1)) && ( (__ia64_aar_i == 1) || (__ia64_aar_i == 4) || (__ia64_aar_i == 8) || (__ia64_aar_i == 16) || (__ia64_aar_i == -1) || (__ia64_aar_i == -4) || (__ia64_aar_i == -8) || (__ia64_aar_i == -16))) ? (({ __u64 _tmp; volatile __typeof__(*(&(((&(&module->ref[({ do { } while (0); (((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984))->cpu); })].count)->val)))->counter)) *_v = (&(((&(&module->ref[({ do { } while (0); (((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984))->cpu); })].count)->val)))->counter); if ((__ia64_aar_i) == -16) ({ switch (sizeof(*(&(((&(&module->ref[({ do { } while (0); (((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984))->cpu); })].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -8) ({ switch (sizeof(*(&(((&(&module->ref[({ do { } while (0); (((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984))->cpu); })].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -4) ({ switch (sizeof(*(&(((&(&module->ref[({ do { } while (0); (((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984))->cpu); })].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -1) ({ switch (sizeof(*(&(((&(&module->ref[({ do { } while (0); (((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984))->cpu); })].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 1) ({ switch (sizeof(*(&(((&(&module->ref[({ do { } while (0); (((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984))->cpu); })].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 4) ({ switch (sizeof(*(&(((&(&module->ref[({ do { } while (0); (((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984))->cpu); })].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 8) ({ switch (sizeof(*(&(((&(&module->ref[({ do { } while (0); (((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984))->cpu); })].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 16) ({ switch (sizeof(*(&(((&(&module->ref[({ do { } while (0); (((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984))->cpu); })].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&(((&(&module->ref[({ do { } while (0); (((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984))->cpu); })].count)->val)))->counter))) (_tmp); }) + (__ia64_aar_i)) : ia64_atomic64_add(__ia64_aar_i, ((&(&module->ref[({ do { } while (0); (((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984))->cpu); })].count)->val))); }); do { } while (0); } } static inline __attribute__((always_inline)) int try_module_get(struct module *module) { int ret = 1; if (module) { unsigned int cpu = ({ do { } while (0); (((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984))->cpu); }); if (__builtin_expect(!!(module_is_live(module)), 1)) ({ long __ia64_aar_i = ((1)); (__builtin_constant_p((1)) && ( (__ia64_aar_i == 1) || (__ia64_aar_i == 4) || (__ia64_aar_i == 8) || (__ia64_aar_i == 16) || (__ia64_aar_i == -1) || (__ia64_aar_i == -4) || (__ia64_aar_i == -8) || (__ia64_aar_i == -16))) ? (({ __u64 _tmp; volatile __typeof__(*(&(((&(&module->ref[cpu].count)->val)))->counter)) *_v = (&(((&(&module->ref[cpu].count)->val)))->counter); if ((__ia64_aar_i) == -16) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -8) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -4) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == -1) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 1) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 4) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 8) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((__ia64_aar_i) == 16) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&(((&(&module->ref[cpu].count)->val)))->counter))) (_tmp); }) + (__ia64_aar_i)) : ia64_atomic64_add(__ia64_aar_i, ((&(&module->ref[cpu].count)->val))); }); else ret = 0; do { } while (0); } return ret; } static inline __attribute__((always_inline)) void module_put(struct module *module) { if (module) { unsigned int cpu = ({ do { } while (0); (((struct thread_info *) ((char *) ((struct task_struct *) ({ __u64 ia64_intri_res; switch (1037) { case 1025: asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); break; case 1016: asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); break; case 1019: asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); break; case 1037: ia64_intri_res = ia64_r13; break; case 3072 ... 3138: asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) : "i"(1037 - 3072)); break; case 4096 ... 4177: asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) : "i" (1037 - 4096)); break; case 1036: asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); break; default: ia64_bad_param_for_getreg(); break; } ia64_intri_res; })) + 3984))->cpu); }); ({ long __ia64_asr_i = ((1)); (__builtin_constant_p((1)) && ( (__ia64_asr_i == 1) || (__ia64_asr_i == 4) || (__ia64_asr_i == 8) || (__ia64_asr_i == 16) || (__ia64_asr_i == -1) || (__ia64_asr_i == -4) || (__ia64_asr_i == -8) || (__ia64_asr_i == -16))) ? (({ __u64 _tmp; volatile __typeof__(*(&(((&(&module->ref[cpu].count)->val)))->counter)) *_v = (&(((&(&module->ref[cpu].count)->val)))->counter); if ((-__ia64_asr_i) == -16) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == -8) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == -4) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == -1) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (-1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 1) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (1) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 4) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (4) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 8) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (8) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else if ((-__ia64_asr_i) == 16) ({ switch (sizeof(*(&(((&(&module->ref[cpu].count)->val)))->counter))) { case 4: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd4.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned int *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; case 8: _tmp = ({ __u64 ia64_intri_res; asm volatile ("fetchadd8.rel %0=[%1],%2" : "=r"(ia64_intri_res) : "r"((unsigned long *) _v), "i" (16) : "memory"); ia64_intri_res; }); break; default: __bad_size_for_ia64_fetch_and_add(); } }); else _tmp = __bad_increment_for_ia64_fetch_and_add(); (__typeof__(*(&(((&(&module->ref[cpu].count)->val)))->counter))) (_tmp); }) + (-__ia64_asr_i)) : ia64_atomic64_sub(__ia64_asr_i, ((&(&module->ref[cpu].count)->val))); }); if (__builtin_expect(!!(!module_is_live(module)), 0)) wake_up_process(module->waiter); do { } while (0); } } # 424 "linux-2.6.16.6/include/linux/module.h" const char *module_address_lookup(unsigned long addr, unsigned long *symbolsize, unsigned long *offset, char **modname); const struct exception_table_entry *search_module_extables(unsigned long addr); int register_module_notifier(struct notifier_block * nb); int unregister_module_notifier(struct notifier_block * nb); extern void print_modules(void); struct device_driver; void module_add_driver(struct module *, struct device_driver *); void module_remove_driver(struct device_driver *); # 547 "linux-2.6.16.6/include/linux/module.h" struct obsolete_modparm { char name[64]; char type[64-sizeof(void *)]; void *addr; }; static inline __attribute__((always_inline)) void MODULE_PARM_(void) { } # 570 "linux-2.6.16.6/include/linux/module.h" extern void __attribute__((deprecated)) inter_module_register(const char *, struct module *, const void *); extern void __attribute__((deprecated)) inter_module_unregister(const char *); extern const void * __attribute__((deprecated)) inter_module_get_request(const char *, const char *); extern void __attribute__((deprecated)) inter_module_put(const char *); # 5 "linux-2.6.16.6/arch/ia64/lib/bitop.c" 2 int __find_next_zero_bit (const void *addr, unsigned long size, unsigned long offset) { unsigned long *p = ((unsigned long *) addr) + (offset >> 6); unsigned long result = offset & ~63UL; unsigned long tmp; if (offset >= size) return size; size -= result; offset &= 63UL; if (offset) { tmp = *(p++); tmp |= ~0UL >> (64-offset); if (size < 64) goto found_first; if (~tmp) goto found_middle; size -= 64; result += 64; } while (size & ~63UL) { if (~(tmp = *(p++))) goto found_middle; result += 64; size -= 64; } if (!size) return result; tmp = *p; found_first: tmp |= ~0UL << size; if (tmp == ~0UL) return result + size; found_middle: return result + ffz(tmp); } extern void *__crc___find_next_zero_bit __attribute__((weak)); static const unsigned long __kcrctab___find_next_zero_bit __attribute__((__used__)) __attribute__((section("__kcrctab" ""), unused)) = (unsigned long) &__crc___find_next_zero_bit; static const char __kstrtab___find_next_zero_bit[] __attribute__((section("__ksymtab_strings"))) = "" "__find_next_zero_bit"; static const struct kernel_symbol __ksymtab___find_next_zero_bit __attribute__((__used__)) __attribute__((section("__ksymtab" ""), unused)) = { (unsigned long)&__find_next_zero_bit, __kstrtab___find_next_zero_bit }; int __find_next_bit(const void *addr, unsigned long size, unsigned long offset) { unsigned long *p = ((unsigned long *) addr) + (offset >> 6); unsigned long result = offset & ~63UL; unsigned long tmp; if (offset >= size) return size; size -= result; offset &= 63UL; if (offset) { tmp = *(p++); tmp &= ~0UL << offset; if (size < 64) goto found_first; if (tmp) goto found_middle; size -= 64; result += 64; } while (size & ~63UL) { if ((tmp = *(p++))) goto found_middle; result += 64; size -= 64; } if (!size) return result; tmp = *p; found_first: tmp &= ~0UL >> (64-size); if (tmp == 0UL) return result + size; found_middle: return result + __ffs(tmp); } extern void *__crc___find_next_bit __attribute__((weak)); static const unsigned long __kcrctab___find_next_bit __attribute__((__used__)) __attribute__((section("__kcrctab" ""), unused)) = (unsigned long) &__crc___find_next_bit; static const char __kstrtab___find_next_bit[] __attribute__((section("__ksymtab_strings"))) = "" "__find_next_bit"; static const struct kernel_symbol __ksymtab___find_next_bit __attribute__((__used__)) __attribute__((section("__ksymtab" ""), unused)) = { (unsigned long)&__find_next_bit, __kstrtab___find_next_bit };