diff options
author | Srikant Patnaik | 2015-01-11 12:28:04 +0530 |
---|---|---|
committer | Srikant Patnaik | 2015-01-11 12:28:04 +0530 |
commit | 871480933a1c28f8a9fed4c4d34d06c439a7a422 (patch) | |
tree | 8718f573808810c2a1e8cb8fb6ac469093ca2784 /ANDROID_3.4.5/arch/sh/lib/memcpy.S | |
parent | 9d40ac5867b9aefe0722bc1f110b965ff294d30d (diff) | |
download | FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.gz FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.bz2 FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.zip |
Moved, renamed, and deleted files
The original directory structure was scattered and unorganized.
Changes are basically to make it look like kernel structure.
Diffstat (limited to 'ANDROID_3.4.5/arch/sh/lib/memcpy.S')
-rw-r--r-- | ANDROID_3.4.5/arch/sh/lib/memcpy.S | 227 |
1 files changed, 0 insertions, 227 deletions
diff --git a/ANDROID_3.4.5/arch/sh/lib/memcpy.S b/ANDROID_3.4.5/arch/sh/lib/memcpy.S deleted file mode 100644 index 232fab34..00000000 --- a/ANDROID_3.4.5/arch/sh/lib/memcpy.S +++ /dev/null @@ -1,227 +0,0 @@ -/* $Id: memcpy.S,v 1.3 2001/07/27 11:50:52 gniibe Exp $ - * - * "memcpy" implementation of SuperH - * - * Copyright (C) 1999 Niibe Yutaka - * - */ - -/* - * void *memcpy(void *dst, const void *src, size_t n); - * No overlap between the memory of DST and of SRC are assumed. - */ - -#include <linux/linkage.h> -ENTRY(memcpy) - tst r6,r6 - bt/s 9f ! if n=0, do nothing - mov r4,r0 - sub r4,r5 ! From here, r5 has the distance to r0 - add r6,r0 ! From here, r0 points the end of copying point - mov #12,r1 - cmp/gt r6,r1 - bt/s 7f ! if it's too small, copy a byte at once - add #-1,r5 - add #1,r5 - ! From here, r6 is free - ! - ! r4 --> [ ... ] DST [ ... ] SRC - ! [ ... ] [ ... ] - ! : : - ! r0 --> [ ... ] r0+r5 --> [ ... ] - ! - ! - mov r5,r1 - mov #3,r2 - and r2,r1 - shll2 r1 - mov r0,r3 ! Save the value on R0 to R3 - mova jmptable,r0 - add r1,r0 - mov.l @r0,r1 - jmp @r1 - mov r3,r0 ! and back to R0 - .balign 4 -jmptable: - .long case0 - .long case1 - .long case2 - .long case3 - - ! copy a byte at once -7: mov r4,r2 - add #1,r2 -8: - cmp/hi r2,r0 - mov.b @(r0,r5),r1 - bt/s 8b ! while (r0>r2) - mov.b r1,@-r0 -9: - rts - nop - -case0: - ! - ! GHIJ KLMN OPQR --> GHIJ KLMN OPQR - ! - ! First, align to long word boundary - mov r0,r3 - and r2,r3 - tst r3,r3 - bt/s 2f - add #-4,r5 - add #3,r5 -1: dt r3 - mov.b @(r0,r5),r1 - bf/s 1b - mov.b r1,@-r0 - ! - add #-3,r5 -2: ! Second, copy a long word at once - mov r4,r2 - add #7,r2 -3: mov.l @(r0,r5),r1 - cmp/hi r2,r0 - bt/s 3b - mov.l r1,@-r0 - ! - ! Third, copy a byte at once, if necessary - cmp/eq r4,r0 - bt/s 9b - add #3,r5 - bra 8b - add #-6,r2 - -case1: - ! - ! GHIJ KLMN OPQR --> ...G HIJK LMNO PQR. - ! - ! First, align to long word boundary - mov r0,r3 - and r2,r3 - tst r3,r3 - bt/s 2f - add #-1,r5 -1: dt r3 - mov.b @(r0,r5),r1 - bf/s 1b - mov.b r1,@-r0 - ! -2: ! Second, read a long word and write a long word at once - mov.l @(r0,r5),r1 - add #-4,r5 - mov r4,r2 - add #7,r2 - ! -#ifdef __LITTLE_ENDIAN__ -3: mov r1,r3 ! RQPO - shll16 r3 - shll8 r3 ! Oxxx - mov.l @(r0,r5),r1 ! NMLK - mov r1,r6 - shlr8 r6 ! xNML - or r6,r3 ! ONML - cmp/hi r2,r0 - bt/s 3b - mov.l r3,@-r0 -#else -3: mov r1,r3 ! OPQR - shlr16 r3 - shlr8 r3 ! xxxO - mov.l @(r0,r5),r1 ! KLMN - mov r1,r6 - shll8 r6 ! LMNx - or r6,r3 ! LMNO - cmp/hi r2,r0 - bt/s 3b - mov.l r3,@-r0 -#endif - ! - ! Third, copy a byte at once, if necessary - cmp/eq r4,r0 - bt/s 9b - add #4,r5 - bra 8b - add #-6,r2 - -case2: - ! - ! GHIJ KLMN OPQR --> ..GH IJKL MNOP QR.. - ! - ! First, align to word boundary - tst #1,r0 - bt/s 2f - add #-1,r5 - mov.b @(r0,r5),r1 - mov.b r1,@-r0 - ! -2: ! Second, read a word and write a word at once - add #-1,r5 - mov r4,r2 - add #3,r2 - ! -3: mov.w @(r0,r5),r1 - cmp/hi r2,r0 - bt/s 3b - mov.w r1,@-r0 - ! - ! Third, copy a byte at once, if necessary - cmp/eq r4,r0 - bt/s 9b - add #1,r5 - mov.b @(r0,r5),r1 - rts - mov.b r1,@-r0 - -case3: - ! - ! GHIJ KLMN OPQR --> .GHI JKLM NOPQ R... - ! - ! First, align to long word boundary - mov r0,r3 - and r2,r3 - tst r3,r3 - bt/s 2f - add #-1,r5 -1: dt r3 - mov.b @(r0,r5),r1 - bf/s 1b - mov.b r1,@-r0 - ! -2: ! Second, read a long word and write a long word at once - add #-2,r5 - mov.l @(r0,r5),r1 - add #-4,r5 - mov r4,r2 - add #7,r2 - ! -#ifdef __LITTLE_ENDIAN__ -3: mov r1,r3 ! RQPO - shll8 r3 ! QPOx - mov.l @(r0,r5),r1 ! NMLK - mov r1,r6 - shlr16 r6 - shlr8 r6 ! xxxN - or r6,r3 ! QPON - cmp/hi r2,r0 - bt/s 3b - mov.l r3,@-r0 -#else -3: mov r1,r3 ! OPQR - shlr8 r3 ! xOPQ - mov.l @(r0,r5),r1 ! KLMN - mov r1,r6 - shll16 r6 - shll8 r6 ! Nxxx - or r6,r3 ! NOPQ - cmp/hi r2,r0 - bt/s 3b - mov.l r3,@-r0 -#endif - ! - ! Third, copy a byte at once, if necessary - cmp/eq r4,r0 - bt/s 9b - add #6,r5 - bra 8b - add #-6,r2 |