| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | #ifndef _ASM_IA64_UACCESS_H#define _ASM_IA64_UACCESS_H/* * This file defines various macros to transfer memory areas across * the user/kernel boundary.  This needs to be done carefully because * this code is executed in kernel mode and uses user-specified * addresses.  Thus, we need to be careful not to let the user to * trick us into accessing kernel memory that would normally be * inaccessible.  This code is also fairly performance sensitive, * so we want to spend as little time doing safety checks as * possible. * * To make matters a bit more interesting, these macros sometimes also * called from within the kernel itself, in which case the address * validity check must be skipped.  The get_fs() macro tells us what * to do: if get_fs()==USER_DS, checking is performed, if * get_fs()==KERNEL_DS, checking is bypassed. * * Note that even if the memory area specified by the user is in a * valid address range, it is still possible that we'll get a page * fault while accessing it.  This is handled by filling out an * exception handler fixup entry for each instruction that has the * potential to fault.  When such a fault occurs, the page fault * handler checks to see whether the faulting instruction has a fixup * associated and, if so, sets r8 to -EFAULT and clears r9 to 0 and * then resumes execution at the continuation point. * * Based on <asm-alpha/uaccess.h>. * * Copyright (C) 1998, 1999, 2001-2004 Hewlett-Packard Co *	David Mosberger-Tang <davidm@hpl.hp.com> */#include <linux/compiler.h>#include <linux/errno.h>#include <linux/sched.h>#include <linux/page-flags.h>#include <linux/mm.h>#include <asm/intrinsics.h>#include <asm/pgtable.h>#include <asm/io.h>/* * For historical reasons, the following macros are grossly misnamed: */
 |