home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / sh / include / asm / uaccess_64.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.3 KB  |  92 lines

  1. #ifndef __ASM_SH_UACCESS_64_H
  2. #define __ASM_SH_UACCESS_64_H
  3.  
  4. /*
  5.  * include/asm-sh/uaccess_64.h
  6.  *
  7.  * Copyright (C) 2000, 2001  Paolo Alberelli
  8.  * Copyright (C) 2003, 2004  Paul Mundt
  9.  *
  10.  * User space memory access functions
  11.  *
  12.  * Copyright (C) 1999  Niibe Yutaka
  13.  *
  14.  *  Based on:
  15.  *     MIPS implementation version 1.15 by
  16.  *              Copyright (C) 1996, 1997, 1998 by Ralf Baechle
  17.  *     and i386 version.
  18.  *
  19.  * This file is subject to the terms and conditions of the GNU General Public
  20.  * License.  See the file "COPYING" in the main directory of this archive
  21.  * for more details.
  22.  */
  23.  
  24. #define __get_user_size(x,ptr,size,retval)            \
  25. do {                                \
  26.     retval = 0;                        \
  27.     switch (size) {                        \
  28.     case 1:                            \
  29.         retval = __get_user_asm_b((void *)&x,        \
  30.                       (long)ptr);        \
  31.         break;                        \
  32.     case 2:                            \
  33.         retval = __get_user_asm_w((void *)&x,        \
  34.                       (long)ptr);        \
  35.         break;                        \
  36.     case 4:                            \
  37.         retval = __get_user_asm_l((void *)&x,        \
  38.                       (long)ptr);        \
  39.         break;                        \
  40.     case 8:                            \
  41.         retval = __get_user_asm_q((void *)&x,        \
  42.                       (long)ptr);        \
  43.         break;                        \
  44.     default:                        \
  45.         __get_user_unknown();                \
  46.         break;                        \
  47.     }                            \
  48. } while (0)
  49.  
  50. extern long __get_user_asm_b(void *, long);
  51. extern long __get_user_asm_w(void *, long);
  52. extern long __get_user_asm_l(void *, long);
  53. extern long __get_user_asm_q(void *, long);
  54. extern void __get_user_unknown(void);
  55.  
  56. #define __put_user_size(x,ptr,size,retval)            \
  57. do {                                \
  58.     retval = 0;                        \
  59.     switch (size) {                        \
  60.     case 1:                            \
  61.         retval = __put_user_asm_b((void *)&x,        \
  62.                       (long)ptr);        \
  63.         break;                        \
  64.     case 2:                            \
  65.         retval = __put_user_asm_w((void *)&x,        \
  66.                       (long)ptr);        \
  67.         break;                        \
  68.     case 4:                            \
  69.         retval = __put_user_asm_l((void *)&x,        \
  70.                       (long)ptr);        \
  71.         break;                        \
  72.     case 8:                            \
  73.         retval = __put_user_asm_q((void *)&x,        \
  74.                       (long)ptr);        \
  75.         break;                        \
  76.     default:                        \
  77.         __put_user_unknown();                \
  78.     }                            \
  79. } while (0)
  80.  
  81. extern long __put_user_asm_b(void *, long);
  82. extern long __put_user_asm_w(void *, long);
  83. extern long __put_user_asm_l(void *, long);
  84. extern long __put_user_asm_q(void *, long);
  85. extern void __put_user_unknown(void);
  86.  
  87. extern long __strnlen_user(const char *__s, long __n);
  88. extern int __strncpy_from_user(unsigned long __dest,
  89.            unsigned long __user __src, int __count);
  90.  
  91. #endif /* __ASM_SH_UACCESS_64_H */
  92.