uaccess_64.h 2.3 KB

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