| |
| |
| |
| #include <linux/linkage.h> |
| #include "sysdep.h" |
| |
| ENTRY(strcpy) |
| <------>mov a3, a0 |
| <------> |
| andi t0, a1, 3 |
| bnez t0, 11f |
| 1: |
| <------> |
| <------>ldw a2, (a1) |
| <------>tstnbz a2 |
| <------>bf 9f |
| <------>stw a2, (a3) |
| |
| <------>ldw a2, (a1, 4) |
| <------>tstnbz a2 |
| <------>bf 2f |
| <------>stw a2, (a3, 4) |
| |
| <------>ldw a2, (a1, 8) |
| <------>tstnbz a2 |
| <------>bf 3f |
| <------>stw a2, (a3, 8) |
| |
| <------>ldw a2, (a1, 12) |
| <------>tstnbz a2 |
| <------>bf 4f |
| <------>stw a2, (a3, 12) |
| |
| <------>ldw a2, (a1, 16) |
| <------>tstnbz a2 |
| <------>bf 5f |
| <------>stw a2, (a3, 16) |
| |
| <------>ldw a2, (a1, 20) |
| <------>tstnbz a2 |
| <------>bf 6f |
| <------>stw a2, (a3, 20) |
| |
| <------>ldw a2, (a1, 24) |
| <------>tstnbz a2 |
| <------>bf 7f |
| <------>stw a2, (a3, 24) |
| |
| <------>ldw a2, (a1, 28) |
| <------>tstnbz a2 |
| <------>bf 8f |
| <------>stw a2, (a3, 28) |
| |
| <------>addi a3, 32 |
| <------>addi a1, 32 |
| <------>br 1b |
| |
| |
| 2: |
| <------>addi a3, 4 |
| <------>br 9f |
| |
| 3: |
| <------>addi a3, 8 |
| <------>br 9f |
| |
| 4: |
| <------>addi a3, 12 |
| <------>br 9f |
| |
| 5: |
| <------>addi a3, 16 |
| <------>br 9f |
| |
| 6: |
| <------>addi a3, 20 |
| <------>br 9f |
| |
| 7: |
| <------>addi a3, 24 |
| <------>br 9f |
| |
| 8: |
| <------>addi a3, 28 |
| 9: |
| # ifdef __CSKYBE__ |
| <------>xtrb0 t0, a2 |
| <------>st.b t0, (a3) |
| <------>bez t0, 10f |
| <------>xtrb1 t0, a2 |
| <------>st.b t0, (a3, 1) |
| <------>bez t0, 10f |
| <------>xtrb2 t0, a2 |
| <------>st.b t0, (a3, 2) |
| <------>bez t0, 10f |
| <------>stw a2, (a3) |
| # else |
| <------>xtrb3 t0, a2 |
| <------>st.b t0, (a3) |
| <------>bez t0, 10f |
| <------>xtrb2 t0, a2 |
| <------>st.b t0, (a3, 1) |
| <------>bez t0, 10f |
| <------>xtrb1 t0, a2 |
| <------>st.b t0, (a3, 2) |
| <------>bez t0, 10f |
| <------>stw a2, (a3) |
| # endif |
| 10: |
| <------>jmp lr |
| |
| 11: |
| <------>subi t0, 4 |
| 12: |
| ld.b a2, (a1) |
| st.b a2, (a3) |
| bez a2, 10b |
| <------>addi t0, 1 |
| addi a1, a1, 1 |
| addi a3, a3, 1 |
| <------>bnez t0, 12b |
| <------>jbr 1b |
| ENDPROC(strcpy) |
| |