diff options
-rw-r--r-- | libc/string/avr32/Makefile | 4 | ||||
-rw-r--r-- | libc/string/avr32/bcopy.S | 20 | ||||
-rw-r--r-- | libc/string/avr32/bzero.S | 16 | ||||
-rw-r--r-- | libc/string/avr32/memcmp.S | 68 | ||||
-rw-r--r-- | libc/string/avr32/memcpy.S | 156 | ||||
-rw-r--r-- | libc/string/avr32/memmove.S | 172 | ||||
-rw-r--r-- | libc/string/avr32/memset.S | 76 | ||||
-rw-r--r-- | libc/string/avr32/strcmp.S | 124 | ||||
-rw-r--r-- | libc/string/avr32/strlen.S | 90 |
9 files changed, 363 insertions, 363 deletions
diff --git a/libc/string/avr32/Makefile b/libc/string/avr32/Makefile index 0002ffdce..e19e9d9ec 100644 --- a/libc/string/avr32/Makefile +++ b/libc/string/avr32/Makefile @@ -16,8 +16,8 @@ # along with this program; if not, write to the Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -top_srcdir := ../../../ -top_builddir := ../../../ +top_srcdir := ../../../ +top_builddir := ../../../ all: objs diff --git a/libc/string/avr32/bcopy.S b/libc/string/avr32/bcopy.S index e1d173165..bdd521814 100644 --- a/libc/string/avr32/bcopy.S +++ b/libc/string/avr32/bcopy.S @@ -10,17 +10,17 @@ #ifdef __UCLIBC_SUSV3_LEGACY__ - .text - .global bcopy - .type bcopy, @function - .align 1 + .text + .global bcopy + .type bcopy, @function + .align 1 bcopy: - /* Swap the first two arguments */ - eor r11, r12 - eor r12, r11 - eor r11, r12 - rjmp HIDDEN_JUMPTARGET(memmove) + /* Swap the first two arguments */ + eor r11, r12 + eor r12, r11 + eor r11, r12 + rjmp HIDDEN_JUMPTARGET(memmove) - .size bcopy, . - bcopy + .size bcopy, . - bcopy #endif /* __UCLIBC_SUSV3_LEGACY__ */ diff --git a/libc/string/avr32/bzero.S b/libc/string/avr32/bzero.S index 928148dcb..ca1bd2dd2 100644 --- a/libc/string/avr32/bzero.S +++ b/libc/string/avr32/bzero.S @@ -10,15 +10,15 @@ #ifdef __UCLIBC_SUSV3_LEGACY__ - .text - .global bzero - .type bzero, @function - .align 1 + .text + .global bzero + .type bzero, @function + .align 1 bzero: - mov r10, r11 - mov r11, 0 - rjmp HIDDEN_JUMPTARGET(memset) + mov r10, r11 + mov r11, 0 + rjmp HIDDEN_JUMPTARGET(memset) - .size bzero, . - bzero + .size bzero, . - bzero #endif /* __UCLIBC_SUSV3_LEGACY__ */ diff --git a/libc/string/avr32/memcmp.S b/libc/string/avr32/memcmp.S index 5d7eac3d9..ae6cc9189 100644 --- a/libc/string/avr32/memcmp.S +++ b/libc/string/avr32/memcmp.S @@ -12,48 +12,48 @@ #define s2 r11 #define len r10 - .text - .global memcmp - .type memcmp, @function - .align 1 + .text + .global memcmp + .type memcmp, @function + .align 1 memcmp: - sub len, 4 - brlt .Lless_than_4 + sub len, 4 + brlt .Lless_than_4 -1: ld.w r8, s1++ - ld.w r9, s2++ - cp.w r8, r9 - brne .Lfound_word - sub len, 4 - brge 1b +1: ld.w r8, s1++ + ld.w r9, s2++ + cp.w r8, r9 + brne .Lfound_word + sub len, 4 + brge 1b .Lless_than_4: - sub len, -4 - reteq 0 + sub len, -4 + reteq 0 -1: ld.ub r8, s1++ - ld.ub r9, s2++ - sub r8, r9 - retne r8 - sub len, 1 - brgt 1b +1: ld.ub r8, s1++ + ld.ub r9, s2++ + sub r8, r9 + retne r8 + sub len, 1 + brgt 1b - retal 0 + retal 0 .Lfound_word: - mov len, 4 - -2: bfextu r11, r9, 24, 8 - bfextu r12, r8, 24, 8 - sub r12, r11 - retne r12 - lsl r8, 8 - lsl r9, 8 - sub len, 1 - brne 2b - retal r12 - - .size memcmp, . - memcmp + mov len, 4 + +2: bfextu r11, r9, 24, 8 + bfextu r12, r8, 24, 8 + sub r12, r11 + retne r12 + lsl r8, 8 + lsl r9, 8 + sub len, 1 + brne 2b + retal r12 + + .size memcmp, . - memcmp libc_hidden_def(memcmp) #ifdef __UCLIBC_SUSV3_LEGACY__ diff --git a/libc/string/avr32/memcpy.S b/libc/string/avr32/memcpy.S index f95aabd13..bf091abf8 100644 --- a/libc/string/avr32/memcpy.S +++ b/libc/string/avr32/memcpy.S @@ -11,101 +11,101 @@ #define src r11 #define len r10 - .text - .global memcpy - .type memcpy, @function + .text + .global memcpy + .type memcpy, @function memcpy: - pref src[0] - mov dst, r12 + pref src[0] + mov dst, r12 - /* If we have less than 32 bytes, don't do anything fancy */ - cp.w len, 32 - brge .Lmore_than_31 + /* If we have less than 32 bytes, don't do anything fancy */ + cp.w len, 32 + brge .Lmore_than_31 - sub len, 1 - retlt r12 -1: ld.ub r8, src++ - st.b dst++, r8 - sub len, 1 - brge 1b - retal r12 + sub len, 1 + retlt r12 +1: ld.ub r8, src++ + st.b dst++, r8 + sub len, 1 + brge 1b + retal r12 .Lmore_than_31: - pushm r0-r7, lr + pushm r0-r7, lr - /* Check alignment */ - mov r8, src - andl r8, 31, COH - brne .Lunaligned_src - mov r8, dst - andl r8, 3, COH - brne .Lunaligned_dst + /* Check alignment */ + mov r8, src + andl r8, 31, COH + brne .Lunaligned_src + mov r8, dst + andl r8, 3, COH + brne .Lunaligned_dst .Laligned_copy: - sub len, 32 - brlt .Lless_than_32 + sub len, 32 + brlt .Lless_than_32 -1: /* Copy 32 bytes at a time */ - ldm src, r0-r7 - sub src, -32 - stm dst, r0-r7 - sub dst, -32 - sub len, 32 - brge 1b +1: /* Copy 32 bytes at a time */ + ldm src, r0-r7 + sub src, -32 + stm dst, r0-r7 + sub dst, -32 + sub len, 32 + brge 1b .Lless_than_32: - /* Copy 16 more bytes if possible */ - sub len, -16 - brlt .Lless_than_16 - ldm src, r0-r3 - sub src, -16 - sub len, 16 - stm dst, r0-r3 - sub dst, -16 + /* Copy 16 more bytes if possible */ + sub len, -16 + brlt .Lless_than_16 + ldm src, r0-r3 + sub src, -16 + sub len, 16 + stm dst, r0-r3 + sub dst, -16 .Lless_than_16: - /* Do the remaining as byte copies */ - neg len - add pc, pc, len << 2 - .rept 15 - ld.ub r0, src++ - st.b dst++, r0 - .endr + /* Do the remaining as byte copies */ + neg len + add pc, pc, len << 2 + .rept 15 + ld.ub r0, src++ + st.b dst++, r0 + .endr - popm r0-r7, pc + popm r0-r7, pc .Lunaligned_src: - /* Make src cacheline-aligned. r8 = (src & 31) */ - rsub r8, r8, 32 - sub len, r8 -1: ld.ub r0, src++ - st.b dst++, r0 - sub r8, 1 - brne 1b - - /* If dst is word-aligned, we're ready to go */ - pref src[0] - mov r8, 3 - tst dst, r8 - breq .Laligned_copy + /* Make src cacheline-aligned. r8 = (src & 31) */ + rsub r8, r8, 32 + sub len, r8 +1: ld.ub r0, src++ + st.b dst++, r0 + sub r8, 1 + brne 1b + + /* If dst is word-aligned, we're ready to go */ + pref src[0] + mov r8, 3 + tst dst, r8 + breq .Laligned_copy .Lunaligned_dst: - /* src is aligned, but dst is not. Expect bad performance */ - sub len, 4 - brlt 2f -1: ld.w r0, src++ - st.w dst++, r0 - sub len, 4 - brge 1b - -2: neg len - add pc, pc, len << 2 - .rept 3 - ld.ub r0, src++ - st.b dst++, r0 - .endr - - popm r0-r7, pc - .size memcpy, . - memcpy + /* src is aligned, but dst is not. Expect bad performance */ + sub len, 4 + brlt 2f +1: ld.w r0, src++ + st.w dst++, r0 + sub len, 4 + brge 1b + +2: neg len + add pc, pc, len << 2 + .rept 3 + ld.ub r0, src++ + st.b dst++, r0 + .endr + + popm r0-r7, pc + .size memcpy, . - memcpy libc_hidden_def(memcpy) diff --git a/libc/string/avr32/memmove.S b/libc/string/avr32/memmove.S index 8ca4da54d..a825187a9 100644 --- a/libc/string/avr32/memmove.S +++ b/libc/string/avr32/memmove.S @@ -10,107 +10,107 @@ #define src r11 #define len r10 - .text - .global memmove - .type memmove, @function + .text + .global memmove + .type memmove, @function memmove: - cp.w src, dst - brge HIDDEN_JUMPTARGET(memcpy) - - add dst, len - add src, len - pref src[-1] - - /* - * The rest is basically the same as in memcpy.S except that - * the direction is reversed. - */ - cp.w len, 32 - brge .Lmore_than_31 - - sub len, 1 - retlt r12 -1: ld.ub r8, --src - st.b --dst, r8 - sub len, 1 - brge 1b - retal r12 + cp.w src, dst + brge HIDDEN_JUMPTARGET(memcpy) + + add dst, len + add src, len + pref src[-1] + + /* + * The rest is basically the same as in memcpy.S except that + * the direction is reversed. + */ + cp.w len, 32 + brge .Lmore_than_31 + + sub len, 1 + retlt r12 +1: ld.ub r8, --src + st.b --dst, r8 + sub len, 1 + brge 1b + retal r12 .Lmore_than_31: - pushm r0-r7, lr + pushm r0-r7, lr - /* Check alignment */ - mov r8, src - andl r8, 31, COH - brne .Lunaligned_src - mov r8, r12 - andl r8, 3, COH - brne .Lunaligned_dst +/* Check alignment */ + mov r8, src + andl r8, 31, COH + brne .Lunaligned_src + mov r8, r12 + andl r8, 3, COH + brne .Lunaligned_dst .Laligned_copy: - sub len, 32 - brlt .Lless_than_32 + sub len, 32 + brlt .Lless_than_32 -1: /* Copy 32 bytes at a time */ - sub src, 32 - ldm src, r0-r7 - sub dst, 32 - sub len, 32 - stm dst, r0-r7 - brge 1b +1: /* Copy 32 bytes at a time */ + sub src, 32 + ldm src, r0-r7 + sub dst, 32 + sub len, 32 + stm dst, r0-r7 + brge 1b .Lless_than_32: - /* Copy 16 more bytes if possible */ - sub len, -16 - brlt .Lless_than_16 - sub src, 16 - ldm src, r0-r3 - sub dst, 16 - sub len, 16 - stm dst, r0-r3 + /* Copy 16 more bytes if possible */ + sub len, -16 + brlt .Lless_than_16 + sub src, 16 + ldm src, r0-r3 + sub dst, 16 + sub len, 16 + stm dst, r0-r3 .Lless_than_16: - /* Do the remaining as byte copies */ - sub len, -16 - breq 2f -1: ld.ub r0, --src - st.b --dst, r0 - sub len, 1 - brne 1b + /* Do the remaining as byte copies */ + sub len, -16 + breq 2f +1: ld.ub r0, --src + st.b --dst, r0 + sub len, 1 + brne 1b -2: popm r0-r7, pc +2: popm r0-r7, pc .Lunaligned_src: - /* Make src cacheline-aligned. r8 = (src & 31) */ - sub len, r8 -1: ld.ub r0, --src - st.b --dst, r0 - sub r8, 1 - brne 1b - - /* If dst is word-aligned, we're ready to go */ - pref src[-4] - mov r8, 3 - tst dst, r8 - breq .Laligned_copy + /* Make src cacheline-aligned. r8 = (src & 31) */ + sub len, r8 +1: ld.ub r0, --src + st.b --dst, r0 + sub r8, 1 + brne 1b + + /* If dst is word-aligned, we're ready to go */ + pref src[-4] + mov r8, 3 + tst dst, r8 + breq .Laligned_copy .Lunaligned_dst: - /* src is aligned, but dst is not. Expect bad performance */ - sub len, 4 - brlt 2f -1: ld.w r0, --src - st.w --dst, r0 - sub len, 4 - brge 1b - -2: neg len - add pc, pc, len << 2 - .rept 3 - ld.ub r0, --src - st.b --dst, r0 - .endr - - popm r0-r7, pc - .size memmove, . - memmove + /* src is aligned, but dst is not. Expect bad performance */ + sub len, 4 + brlt 2f +1: ld.w r0, --src + st.w --dst, r0 + sub len, 4 + brge 1b + +2: neg len + add pc, pc, len << 2 + .rept 3 + ld.ub r0, --src + st.b --dst, r0 + .endr + + popm r0-r7, pc + .size memmove, . - memmove libc_hidden_def(memmove) diff --git a/libc/string/avr32/memset.S b/libc/string/avr32/memset.S index 964bf4834..472b2be35 100644 --- a/libc/string/avr32/memset.S +++ b/libc/string/avr32/memset.S @@ -12,54 +12,54 @@ #define c r11 #define n r10 - .text - .global memset - .type memset, @function + .text + .global memset + .type memset, @function - .align 1 + .align 1 memset: - cp.w n, 32 - mov r9, s - brge .Llarge_memset + cp.w n, 32 + mov r9, s + brge .Llarge_memset - sub n, 1 - retlt s -1: st.b s++, c - sub n, 1 - brge 1b + sub n, 1 + retlt s +1: st.b s++, c + sub n, 1 + brge 1b - retal r9 + retal r9 .Llarge_memset: - mov r8, r11 - mov r11, 3 - bfins r8, r8, 8, 8 - bfins r8, r8, 16, 16 - tst s, r11 - breq 2f + mov r8, r11 + mov r11, 3 + bfins r8, r8, 8, 8 + bfins r8, r8, 16, 16 + tst s, r11 + breq 2f -1: st.b s++, r8 - sub n, 1 - tst s, r11 - brne 1b +1: st.b s++, r8 + sub n, 1 + tst s, r11 + brne 1b -2: mov r11, r9 - mov r9, r8 - sub n, 8 +2: mov r11, r9 + mov r9, r8 + sub n, 8 -3: st.d s++, r8 - sub n, 8 - brge 3b +3: st.d s++, r8 + sub n, 8 + brge 3b - /* If we are done, n == -8 and we'll skip all st.b insns below */ - neg n - lsl n, 1 - add pc, n - .rept 7 - st.b s++, r8 - .endr - retal r11 + /* If we are done, n == -8 and we'll skip all st.b insns below */ + neg n + lsl n, 1 + add pc, n + .rept 7 + st.b s++, r8 + .endr + retal r11 - .size memset, . - memset + .size memset, . - memset libc_hidden_def(memset) diff --git a/libc/string/avr32/strcmp.S b/libc/string/avr32/strcmp.S index e9f087577..f73bd43e7 100644 --- a/libc/string/avr32/strcmp.S +++ b/libc/string/avr32/strcmp.S @@ -12,77 +12,77 @@ #define s2 r11 #define len r10 - .text - .global strcmp - .type strcmp, @function - .align 1 + .text + .global strcmp + .type strcmp, @function + .align 1 strcmp: - mov r8, 3 - tst s1, r8 - brne .Lunaligned_s1 - tst s2, r8 - brne .Lunaligned_s2 + mov r8, 3 + tst s1, r8 + brne .Lunaligned_s1 + tst s2, r8 + brne .Lunaligned_s2 -1: ld.w r8, s1++ - ld.w r9, s2++ - cp.w r8, r9 - brne 2f - tnbz r8 - brne 1b - retal 0 +1: ld.w r8, s1++ + ld.w r9, s2++ + cp.w r8, r9 + brne 2f + tnbz r8 + brne 1b + retal 0 -2: bfextu r12, r8, 24, 8 - bfextu r11, r9, 24, 8 - sub r12, r11 - retne r12 - cp.w r11, 0 - reteq 0 - bfextu r12, r8, 16, 8 - bfextu r11, r9, 16, 8 - sub r12, r11 - retne r12 - cp.w r11, 0 - reteq 0 - bfextu r12, r8, 8, 8 - bfextu r11, r9, 8, 8 - sub r12, r11 - retne r12 - cp.w r11, 0 - reteq 0 - bfextu r12, r8, 0, 8 - bfextu r11, r9, 0, 8 - sub r12, r11 - retal r12 +2: bfextu r12, r8, 24, 8 + bfextu r11, r9, 24, 8 + sub r12, r11 + retne r12 + cp.w r11, 0 + reteq 0 + bfextu r12, r8, 16, 8 + bfextu r11, r9, 16, 8 + sub r12, r11 + retne r12 + cp.w r11, 0 + reteq 0 + bfextu r12, r8, 8, 8 + bfextu r11, r9, 8, 8 + sub r12, r11 + retne r12 + cp.w r11, 0 + reteq 0 + bfextu r12, r8, 0, 8 + bfextu r11, r9, 0, 8 + sub r12, r11 + retal r12 .Lunaligned_s1: -3: tst s1, r8 - breq 4f - ld.ub r10, s1++ - ld.ub r9, s2++ - sub r10, r9 - retne r10 - cp.w r9, 0 - brne 3b - retal r10 +3: tst s1, r8 + breq 4f + ld.ub r10, s1++ + ld.ub r9, s2++ + sub r10, r9 + retne r10 + cp.w r9, 0 + brne 3b + retal r10 -4: tst s2, r8 - breq 1b +4: tst s2, r8 + breq 1b .Lunaligned_s2: - /* - * s1 and s2 can't both be aligned, and unaligned word loads - * can trigger spurious exceptions if we cross a page boundary. - * Do it the slow way... - */ -1: ld.ub r8, s1++ - ld.ub r9, s2++ - sub r8, r9 - retne r8 - cp.w r9, 0 - brne 1b - retal 0 + /* + * s1 and s2 can't both be aligned, and unaligned word loads + * can trigger spurious exceptions if we cross a page boundary. + * Do it the slow way... + */ +1: ld.ub r8, s1++ + ld.ub r9, s2++ + sub r8, r9 + retne r8 + cp.w r9, 0 + brne 1b + retal 0 - .size strcmp, . - strcmp + .size strcmp, . - strcmp libc_hidden_def(strcmp) #ifndef __UCLIBC_HAS_LOCALE__ diff --git a/libc/string/avr32/strlen.S b/libc/string/avr32/strlen.S index d2808998d..5223e5365 100644 --- a/libc/string/avr32/strlen.S +++ b/libc/string/avr32/strlen.S @@ -10,53 +10,53 @@ #define str r12 - .text - .global strlen - .type strlen, @function + .text + .global strlen + .type strlen, @function strlen: - mov r11, r12 - - mov r9, str - andl r9, 3, COH - brne .Lunaligned_str - -1: ld.w r8, str++ - tnbz r8 - brne 1b - - sub r12, r11 - bfextu r9, r8, 24, 8 - cp.w r9, 0 - subeq r12, 4 - reteq r12 - bfextu r9, r8, 16, 8 - cp.w r9, 0 - subeq r12, 3 - reteq r12 - bfextu r9, r8, 8, 8 - cp.w r9, 0 - subeq r12, 2 - reteq r12 - sub r12, 1 - retal r12 + mov r11, r12 + + mov r9, str + andl r9, 3, COH + brne .Lunaligned_str + +1: ld.w r8, str++ + tnbz r8 + brne 1b + + sub r12, r11 + bfextu r9, r8, 24, 8 + cp.w r9, 0 + subeq r12, 4 + reteq r12 + bfextu r9, r8, 16, 8 + cp.w r9, 0 + subeq r12, 3 + reteq r12 + bfextu r9, r8, 8, 8 + cp.w r9, 0 + subeq r12, 2 + reteq r12 + sub r12, 1 + retal r12 .Lunaligned_str: - add pc, pc, r9 << 3 - sub r0, r0, 0 /* 4-byte nop */ - ld.ub r8, str++ - sub r8, r8, 0 - breq 1f - ld.ub r8, str++ - sub r8, r8, 0 - breq 1f - ld.ub r8, str++ - sub r8, r8, 0 - brne 1b - -1: sub r12, 1 - sub r12, r11 - retal r12 - - .size strlen, . - strlen + add pc, pc, r9 << 3 + sub r0, r0, 0 /* 4-byte nop */ + ld.ub r8, str++ + sub r8, r8, 0 + breq 1f + ld.ub r8, str++ + sub r8, r8, 0 + breq 1f + ld.ub r8, str++ + sub r8, r8, 0 + brne 1b + +1: sub r12, 1 + sub r12, r11 + retal r12 + + .size strlen, . - strlen libc_hidden_def(strlen) |