|
@@ -10,8 +10,8 @@
|
|
of SH5-101 cut2 eval chip with Cayman board DDR memory.
|
|
of SH5-101 cut2 eval chip with Cayman board DDR memory.
|
|
|
|
|
|
Parameters:
|
|
Parameters:
|
|
- r2 : source effective address (start of page)
|
|
|
|
- r3 : destination effective address (start of page)
|
|
|
|
|
|
+ r2 : destination effective address (start of page)
|
|
|
|
+ r3 : source effective address (start of page)
|
|
|
|
|
|
Always copies 4096 bytes.
|
|
Always copies 4096 bytes.
|
|
|
|
|
|
@@ -27,10 +27,10 @@
|
|
.little
|
|
.little
|
|
|
|
|
|
.balign 8
|
|
.balign 8
|
|
- .global sh64_page_copy
|
|
|
|
-sh64_page_copy:
|
|
|
|
|
|
+ .global copy_page
|
|
|
|
+copy_page:
|
|
|
|
|
|
- /* Copy 4096 bytes worth of data from r2 to r3.
|
|
|
|
|
|
+ /* Copy 4096 bytes worth of data from r3 to r2.
|
|
Do prefetches 4 lines ahead.
|
|
Do prefetches 4 lines ahead.
|
|
Do alloco 2 lines ahead */
|
|
Do alloco 2 lines ahead */
|
|
|
|
|
|
@@ -41,21 +41,21 @@ sh64_page_copy:
|
|
|
|
|
|
#if 0
|
|
#if 0
|
|
/* TAKum03020 */
|
|
/* TAKum03020 */
|
|
- ld.q r2, 0x00, r63
|
|
|
|
- ld.q r2, 0x20, r63
|
|
|
|
- ld.q r2, 0x40, r63
|
|
|
|
- ld.q r2, 0x60, r63
|
|
|
|
|
|
+ ld.q r3, 0x00, r63
|
|
|
|
+ ld.q r3, 0x20, r63
|
|
|
|
+ ld.q r3, 0x40, r63
|
|
|
|
+ ld.q r3, 0x60, r63
|
|
#endif
|
|
#endif
|
|
- alloco r3, 0x00
|
|
|
|
|
|
+ alloco r2, 0x00
|
|
synco ! TAKum03020
|
|
synco ! TAKum03020
|
|
- alloco r3, 0x20
|
|
|
|
|
|
+ alloco r2, 0x20
|
|
synco ! TAKum03020
|
|
synco ! TAKum03020
|
|
|
|
|
|
movi 3968, r6
|
|
movi 3968, r6
|
|
- add r3, r6, r6
|
|
|
|
|
|
+ add r2, r6, r6
|
|
addi r6, 64, r7
|
|
addi r6, 64, r7
|
|
addi r7, 64, r8
|
|
addi r7, 64, r8
|
|
- sub r2, r3, r60
|
|
|
|
|
|
+ sub r3, r2, r60
|
|
addi r60, 8, r61
|
|
addi r60, 8, r61
|
|
addi r61, 8, r62
|
|
addi r61, 8, r62
|
|
addi r62, 8, r23
|
|
addi r62, 8, r23
|
|
@@ -67,25 +67,23 @@ sh64_page_copy:
|
|
1:
|
|
1:
|
|
#if 0
|
|
#if 0
|
|
/* TAKum03020 */
|
|
/* TAKum03020 */
|
|
- bge/u r3, r6, tr2 ! skip prefetch for last 4 lines
|
|
|
|
- ldx.q r3, r22, r63 ! prefetch 4 lines hence
|
|
|
|
|
|
+ bge/u r2, r6, tr2 ! skip prefetch for last 4 lines
|
|
|
|
+ ldx.q r2, r22, r63 ! prefetch 4 lines hence
|
|
#endif
|
|
#endif
|
|
2:
|
|
2:
|
|
- bge/u r3, r7, tr3 ! skip alloco for last 2 lines
|
|
|
|
- alloco r3, 0x40 ! alloc destination line 2 lines ahead
|
|
|
|
|
|
+ bge/u r2, r7, tr3 ! skip alloco for last 2 lines
|
|
|
|
+ alloco r2, 0x40 ! alloc destination line 2 lines ahead
|
|
synco ! TAKum03020
|
|
synco ! TAKum03020
|
|
3:
|
|
3:
|
|
- ldx.q r3, r60, r36
|
|
|
|
- ldx.q r3, r61, r37
|
|
|
|
- ldx.q r3, r62, r38
|
|
|
|
- ldx.q r3, r23, r39
|
|
|
|
- st.q r3, 0, r36
|
|
|
|
- st.q r3, 8, r37
|
|
|
|
- st.q r3, 16, r38
|
|
|
|
- st.q r3, 24, r39
|
|
|
|
- addi r3, 32, r3
|
|
|
|
- bgt/l r8, r3, tr1
|
|
|
|
|
|
+ ldx.q r2, r60, r36
|
|
|
|
+ ldx.q r2, r61, r37
|
|
|
|
+ ldx.q r2, r62, r38
|
|
|
|
+ ldx.q r2, r23, r39
|
|
|
|
+ st.q r2, 0, r36
|
|
|
|
+ st.q r2, 8, r37
|
|
|
|
+ st.q r2, 16, r38
|
|
|
|
+ st.q r2, 24, r39
|
|
|
|
+ addi r2, 32, r2
|
|
|
|
+ bgt/l r8, r2, tr1
|
|
|
|
|
|
blink tr0, r63 ! return
|
|
blink tr0, r63 ! return
|
|
-
|
|
|
|
-
|
|
|