uaccess_64.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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(x, ptr); \
  28. break; \
  29. case 2: \
  30. retval = __get_user_asm_w(x, ptr); \
  31. break; \
  32. case 4: \
  33. retval = __get_user_asm_l(x, ptr); \
  34. break; \
  35. case 8: \
  36. retval = __get_user_asm_q(x, ptr); \
  37. break; \
  38. default: \
  39. __get_user_unknown(); \
  40. break; \
  41. } \
  42. } while (0)
  43. extern long __get_user_asm_b(void *, long);
  44. extern long __get_user_asm_w(void *, long);
  45. extern long __get_user_asm_l(void *, long);
  46. extern long __get_user_asm_q(void *, long);
  47. extern void __get_user_unknown(void);
  48. #define __put_user_size(x,ptr,size,retval) \
  49. do { \
  50. retval = 0; \
  51. switch (size) { \
  52. case 1: \
  53. retval = __put_user_asm_b(x, ptr); \
  54. break; \
  55. case 2: \
  56. retval = __put_user_asm_w(x, ptr); \
  57. break; \
  58. case 4: \
  59. retval = __put_user_asm_l(x, ptr); \
  60. break; \
  61. case 8: \
  62. retval = __put_user_asm_q(x, ptr); \
  63. break; \
  64. default: \
  65. __put_user_unknown(); \
  66. } \
  67. } while (0)
  68. extern long __put_user_asm_b(void *, long);
  69. extern long __put_user_asm_w(void *, long);
  70. extern long __put_user_asm_l(void *, long);
  71. extern long __put_user_asm_q(void *, long);
  72. extern void __put_user_unknown(void);
  73. extern long __strnlen_user(const char *__s, long __n);
  74. #endif /* __ASM_SH_UACCESS_64_H */