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) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) /* memmove.S: Simple memmove implementation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  * Copyright (C) 1997, 2004 David S. Miller (davem@redhat.com)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5)  * Copyright (C) 1996, 1997, 1998, 1999 Jakub Jelinek (jj@ultra.linux.cz)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) #include <linux/linkage.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) #include <asm/export.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) 	.text
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) ENTRY(memmove) /* o0=dst o1=src o2=len */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 	brz,pn		%o2, 99f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 	 mov		%o0, %g1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 	cmp		%o0, %o1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 	bleu,pt		%xcc, 2f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 	 add		%o1, %o2, %g7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 	cmp		%g7, %o0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 	bleu,pt		%xcc, memcpy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 	 add		%o0, %o2, %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 	sub		%g7, 1, %o1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 	sub		%o5, 1, %o0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 1:	ldub		[%o1], %g7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 	subcc		%o2, 1, %o2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 	sub		%o1, 1, %o1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 	stb		%g7, [%o0]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 	bne,pt		%icc, 1b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 	 sub		%o0, 1, %o0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 99:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 	retl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	 mov		%g1, %o0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 	/* We can't just call memcpy for these memmove cases.  On some
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 	 * chips the memcpy uses cache initializing stores and when dst
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 	 * and src are close enough, those can clobber the source data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 	 * before we've loaded it in.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 2:	or		%o0, %o1, %g7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	or		%o2, %g7, %g7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 	andcc		%g7, 0x7, %g0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 	bne,pn		%xcc, 4f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 	 nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 3:	ldx		[%o1], %g7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 	add		%o1, 8, %o1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 	subcc		%o2, 8, %o2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 	add		%o0, 8, %o0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 	bne,pt		%icc, 3b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 	 stx		%g7, [%o0 - 0x8]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 	ba,a,pt		%xcc, 99b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 4:	ldub		[%o1], %g7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 	add		%o1, 1, %o1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 	subcc		%o2, 1, %o2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 	add		%o0, 1, %o0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 	bne,pt		%icc, 4b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 	 stb		%g7, [%o0 - 0x1]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 	ba,a,pt		%xcc, 99b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) ENDPROC(memmove)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) EXPORT_SYMBOL(memmove)