Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2)  * This file is subject to the terms and conditions of the GNU General Public
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * License.  See the file COPYING in the main directory of this archive
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  * for more details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) #include <linux/module.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) #include <linux/uaccess.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) unsigned long __generic_copy_from_user(void *to, const void __user *from,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 				       unsigned long n)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) 	unsigned long tmp, res;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 	asm volatile ("\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 		"	tst.l	%0\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 		"	jeq	2f\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 		"1:	"MOVES".l	(%1)+,%3\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 		"	move.l	%3,(%2)+\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 		"	subq.l	#1,%0\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 		"	jne	1b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 		"2:	btst	#1,%5\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 		"	jeq	4f\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 		"3:	"MOVES".w	(%1)+,%3\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 		"	move.w	%3,(%2)+\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 		"4:	btst	#0,%5\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 		"	jeq	6f\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 		"5:	"MOVES".b	(%1)+,%3\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 		"	move.b  %3,(%2)+\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 		"6:\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 		"	.section .fixup,\"ax\"\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 		"	.even\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 		"10:	lsl.l	#2,%0\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 		"	btst	#1,%5\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 		"	jeq	8f\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 		"30:	addq.l	#2,%0\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 		"8:	btst	#0,%5\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 		"	jeq	6b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 		"50:	addq.l	#1,%0\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 		"	jra	6b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 		"	.previous\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 		"\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 		"	.section __ex_table,\"a\"\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 		"	.align	4\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 		"	.long	1b,10b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 		"	.long	3b,30b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 		"	.long	5b,50b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 		"	.previous"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 		: "=d" (res), "+a" (from), "+a" (to), "=&d" (tmp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 		: "0" (n / 4), "d" (n & 3));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	return res;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) EXPORT_SYMBOL(__generic_copy_from_user);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) unsigned long __generic_copy_to_user(void __user *to, const void *from,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 				     unsigned long n)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	unsigned long tmp, res;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	asm volatile ("\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 		"	tst.l	%0\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 		"	jeq	4f\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 		"1:	move.l	(%1)+,%3\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 		"2:	"MOVES".l	%3,(%2)+\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 		"3:	subq.l	#1,%0\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 		"	jne	1b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 		"4:	btst	#1,%5\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 		"	jeq	6f\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 		"	move.w	(%1)+,%3\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 		"5:	"MOVES".w	%3,(%2)+\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 		"6:	btst	#0,%5\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 		"	jeq	8f\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 		"	move.b	(%1)+,%3\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 		"7:	"MOVES".b  %3,(%2)+\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 		"8:\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 		"	.section .fixup,\"ax\"\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 		"	.even\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 		"20:	lsl.l	#2,%0\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 		"50:	add.l	%5,%0\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 		"	jra	8b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 		"	.previous\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 		"\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 		"	.section __ex_table,\"a\"\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 		"	.align	4\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 		"	.long	2b,20b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 		"	.long	3b,20b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 		"	.long	5b,50b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 		"	.long	6b,50b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 		"	.long	7b,50b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 		"	.long	8b,50b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 		"	.previous"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 		: "=d" (res), "+a" (from), "+a" (to), "=&d" (tmp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 		: "0" (n / 4), "d" (n & 3));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	return res;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) EXPORT_SYMBOL(__generic_copy_to_user);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)  * Zero Userspace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) unsigned long __clear_user(void __user *to, unsigned long n)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	unsigned long res;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	asm volatile ("\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 		"	tst.l	%0\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 		"	jeq	3f\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 		"1:	"MOVES".l	%2,(%1)+\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 		"2:	subq.l	#1,%0\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 		"	jne	1b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 		"3:	btst	#1,%4\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 		"	jeq	5f\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 		"4:	"MOVES".w	%2,(%1)+\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 		"5:	btst	#0,%4\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 		"	jeq	7f\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 		"6:	"MOVES".b	%2,(%1)\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 		"7:\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 		"	.section .fixup,\"ax\"\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 		"	.even\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 		"10:	lsl.l	#2,%0\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 		"40:	add.l	%4,%0\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 		"	jra	7b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 		"	.previous\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 		"\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 		"	.section __ex_table,\"a\"\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 		"	.align	4\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 		"	.long	1b,10b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 		"	.long	2b,10b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 		"	.long	4b,40b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 		"	.long	5b,40b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 		"	.long	6b,40b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 		"	.long	7b,40b\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 		"	.previous"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 		: "=d" (res), "+a" (to)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 		: "d" (0), "0" (n / 4), "d" (n & 3));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140)     return res;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) EXPORT_SYMBOL(__clear_user);