-#------------------------------------------------------------------------------ \r
+#------------------------------------------------------------------------------\r
#\r
# CopyMem() worker for ARM\r
#\r
/**\r
Copy Length bytes from Source to Destination. Overlap is OK.\r
\r
- This implementation \r
+ This implementation\r
\r
@param Destination Target of copy\r
@param Source Place to copy from\r
**/\r
.text\r
.align 2\r
-.globl ASM_PFX(InternalMemCopyMem)\r
+GCC_ASM_EXPORT(InternalMemCopyMem)\r
\r
ASM_PFX(InternalMemCopyMem):\r
- stmfd sp!, {r4, r9, lr}\r
- tst r0, #3\r
- mov r4, r0\r
- mov r9, r0\r
- mov ip, r2\r
- mov lr, r1\r
- movne r0, #0\r
- bne L4\r
- tst r1, #3\r
- movne r3, #0\r
- moveq r3, #1\r
- cmp r2, #127\r
- movls r0, #0\r
- andhi r0, r3, #1\r
+ stmfd sp!, {r4, r9, lr}\r
+ tst r0, #3\r
+ mov r4, r0\r
+ mov r9, r0\r
+ mov ip, r2\r
+ mov lr, r1\r
+ movne r0, #0\r
+ bne L4\r
+ tst r1, #3\r
+ movne r3, #0\r
+ moveq r3, #1\r
+ cmp r2, #127\r
+ movls r0, #0\r
+ andhi r0, r3, #1\r
L4:\r
- cmp r4, r1\r
- bcc L26\r
- bls L7\r
- rsb r3, r1, r4\r
- cmp ip, r3\r
- bcc L26\r
- cmp ip, #0\r
- beq L7\r
- add r9, r4, ip\r
- add lr, ip, r1\r
- b L16\r
+ cmp r4, r1\r
+ bcc L26\r
+ bls L7\r
+ rsb r3, r1, r4\r
+ cmp ip, r3\r
+ bcc L26\r
+ cmp ip, #0\r
+ beq L7\r
+ add r9, r4, ip\r
+ add lr, ip, r1\r
+ b L16\r
L29:\r
- sub ip, ip, #8\r
- cmp ip, #7\r
- ldrd r2, [lr, #-8]!\r
- movls r0, #0\r
- cmp ip, #0\r
- strd r2, [r9, #-8]!\r
- beq L7\r
+ sub ip, ip, #8\r
+ cmp ip, #7\r
+ ldrd r2, [lr, #-8]!\r
+ movls r0, #0\r
+ cmp ip, #0\r
+ strd r2, [r9, #-8]!\r
+ beq L7\r
L16:\r
- cmp r0, #0\r
- bne L29\r
- sub r3, lr, #1\r
- sub ip, ip, #1\r
- ldrb r3, [r3, #0] \r
- sub r2, r9, #1\r
- cmp ip, #0\r
- sub r9, r9, #1\r
- sub lr, lr, #1\r
- strb r3, [r2, #0]\r
- bne L16\r
- b L7\r
+ cmp r0, #0\r
+ bne L29\r
+ sub r3, lr, #1\r
+ sub ip, ip, #1\r
+ ldrb r3, [r3, #0]\r
+ sub r2, r9, #1\r
+ cmp ip, #0\r
+ sub r9, r9, #1\r
+ sub lr, lr, #1\r
+ strb r3, [r2, #0]\r
+ bne L16\r
+ b L7\r
L11:\r
- ldrb r3, [lr], #1 \r
- sub ip, ip, #1\r
- strb r3, [r9], #1\r
+ ldrb r3, [lr], #1\r
+ sub ip, ip, #1\r
+ strb r3, [r9], #1\r
L26:\r
- cmp ip, #0\r
- beq L7\r
+ cmp ip, #0\r
+ beq L7\r
L30:\r
- cmp r0, #0\r
- beq L11\r
- sub ip, ip, #128 // 32\r
- cmp ip, #127 // 31\r
- vldm lr!, {d0-d15}\r
- movls r0, #0\r
- cmp ip, #0\r
- vstm r9!, {d0-d15}\r
- bne L30\r
+ cmp r0, #0\r
+ beq L11\r
+ sub ip, ip, #128 // 32\r
+ cmp ip, #127 // 31\r
+ vldm lr!, {d0-d15}\r
+ movls r0, #0\r
+ cmp ip, #0\r
+ vstm r9!, {d0-d15}\r
+ bne L30\r
L7:\r
dsb\r
- mov r0, r4\r
- ldmfd sp!, {r4, r9, pc}\r
+ mov r0, r4\r
+ ldmfd sp!, {r4, r9, pc}\r
+\r
\r
- \r