OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib/] [newlib/] [libc/] [machine/] [sh/] [strcpy.S] - Rev 56

Go to most recent revision | Compare with Previous | Blame | View Log

! Entry: r4: destination
!        r5: source
! Exit:  r0: destination
!        r1-r2,r5: clobbered

#include "asm.h"

ENTRY(strcpy)
        mov     r4,r0
        or      r5,r0
        tst     #3,r0
        SL(bf, L_setup_char_loop, mov r4,r0)
        mov.l   @r5+,r1
        mov     #0,r2
        cmp/str r2,r1
        SL(bt, Longword_loop_end, sub r5,r0)
        .align  2
Longword_loop:
        mov.l   r1,@(r0,r5)
        mov.l   @r5+,r1
        cmp/str r2,r1
        bt      Longword_loop_end
        mov.l   r1,@(r0,r5)
        mov.l   @r5+,r1
        cmp/str r2,r1
        bf      Longword_loop
Longword_loop_end:
        add     #-4,r5
        add     #3,r0
        .align  2
L_char_loop:
        mov.b   @r5+,r1
L_char_loop_start:
        tst     r1,r1
        SL(bf, L_char_loop, mov.b r1,@(r0,r5))
        rts
        mov r4,r0
L_setup_char_loop:
        mov.b   @r5+,r1
        bra L_char_loop_start
        sub r5,r0

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.