Linux Audio

Check our new training course

Loading...
v3.15
 
 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)			\
25do {								\
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
50extern long __get_user_asm_b(void *, long);
51extern long __get_user_asm_w(void *, long);
52extern long __get_user_asm_l(void *, long);
53extern long __get_user_asm_q(void *, long);
54extern void __get_user_unknown(void);
55
56#define __put_user_size(x,ptr,size,retval)			\
57do {								\
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
81extern long __put_user_asm_b(void *, long);
82extern long __put_user_asm_w(void *, long);
83extern long __put_user_asm_l(void *, long);
84extern long __put_user_asm_q(void *, long);
85extern void __put_user_unknown(void);
86
87#endif /* __ASM_SH_UACCESS_64_H */
v5.4
 1/* SPDX-License-Identifier: GPL-2.0 */
 2#ifndef __ASM_SH_UACCESS_64_H
 3#define __ASM_SH_UACCESS_64_H
 4
 5/*
 6 * include/asm-sh/uaccess_64.h
 7 *
 8 * Copyright (C) 2000, 2001  Paolo Alberelli
 9 * Copyright (C) 2003, 2004  Paul Mundt
10 *
11 * User space memory access functions
12 *
13 * Copyright (C) 1999  Niibe Yutaka
14 *
15 *  Based on:
16 *     MIPS implementation version 1.15 by
17 *              Copyright (C) 1996, 1997, 1998 by Ralf Baechle
18 *     and i386 version.
 
 
 
 
19 */
20
21#define __get_user_size(x,ptr,size,retval)			\
22do {								\
23	retval = 0;						\
24	x = 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
48extern long __get_user_asm_b(void *, long);
49extern long __get_user_asm_w(void *, long);
50extern long __get_user_asm_l(void *, long);
51extern long __get_user_asm_q(void *, long);
52extern void __get_user_unknown(void);
53
54#define __put_user_size(x,ptr,size,retval)			\
55do {								\
56	retval = 0;						\
57	switch (size) {						\
58	case 1:							\
59		retval = __put_user_asm_b((void *)&x,		\
60					  (__force long)ptr);	\
61		break;						\
62	case 2:							\
63		retval = __put_user_asm_w((void *)&x,		\
64					  (__force long)ptr);	\
65		break;						\
66	case 4:							\
67		retval = __put_user_asm_l((void *)&x,		\
68					  (__force long)ptr);	\
69		break;						\
70	case 8:							\
71		retval = __put_user_asm_q((void *)&x,		\
72					  (__force long)ptr);	\
73		break;						\
74	default:						\
75		__put_user_unknown();				\
76	}							\
77} while (0)
78
79extern long __put_user_asm_b(void *, long);
80extern long __put_user_asm_w(void *, long);
81extern long __put_user_asm_l(void *, long);
82extern long __put_user_asm_q(void *, long);
83extern void __put_user_unknown(void);
84
85#endif /* __ASM_SH_UACCESS_64_H */