text: # 1 "qpmouse.c"
   
  
  
  static __inline__ void atomic_sub(int i, volatile atomic_t *v)
  {
  	__asm__ __volatile__(
  		""  "subl %1,%0"
  		:"=m" ((*(volatile struct { int a[100]; } *) v ) )
  		:"ir" (i), "m" ((*(volatile struct { int a[100]; } *) v ) ));
  }
  
  
  union task_union {
  	struct task_struct task;
  	unsigned long stack[2048];
  };
  
  extern union task_union init_task_union;
  
  extern struct   mm_struct init_mm;
  extern struct task_struct *task[512 ];
  
  extern struct task_struct **tarray_freelist;
  extern spinlock_t taskslot_lock;
  
  extern __inline__ void add_free_taskslot(struct task_struct **t)
  {
  	(void)( &taskslot_lock ) ;
  	*t = (struct task_struct *) tarray_freelist;
  	tarray_freelist = t;
  	do { } while(0) ;
  }
  
  extern __inline__ struct task_struct **get_free_taskslot(void)
  {
  	struct task_struct **tslot;
  
  	(void)( &taskslot_lock ) ;
  	if((tslot = tarray_freelist) != ((void *)0) )
  		tarray_freelist = (struct task_struct **) *tslot;
  	do { } while(0) ;
  
  	return tslot;
  }
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  # 1 "/home/scott/wrk/driver/linux/include/linux/module.h" 1
   
  
  
  
  
  
  
  
  
  # 1 "/home/scott/wrk/driver/linux/include/linux/config.h" 1
  
  
  
  # 1 "/home/scott/wrk/driver/linux/include/linux/autoconf.h" 1
   
  
  
  
  
   
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
  
  
   
  
  
  
  
   
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
   
  
  
  
  
   
  
  
  
  
   
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
   
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
   
  
  
  
  # 4 "/home/scott/wrk/driver/linux/include/linux/config.h" 2
  
  
  
  # 10 "/home/scott/wrk/driver/linux/include/linux/module.h" 2
  
  
  
  
  
  
  
  
  
  
  
  
  
  # 1 "/home/scott/wrk/driver/linux/include/asm/atomic.h" 1
  
  
  
   
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  typedef struct { int counter; } atomic_t;
  
  
  
  
  
  
  
  static __inline__ void atomic_add(int i, volatile atomic_t *v)
  {
  	__asm__ __volatile__(
  		""  "addl %1,%0"
  		:"=m" ((*(volatile struct { int a[100]; } *) v ) )
  		:"ir" (i), "m" ((*(volatile struct { int a[100]; } *) v ) ));
  }
  
  static __inline__ void atomic_sub(int i, volatile atomic_t *v)
  {
  	__asm__ __volatile__(
  		""  "subl %1,%0"
  		:"=m" ((*(volatile struct { int a[100]; } *) v ) )
  		:"ir" (i), "m" ((*(volatile struct { int a[100]; } *) v ) ));
  }
  