1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /* SPDX-License-Identifier: GPL-2.0 */
- #ifndef _ASM_UACCESS_H
- #define _ASM_UACCESS_H
- #include <linux/string.h>
- static inline __must_check unsigned long
- raw_copy_from_user(void *to, const void __user * from, unsigned long n)
- {
- if (__builtin_constant_p(n)) {
- switch(n) {
- case 1:
- *(u8 *)to = *(u8 __force *)from;
- return 0;
- case 2:
- *(u16 *)to = *(u16 __force *)from;
- return 0;
- case 4:
- *(u32 *)to = *(u32 __force *)from;
- return 0;
- }
- }
- memcpy(to, (const void __force *)from, n);
- return 0;
- }
- static inline __must_check unsigned long
- raw_copy_to_user(void __user *to, const void *from, unsigned long n)
- {
- if (__builtin_constant_p(n)) {
- switch(n) {
- case 1:
- *(u8 __force *)to = *(u8 *)from;
- return 0;
- case 2:
- *(u16 __force *)to = *(u16 *)from;
- return 0;
- case 4:
- *(u32 __force *)to = *(u32 *)from;
- return 0;
- default:
- break;
- }
- }
- memcpy((void __force *)to, from, n);
- return 0;
- }
- #define INLINE_COPY_FROM_USER
- #define INLINE_COPY_TO_USER
- #include <asm-generic/uaccess.h>
- #endif
|