* libc/machine/sh/strcpy.S: New file.
* libc/machine/sh/Makefile.am (lib_a_SOURCES): Add rule for it. * libc/machine/sh/Makefile.am: Regenerate.
This commit is contained in:
parent
a5dadf33f9
commit
e08a611849
|
@ -1,3 +1,9 @@
|
|||
Mon Jun 24 21:17:02 2002 J"orn Rennecke <joern.rennecke@superh.com>
|
||||
|
||||
* libc/machine/sh/strcpy.S: New file.
|
||||
* libc/machine/sh/Makefile.am (lib_a_SOURCES): Add rule for it.
|
||||
* libc/machine/sh/Makefile.am: Regenerate.
|
||||
|
||||
2002-06-24 Jeff Johnston <jjohnstn@redhat.com>
|
||||
|
||||
* libc/include/math.h: Remove <sys/types.h>.
|
||||
|
|
|
@ -7,9 +7,9 @@ INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
|
|||
noinst_LIBRARIES = lib.a
|
||||
|
||||
if SH64
|
||||
lib_a_SOURCES = memcpy.S memset.S setjmp.S strcpy.S
|
||||
lib_a_SOURCES = memcpy.S memset.S setjmp.S strcpy.S strlen.S
|
||||
else
|
||||
lib_a_SOURCES = memcpy.S memset.S setjmp.S strcpy.S strcmp.S
|
||||
lib_a_SOURCES = memcpy.S memset.S setjmp.S strcpy.S strlen.S strcmp.S
|
||||
endif
|
||||
|
||||
memcpy.o: asm.h
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Makefile.in generated automatically by automake 1.4 from Makefile.am
|
||||
# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
@ -88,8 +88,8 @@ AUTOMAKE_OPTIONS = cygnus
|
|||
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
|
||||
|
||||
noinst_LIBRARIES = lib.a
|
||||
@SH64_TRUE@lib_a_SOURCES = @SH64_TRUE@memcpy.S memset.S setjmp.S strcpy.S
|
||||
@SH64_FALSE@lib_a_SOURCES = @SH64_FALSE@memcpy.S memset.S setjmp.S strcpy.S strcmp.S
|
||||
@SH64_TRUE@lib_a_SOURCES = @SH64_TRUE@memcpy.S memset.S setjmp.S strcpy.S strlen.S
|
||||
@SH64_FALSE@lib_a_SOURCES = @SH64_FALSE@memcpy.S memset.S setjmp.S strcpy.S strlen.S strcmp.S
|
||||
|
||||
ACLOCAL_AMFLAGS = -I ../../..
|
||||
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
|
||||
|
@ -103,9 +103,9 @@ DEFS = @DEFS@ -I. -I$(srcdir)
|
|||
CPPFLAGS = @CPPFLAGS@
|
||||
LIBS = @LIBS@
|
||||
lib_a_LIBADD =
|
||||
@SH64_TRUE@lib_a_OBJECTS = memcpy.o memset.o setjmp.o strcpy.o
|
||||
@SH64_TRUE@lib_a_OBJECTS = memcpy.o memset.o setjmp.o strcpy.o strlen.o
|
||||
@SH64_FALSE@lib_a_OBJECTS = memcpy.o memset.o setjmp.o strcpy.o \
|
||||
@SH64_FALSE@strcmp.o
|
||||
@SH64_FALSE@strlen.o strcmp.o
|
||||
CFLAGS = @CFLAGS@
|
||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
|
|
|
@ -0,0 +1,87 @@
|
|||
! Entry: arg0: string start address
|
||||
! Exit: result: length
|
||||
!
|
||||
! Copyright 2002 SuperH Ltd.
|
||||
|
||||
#include "asm.h"
|
||||
|
||||
ENTRY(strlen)
|
||||
|
||||
#if __SHMEDIA__
|
||||
|
||||
ldlo.q r2,0,r3
|
||||
ptabs/l r18,tr0
|
||||
pta/l loop,tr1
|
||||
andi r2,-8,r0
|
||||
shlli r2,3,r1
|
||||
mcmpeq.b r3,r63,r3
|
||||
SHHI r3,r1,r4
|
||||
beqi/u r4,0,tr1 // loop
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
movi -1,r2
|
||||
addi r3,-1,r4
|
||||
msad.ubq r3,r4,r2
|
||||
#else
|
||||
shlri r3,1,r3
|
||||
nsb r3,r3
|
||||
shlri r3,3,r2
|
||||
#endif
|
||||
blink tr0,r63
|
||||
|
||||
loop:
|
||||
ldlo.q r0,8,r3
|
||||
addi r0,8,r0
|
||||
ldlo.q r0,8,r63
|
||||
mcmpeq.b r3,r63,r3
|
||||
beqi/l r3,0,tr1 // loop
|
||||
sub r0,r2,r2
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
addi r3,-1,r4
|
||||
addi r2,-1,r2
|
||||
msad.ubq r3,r4,r2
|
||||
#else
|
||||
shlri r3,1,r3
|
||||
nsb r3,r3
|
||||
shlri r3,3,r3
|
||||
add r2,r3,r2
|
||||
#endif
|
||||
blink tr0,r63
|
||||
|
||||
#else /* ! __SHMEDIA__, i.e. SH 1..4 / SHcompact */
|
||||
|
||||
#ifdef __SH5__
|
||||
#define STR_INIT r2
|
||||
#define STR_ORIG r0
|
||||
#define STR_COPY STR_ORIG
|
||||
#define MASK r1
|
||||
#define TMP r3
|
||||
#define RESULT r2
|
||||
! r0,r1,r3: clobbered
|
||||
#else
|
||||
#define STR_INIT r4
|
||||
#define STR_ORIG STR_INIT
|
||||
#define STR_COPY STR
|
||||
#define MASK r1
|
||||
#define TMP r3
|
||||
#define RESULT r0
|
||||
! r1,r3: clobbered
|
||||
#endif
|
||||
#define STR RESULT
|
||||
|
||||
mov #3,MASK
|
||||
and STR_INIT,MASK
|
||||
tst MASK,MASK
|
||||
SL(bf, L_char_loop, mov STR_INIT, STR_COPY)
|
||||
L_word_loop:
|
||||
mov.l @STR+,TMP
|
||||
cmp/str MASK,TMP
|
||||
bf L_word_loop
|
||||
add #-4,STR
|
||||
L_char_loop:
|
||||
mov.b @STR+,TMP
|
||||
tst TMP,TMP
|
||||
bf L_char_loop
|
||||
add #-1,STR
|
||||
rts
|
||||
sub STR_ORIG,STR
|
||||
#endif /* ! __SHMEDIA__ */
|
Loading…
Reference in New Issue