parent
dcdd476662
commit
4640cf4296
|
@ -33,20 +33,33 @@
|
|||
* Implementation of strcat using strlen/strcpy.
|
||||
*/
|
||||
ENTRY(strcat)
|
||||
str lr, [sp, #-8]! /* save return address */
|
||||
push {r4, r5} /* save registers */
|
||||
#ifdef __ARM_EABI__
|
||||
.fnstart
|
||||
.cfi_startproc
|
||||
#endif
|
||||
push {r3-r5, lr} /* save registers */
|
||||
#ifdef __ARM_EABI__
|
||||
.save {r3-r5, lr}
|
||||
.cfi_def_cfa_offset 16
|
||||
.cfi_offset 14, -4
|
||||
.cfi_offset 5, -8
|
||||
.cfi_offset 4, -12
|
||||
.cfi_offset 3, -16
|
||||
#endif
|
||||
|
||||
mov r4, r0 /* save dst */
|
||||
mov r5, r1 /* save append */
|
||||
|
||||
bl PLT_SYM(strlen) /* find length of dst */
|
||||
|
||||
add r0, r0, r4 /* add to dst pointer */
|
||||
adds r0, r0, r4 /* add to dst pointer */
|
||||
mov r1, r5 /* fetch append */
|
||||
bl PLT_SYM(strcpy) /* append string */
|
||||
|
||||
mov r0, r4 /* restore dst as return value */
|
||||
pop {r4, r5} /* restore registers */
|
||||
ldr lr, [sp], #8 /* restore return address */
|
||||
RET
|
||||
pop {r3-r5, pc} /* restore registers */
|
||||
#ifdef __ARM_EABI__
|
||||
.cfi_endproc
|
||||
.fnend
|
||||
#endif
|
||||
END(strcat)
|
||||
|
|
Loading…
Reference in New Issue