Orange Pi5 kernel

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

3 Commits   0 Branches   0 Tags   |
/* SPDX-License-Identifier: GPL-2.0 */
// Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
#include <linux/linkage.h>
#include "sysdep.h"
ENTRY(strcpy)
<------>mov a3, a0
<------>/* Check if the src addr is aligned. */
andi t0, a1, 3
bnez t0, 11f
1:
<------>/* Check if all the bytes in the word are not zero. */
<------>ldw a2, (a1)
<------>tstnbz a2
<------>bf 9f
<------>stw a2, (a3)
<------>ldw a2, (a1, 4)
<------>tstnbz a2
<------>bf 2f
<------>stw a2, (a3, 4)
<------>ldw a2, (a1, 8)
<------>tstnbz a2
<------>bf 3f
<------>stw a2, (a3, 8)
<------>ldw a2, (a1, 12)
<------>tstnbz a2
<------>bf 4f
<------>stw a2, (a3, 12)
<------>ldw a2, (a1, 16)
<------>tstnbz a2
<------>bf 5f
<------>stw a2, (a3, 16)
<------>ldw a2, (a1, 20)
<------>tstnbz a2
<------>bf 6f
<------>stw a2, (a3, 20)
<------>ldw a2, (a1, 24)
<------>tstnbz a2
<------>bf 7f
<------>stw a2, (a3, 24)
<------>ldw a2, (a1, 28)
<------>tstnbz a2
<------>bf 8f
<------>stw a2, (a3, 28)
<------>addi a3, 32
<------>addi a1, 32
<------>br 1b
2:
<------>addi a3, 4
<------>br 9f
3:
<------>addi a3, 8
<------>br 9f
4:
<------>addi a3, 12
<------>br 9f
5:
<------>addi a3, 16
<------>br 9f
6:
<------>addi a3, 20
<------>br 9f
7:
<------>addi a3, 24
<------>br 9f
8:
<------>addi a3, 28
9:
# ifdef __CSKYBE__
<------>xtrb0 t0, a2
<------>st.b t0, (a3)
<------>bez t0, 10f
<------>xtrb1 t0, a2
<------>st.b t0, (a3, 1)
<------>bez t0, 10f
<------>xtrb2 t0, a2
<------>st.b t0, (a3, 2)
<------>bez t0, 10f
<------>stw a2, (a3)
# else
<------>xtrb3 t0, a2
<------>st.b t0, (a3)
<------>bez t0, 10f
<------>xtrb2 t0, a2
<------>st.b t0, (a3, 1)
<------>bez t0, 10f
<------>xtrb1 t0, a2
<------>st.b t0, (a3, 2)
<------>bez t0, 10f
<------>stw a2, (a3)
# endif /* !__CSKYBE__ */
10:
<------>jmp lr
11:
<------>subi t0, 4
12:
ld.b a2, (a1)
st.b a2, (a3)
bez a2, 10b
<------>addi t0, 1
addi a1, a1, 1
addi a3, a3, 1
<------>bnez t0, 12b
<------>jbr 1b
ENDPROC(strcpy)