Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.13.7.
 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 */