Cygwin: access: Fix X_OK behaviour for backup operators and admins
[newlib-cygwin.git] / newlib / libc / machine / riscv / memmove.S
blob66d9cd49402f30dc9c8dfd119625af467030d451
1 /* Copyright (c) 2019  SiFive Inc. All rights reserved.
3    This copyrighted material is made available to anyone wishing to use,
4    modify, copy, or redistribute it subject to the terms and conditions
5    of the FreeBSD License.   This program is distributed in the hope that
6    it will be useful, but WITHOUT ANY WARRANTY expressed or implied,
7    including the implied warranties of MERCHANTABILITY or FITNESS FOR
8    A PARTICULAR PURPOSE.  A copy of this license is available at
9    http://www.opensource.org/licenses.
12 #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__)
13 .text
14 .global memmove
15 .type   memmove, @function
16 memmove:
17   beqz a2, 2f
19   mv t1, a0
20   li a3, 1
21   bgtu  a1, a0, 1f
23   li a3, -1
24   addi  a4, a2 , -1
25   add t1, t1, a4
26   add a1, a1, a4
29   lb t2, 0(a1)
30   sb t2, 0(t1)
31   add   a2, a2, -1
32   add   t1, t1, a3
33   add   a1, a1, a3
34   bnez a2, 1b
37   ret
39   .size memmove, .-memmove
40 #endif