/* Some old gccs recognize __va_copy, but not va_copy */ __va_copy(args, *(va_list *)arg_ptr); 
va_copy(args, *(va_list *)arg_ptr); 
static void do_buffer_op(void *jmpbuf, void *arg_ptr){	va_list args;	unsigned long addr;	int len, is_write, size, remain, n;	int (*op)(unsigned long, int, void *);	void *arg;	int *res;	/* Some old gccs recognize __va_copy, but not va_copy */	__va_copy(args, *(va_list *)arg_ptr);	addr = va_arg(args, unsigned long);	len = va_arg(args, int);	is_write = va_arg(args, int);	op = va_arg(args, void *);	arg = va_arg(args, void *);	res = va_arg(args, int *);	va_end(args);	size = min(PAGE_ALIGN(addr) - addr, (unsigned long) len);	remain = len;	current->thread.fault_catcher = jmpbuf;	n = do_op(addr, size, is_write, op, arg);	if(n != 0){		*res = (n < 0 ? remain : 0);		goto out;	}	addr += size;	remain -= size;	if(remain == 0){		*res = 0;		goto out;	}	while(addr < ((addr + remain) & PAGE_MASK)){		n = do_op(addr, PAGE_SIZE, is_write, op, arg);		if(n != 0){			*res = (n < 0 ? remain : 0);			goto out;		}		addr += PAGE_SIZE;		remain -= PAGE_SIZE;	}	if(remain == 0){		*res = 0;		goto out;	}	n = do_op(addr, remain, is_write, op, arg);	if(n != 0)		*res = (n < 0 ? remain : 0);	else *res = 0; out:	current->thread.fault_catcher = NULL;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/e9c527163d31da9f616e989a90429729525c5233/uaccess.c/clean/arch/um/kernel/skas/uaccess.c