Aurelien Jacquiot | 09831ca | 2011-10-04 11:15:51 -0400 | [diff] [blame] | 1 | ; Port on Texas Instruments TMS320C6x architecture |
| 2 | ; |
| 3 | ; Copyright (C) 2006, 2009, 2010 Texas Instruments Incorporated |
| 4 | ; Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com) |
| 5 | ; |
| 6 | ; This program is free software; you can redistribute it and/or modify |
| 7 | ; it under the terms of the GNU General Public License version 2 as |
| 8 | ; published by the Free Software Foundation. |
| 9 | ; |
| 10 | |
| 11 | #include <linux/linkage.h> |
| 12 | |
| 13 | .text |
| 14 | |
| 15 | ENTRY(memcpy) |
| 16 | AND .L1 0x1,A6,A0 |
| 17 | || AND .S1 0x2,A6,A1 |
| 18 | || AND .L2X 0x4,A6,B0 |
| 19 | || MV .D1 A4,A3 |
| 20 | || MVC .S2 ILC,B2 |
| 21 | |
| 22 | [A0] LDB .D2T1 *B4++,A5 |
| 23 | [A1] LDB .D2T1 *B4++,A7 |
| 24 | [A1] LDB .D2T1 *B4++,A8 |
| 25 | [B0] LDNW .D2T1 *B4++,A9 |
| 26 | || SHRU .S2X A6,0x3,B1 |
| 27 | [!B1] BNOP .S2 B3,1 |
| 28 | |
| 29 | [A0] STB .D1T1 A5,*A3++ |
| 30 | ||[B1] MVC .S2 B1,ILC |
| 31 | [A1] STB .D1T1 A7,*A3++ |
| 32 | [A1] STB .D1T1 A8,*A3++ |
| 33 | [B0] STNW .D1T1 A9,*A3++ ; return when len < 8 |
| 34 | |
| 35 | SPLOOP 2 |
| 36 | |
| 37 | LDNDW .D2T1 *B4++,A9:A8 |
| 38 | NOP 3 |
| 39 | |
| 40 | NOP |
| 41 | SPKERNEL 0,0 |
| 42 | || STNDW .D1T1 A9:A8,*A3++ |
| 43 | |
| 44 | BNOP .S2 B3,4 |
| 45 | MVC .S2 B2,ILC |
| 46 | ENDPROC(memcpy) |