* 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>
|
2002-06-24 Jeff Johnston <jjohnstn@redhat.com>
|
||||||
|
|
||||||
* libc/include/math.h: Remove <sys/types.h>.
|
* libc/include/math.h: Remove <sys/types.h>.
|
||||||
|
|
|
@ -7,9 +7,9 @@ INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
|
||||||
noinst_LIBRARIES = lib.a
|
noinst_LIBRARIES = lib.a
|
||||||
|
|
||||||
if SH64
|
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
|
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
|
endif
|
||||||
|
|
||||||
memcpy.o: asm.h
|
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
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# 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)
|
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
|
||||||
|
|
||||||
noinst_LIBRARIES = lib.a
|
noinst_LIBRARIES = lib.a
|
||||||
@SH64_TRUE@lib_a_SOURCES = @SH64_TRUE@memcpy.S memset.S setjmp.S strcpy.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 strcmp.S
|
@SH64_FALSE@lib_a_SOURCES = @SH64_FALSE@memcpy.S memset.S setjmp.S strcpy.S strlen.S strcmp.S
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I ../../..
|
ACLOCAL_AMFLAGS = -I ../../..
|
||||||
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
|
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
|
||||||
|
@ -103,9 +103,9 @@ DEFS = @DEFS@ -I. -I$(srcdir)
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
LIBS = @LIBS@
|
LIBS = @LIBS@
|
||||||
lib_a_LIBADD =
|
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@lib_a_OBJECTS = memcpy.o memset.o setjmp.o strcpy.o \
|
||||||
@SH64_FALSE@strcmp.o
|
@SH64_FALSE@strlen.o strcmp.o
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
CCLD = $(CC)
|
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