1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| ;;; SPDX-License-Identifier: GPL-2.0
| ;;; strncpy.S
|
| #include <asm/linkage.h>
|
| .text
| .global strncpy_from_user
|
| ;;; long strncpy_from_user(void *to, void *from, size_t n)
| strncpy_from_user:
| mov.l er2,er2
| bne 1f
| sub.l er0,er0
| rts
| 1:
| mov.l er4,@-sp
| sub.l er3,er3
| 2:
| mov.b @er1+,r4l
| mov.b r4l,@er0
| adds #1,er0
| beq 3f
| inc.l #1,er3
| dec.l #1,er2
| bne 2b
| 3:
| dec.l #1,er2
| 4:
| mov.b r4l,@er0
| adds #1,er0
| dec.l #1,er2
| bne 4b
| mov.l er3,er0
| mov.l @sp+,er4
| rts
|
|