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