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) #include <linux/linkage.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) #include <asm/export.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) 	.register	%g2,#scratch
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) 	.text
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) 	.align	32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) ENTRY(ffs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) 	brnz,pt	%o0, 1f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 	 mov	1, %o1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 	retl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 	 clr	%o0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 	nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 	nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) ENTRY(__ffs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 	sllx	%o0, 32, %g1		/* 1  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 	srlx	%o0, 32, %g2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 	clr	%o1			/* 2  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 	movrz	%g1, %g2, %o0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 	movrz	%g1, 32, %o1		/* 3  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 1:	clr	%o2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 	sllx	%o0, (64 - 16), %g1	/* 4  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 	srlx	%o0, 16, %g2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 	movrz	%g1, %g2, %o0		/* 5  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 	clr	%o3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	movrz	%g1, 16, %o2		/* 6  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 	clr	%o4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 	and	%o0, 0xff, %g1		/* 7  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 	srlx	%o0, 8, %g2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 	movrz	%g1, %g2, %o0		/* 8  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	clr	%o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 	movrz	%g1, 8, %o3		/* 9  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 	add	%o2, %o1, %o2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 	and	%o0, 0xf, %g1		/* 10 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 	srlx	%o0, 4, %g2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 	movrz	%g1, %g2, %o0		/* 11 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 	add	%o2, %o3, %o2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 	movrz	%g1, 4, %o4		/* 12 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 	and	%o0, 0x3, %g1		/* 13 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 	srlx	%o0, 2, %g2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 	movrz	%g1, %g2, %o0		/* 14 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 	add	%o2, %o4, %o2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 	movrz	%g1, 2, %o5		/* 15 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) 	and	%o0, 0x1, %g1		/* 16 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 	add	%o2, %o5, %o2		/* 17 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 	xor	%g1, 0x1, %g1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) 	retl				/* 18 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) 	 add	%o2, %g1, %o0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) ENDPROC(ffs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) ENDPROC(__ffs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) EXPORT_SYMBOL(__ffs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) EXPORT_SYMBOL(ffs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) 	.section	.popc_6insn_patch, "ax"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) 	.word		ffs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) 	brz,pn	%o0, 98f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) 	 neg	%o0, %g1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) 	xnor	%o0, %g1, %o1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) 	popc	%o1, %o0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) 98:	retl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) 	 nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) 	.word		__ffs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) 	neg	%o0, %g1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) 	xnor	%o0, %g1, %o1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) 	popc	%o1, %o0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) 	retl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) 	 sub	%o0, 1, %o0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) 	nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) 	.previous