mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
Merge branches 'uaccess.alpha', 'uaccess.arc', 'uaccess.arm', 'uaccess.arm64', 'uaccess.avr32', 'uaccess.bfin', 'uaccess.c6x', 'uaccess.cris', 'uaccess.frv', 'uaccess.h8300', 'uaccess.hexagon', 'uaccess.ia64', 'uaccess.m32r', 'uaccess.m68k', 'uaccess.metag', 'uaccess.microblaze', 'uaccess.mips', 'uaccess.mn10300', 'uaccess.nios2', 'uaccess.openrisc', 'uaccess.parisc', 'uaccess.powerpc', 'uaccess.s390', 'uaccess.score', 'uaccess.sh', 'uaccess.sparc', 'uaccess.tile', 'uaccess.um', 'uaccess.unicore32', 'uaccess.x86' and 'uaccess.xtensa' into work.uaccess
This commit is contained in:
parent
bf7af0cea8
ec022681a4
e13909a4ac
4de5b63e76
92430dab36
e5c1540030
50e9ab915a
86944ee158
0c7e9a870e
48f666c986
33ab2da801
ac4691fac8
b3622d3217
9a677341cd
29be02eb6f
840db3f938
d491afb865
2260ea86c0
19dbf70c5a
de51d6cc2c
ab89866be3
f64fd180ec
3448890c32
37096003c8
dc14253523
f98f48ee7c
31af2f36d5
23504bae7f
a668ce3a00
2ef59f2856
beba3a20bf
7d4914db8f
commit
eea86b637a
1311 changed files with 18197 additions and 12582 deletions
|
|
@ -26,6 +26,7 @@ config HEXAGON
|
|||
select GENERIC_CLOCKEVENTS_BROADCAST
|
||||
select MODULES_USE_ELF_RELA
|
||||
select GENERIC_CPU_DEVICES
|
||||
select ARCH_HAS_RAW_COPY_USER
|
||||
---help---
|
||||
Qualcomm Hexagon is a processor architecture designed for high
|
||||
performance and low power across a wide variety of applications.
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ generic-y += device.h
|
|||
generic-y += div64.h
|
||||
generic-y += emergency-restart.h
|
||||
generic-y += errno.h
|
||||
generic-y += extable.h
|
||||
generic-y += fb.h
|
||||
generic-y += fcntl.h
|
||||
generic-y += ftrace.h
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
*/
|
||||
#include <linux/swap.h>
|
||||
#include <asm/page.h>
|
||||
#define __ARCH_USE_5LEVEL_HACK
|
||||
#include <asm-generic/pgtable-nopmd.h>
|
||||
|
||||
/* A handy thing to have if one has the RAM. Declared in head.S */
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@
|
|||
/*
|
||||
* User space memory access functions
|
||||
*/
|
||||
#include <linux/sched.h>
|
||||
#include <linux/mm.h>
|
||||
#include <asm/segment.h>
|
||||
#include <asm/sections.h>
|
||||
|
|
@ -50,8 +49,6 @@
|
|||
* reasonably simple and not *too* slow. After all, we've got the
|
||||
* MMU for backup.
|
||||
*/
|
||||
#define VERIFY_READ 0
|
||||
#define VERIFY_WRITE 1
|
||||
|
||||
#define __access_ok(addr, size) \
|
||||
((get_fs().seg == KERNEL_DS.seg) || \
|
||||
|
|
@ -68,19 +65,12 @@
|
|||
*/
|
||||
|
||||
/* Assembly somewhat optimized copy routines */
|
||||
unsigned long __copy_from_user_hexagon(void *to, const void __user *from,
|
||||
unsigned long raw_copy_from_user(void *to, const void __user *from,
|
||||
unsigned long n);
|
||||
unsigned long __copy_to_user_hexagon(void __user *to, const void *from,
|
||||
unsigned long raw_copy_to_user(void __user *to, const void *from,
|
||||
unsigned long n);
|
||||
|
||||
#define __copy_from_user(to, from, n) __copy_from_user_hexagon(to, from, n)
|
||||
#define __copy_to_user(to, from, n) __copy_to_user_hexagon(to, from, n)
|
||||
|
||||
/*
|
||||
* XXX todo: some additonal performance gain is possible by
|
||||
* implementing __copy_to/from_user_inatomic, which is much
|
||||
* like __copy_to/from_user, but performs slightly less checking.
|
||||
*/
|
||||
#define INLINE_COPY_FROM_USER
|
||||
#define INLINE_COPY_TO_USER
|
||||
|
||||
__kernel_size_t __clear_user_hexagon(void __user *dest, unsigned long count);
|
||||
#define __clear_user(a, s) __clear_user_hexagon((a), (s))
|
||||
|
|
@ -107,10 +97,14 @@ static inline long hexagon_strncpy_from_user(char *dst, const char __user *src,
|
|||
return -EFAULT;
|
||||
|
||||
if (res > n) {
|
||||
copy_from_user(dst, src, n);
|
||||
long left = raw_copy_from_user(dst, src, n);
|
||||
if (unlikely(left))
|
||||
memset(dst + (n - left), 0, left);
|
||||
return n;
|
||||
} else {
|
||||
copy_from_user(dst, src, res);
|
||||
long left = raw_copy_from_user(dst, src, res);
|
||||
if (unlikely(left))
|
||||
memset(dst + (res - left), 0, left);
|
||||
return res-1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@
|
|||
|
||||
/* Additional functions */
|
||||
EXPORT_SYMBOL(__clear_user_hexagon);
|
||||
EXPORT_SYMBOL(__copy_from_user_hexagon);
|
||||
EXPORT_SYMBOL(__copy_to_user_hexagon);
|
||||
EXPORT_SYMBOL(raw_copy_from_user);
|
||||
EXPORT_SYMBOL(raw_copy_to_user);
|
||||
EXPORT_SYMBOL(__iounmap);
|
||||
EXPORT_SYMBOL(__strnlen_user);
|
||||
EXPORT_SYMBOL(__vmgetie);
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@
|
|||
#define bytes r2
|
||||
#define loopcount r5
|
||||
|
||||
#define FUNCNAME __copy_from_user_hexagon
|
||||
#define FUNCNAME raw_copy_from_user
|
||||
#include "copy_user_template.S"
|
||||
|
||||
/* LOAD FAULTS from COPY_FROM_USER */
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
#define bytes r2
|
||||
#define loopcount r5
|
||||
|
||||
#define FUNCNAME __copy_to_user_hexagon
|
||||
#define FUNCNAME raw_copy_to_user
|
||||
#include "copy_user_template.S"
|
||||
|
||||
/* STORE FAULTS from COPY_TO_USER */
|
||||
|
|
|
|||
Loading…
Reference in a new issue