Commit a5a42310 authored by davidcunado-arm's avatar davidcunado-arm Committed by GitHub
Browse files

Merge pull request #719 from yatharth-arm/yk/AArch32_porting_memcpy

AArch32: Add `memcpy4` function in assembly
parents ecc95909 9c1dceb1
...@@ -261,7 +261,7 @@ ...@@ -261,7 +261,7 @@
ldr r0, =__DATA_RAM_START__ ldr r0, =__DATA_RAM_START__
ldr r1, =__DATA_ROM_START__ ldr r1, =__DATA_ROM_START__
ldr r2, =__DATA_SIZE__ ldr r2, =__DATA_SIZE__
bl memcpy bl memcpy4
#endif #endif
.endif /* _init_c_runtime */ .endif /* _init_c_runtime */
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
.globl smc .globl smc
.globl zeromem .globl zeromem
.globl memcpy4
.globl disable_mmu_icache_secure .globl disable_mmu_icache_secure
.globl disable_mmu_secure .globl disable_mmu_secure
...@@ -73,6 +74,40 @@ z_end: ...@@ -73,6 +74,40 @@ z_end:
bx lr bx lr
endfunc zeromem endfunc zeromem
/* --------------------------------------------------------------------------
* void memcpy4(void *dest, const void *src, unsigned int length)
*
* Copy length bytes from memory area src to memory area dest.
* The memory areas should not overlap.
* Destination and source addresses must be 4-byte aligned.
* --------------------------------------------------------------------------
*/
func memcpy4
#if ASM_ASSERTION
orr r3, r0, r1
tst r3, #0x3
ASM_ASSERT(eq)
#endif
/* copy 4 bytes at a time */
m_loop4:
cmp r2, #4
blt m_loop1
ldr r3, [r1], #4
str r3, [r0], #4
sub r2, r2, #4
b m_loop4
/* copy byte per byte */
m_loop1:
cmp r2,#0
beq m_end
ldrb r3, [r1], #1
strb r3, [r0], #1
subs r2, r2, #1
bne m_loop1
m_end:
bx lr
endfunc memcpy4
/* --------------------------------------------------------------------------- /* ---------------------------------------------------------------------------
* Disable the MMU in Secure State * Disable the MMU in Secure State
* --------------------------------------------------------------------------- * ---------------------------------------------------------------------------
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment