[PATCH] size reduction of Cell/SPU variable argument part
Hidetaka Takano
hidetaka.takano@glb.toshiba.co.jp
Wed Aug 15 11:37:00 GMT 2007
To: Jeff Johnston
Cc: newlib ML members
I added the "new BSD lisence" to the new files (*.S) of my patch.
But I did not add it to the other files because of simple and tiny changes.
Now is this acceptable?
Thank you.
---
Hidetaka Takano / Toshiba
========================================================
newlib/ChangeLog:
2007-08-xx Hidetaka Takano <hidetaka.takano@glb.toshiba.co.jp>
Reduce the memory consumption of variable argument functions
for SPU (cell):
* libc/machine/spu/Makefile.am: Replace printf/scanf family C sources
to assembler sources.
* libc/machine/spu/Makefile.in: Regenerated.
* libc/machine/spu/stdio.c: Add __check_init function wrapping
CHECK_INIT macro to use from assembler routines.
* libc/machine/spu/c99ppe.h: Add definitions for assembler code.
* libc/machine/spu/fiprintf.S: New file.
* libc/machine/spu/fiscanf.S: Ditto.
* libc/machine/spu/fprintf.S: Ditto.
* libc/machine/spu/fscanf.S: Ditto.
* libc/machine/spu/iprintf.S: Ditto.
* libc/machine/spu/iscanf.S: Ditto.
* libc/machine/spu/printf.S: Ditto.
* libc/machine/spu/scanf.S: Ditto.
* libc/machine/spu/siprintf.S: Ditto.
* libc/machine/spu/siscanf.S: Ditto.
* libc/machine/spu/sniprintf.S: Ditto.
* libc/machine/spu/snprintf.S: Ditto.
* libc/machine/spu/sprintf.S: Ditto.
* libc/machine/spu/sscanf.S: Ditto.
* libc/machine/spu/stack_reg_va.S: Ditto.
* libc/machine/spu/fiprintf.c: Removed. (Replaced by .S)
* libc/machine/spu/fiscanf.c: Ditto.
* libc/machine/spu/fprintf.c: Ditto.
* libc/machine/spu/fscanf.c: Ditto.
* libc/machine/spu/iprintf.c: Ditto.
* libc/machine/spu/iscanf.c: Ditto.
* libc/machine/spu/printf.c: Ditto.
* libc/machine/spu/scanf.c: Ditto.
* libc/machine/spu/siprintf.c: Ditto.
* libc/machine/spu/siscanf.c: Ditto.
* libc/machine/spu/sniprintf.c: Ditto.
* libc/machine/spu/snprintf.c: Ditto.
* libc/machine/spu/sprintf.c: Ditto.
* libc/machine/spu/sscanf.c: Ditto.
========================================================
Index: newlib/libc/machine/spu/Makefile.in
===================================================================
RCS file: /cvs/src/src/newlib/libc/machine/spu/Makefile.in,v
retrieving revision 1.12
diff -u -r1.12 Makefile.in
--- newlib/libc/machine/spu/Makefile.in 15 Jun 2007 16:00:46 -0000 1.12
+++ newlib/libc/machine/spu/Makefile.in 15 Aug 2007 10:42:22 -0000
@@ -73,13 +73,6 @@
$(srcdir)/../../../../compile $(srcdir)/../../../../compile \
$(srcdir)/../../../../compile $(srcdir)/../../../../compile \
$(srcdir)/../../../../compile $(srcdir)/../../../../compile \
- $(srcdir)/../../../../compile $(srcdir)/../../../../compile \
- $(srcdir)/../../../../compile $(srcdir)/../../../../compile \
- $(srcdir)/../../../../compile $(srcdir)/../../../../compile \
- $(srcdir)/../../../../compile $(srcdir)/../../../../compile \
- $(srcdir)/../../../../compile $(srcdir)/../../../../compile \
- $(srcdir)/../../../../compile $(srcdir)/../../../../compile \
- $(srcdir)/../../../../compile $(srcdir)/../../../../compile \
$(srcdir)/../../../../compile
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -135,7 +128,8 @@
lib_a-vprintf.$(OBJEXT) lib_a-vscanf.$(OBJEXT) \
lib_a-vsiprintf.$(OBJEXT) lib_a-vsiscanf.$(OBJEXT) \
lib_a-vsniprintf.$(OBJEXT) lib_a-vsnprintf.$(OBJEXT) \
- lib_a-vsprintf.$(OBJEXT) lib_a-vsscanf.$(OBJEXT)
+ lib_a-vsprintf.$(OBJEXT) lib_a-vsscanf.$(OBJEXT) \
+ lib_a-stack_reg_va.$(OBJEXT)
lib_a_OBJECTS = $(am_lib_a_OBJECTS)
DEFAULT_INCLUDES = -I. -I$(srcdir)
depcomp =
@@ -261,18 +255,18 @@
noinst_LIBRARIES = lib.a
AM_CCASFLAGS = $(INCLUDES)
lib_a_SOURCES = setjmp.S clearerr.c creat.c fclose.c feof.c ferror.c fflush.c \
- fgetc.c fgetpos.c fgets.c fileno.c fiprintf.c fiscanf.c fopen.c \
- fprintf.c fputc.c fputs.c fread.c freopen.c fscanf.c fseek.c \
- fsetpos.c ftell.c fwrite.c getc.c getchar.c gets.c iprintf.c \
- iscanf.c memcpy.c memmove.c memset.c perror.c printf.c \
- putc.c putchar.c puts.c remove.c rename.c rewind.c scanf.c \
- setbuf.c setvbuf.c siprintf.c siscanf.c sleep.c sniprintf.c \
- snprintf.c sprintf.c sscanf.c stdio.c strcat.c strchr.c strcmp.c \
+ fgetc.c fgetpos.c fgets.c fileno.c fiprintf.S fiscanf.S fopen.c \
+ fprintf.S fputc.c fputs.c fread.c freopen.c fscanf.S fseek.c \
+ fsetpos.c ftell.c fwrite.c getc.c getchar.c gets.c iprintf.S \
+ iscanf.S memcpy.c memmove.c memset.c perror.c printf.S \
+ putc.c putchar.c puts.c remove.c rename.c rewind.c scanf.S \
+ setbuf.c setvbuf.c siprintf.S siscanf.S sleep.c sniprintf.S \
+ snprintf.S sprintf.S sscanf.S stdio.c strcat.c strchr.c strcmp.c \
strcpy.c strcspn.c strlen.c strncat.c strncmp.c strncpy.c strpbrk.c \
strrchr.c strspn.c strxfrm.c tmpfile.c tmpnam.c ungetc.c usleep.c \
vfiprintf.c vfiscanf.c vfprintf.c vfscanf.c viprintf.c viscanf.c \
vprintf.c vscanf.c vsiprintf.c vsiscanf.c vsniprintf.c vsnprintf.c \
- vsprintf.c vsscanf.c
+ vsprintf.c vsscanf.c stack_reg_va.S
lib_a_CCASFLAGS = $(AM_CCASFLAGS)
lib_a_CFLAGS = $(AM_CFLAGS)
@@ -341,6 +335,96 @@
lib_a-setjmp.obj: setjmp.S
$(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-setjmp.obj `if test -f 'setjmp.S'; then $(CYGPATH_W) 'setjmp.S'; else
$(CYGPATH_W) '$(srcdir)/setjmp.S'; fi`
+lib_a-fiprintf.o: fiprintf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-fiprintf.o `test -f 'fiprintf.S' || echo '$(srcdir)/'`fiprintf.S
+
+lib_a-fiprintf.obj: fiprintf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-fiprintf.obj `if test -f 'fiprintf.S'; then $(CYGPATH_W) 'fiprintf.S';
else $(CYGPATH_W) '$(srcdir)/fiprintf.S'; fi`
+
+lib_a-fiscanf.o: fiscanf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-fiscanf.o `test -f 'fiscanf.S' || echo '$(srcdir)/'`fiscanf.S
+
+lib_a-fiscanf.obj: fiscanf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-fiscanf.obj `if test -f 'fiscanf.S'; then $(CYGPATH_W) 'fiscanf.S'; else
$(CYGPATH_W) '$(srcdir)/fiscanf.S'; fi`
+
+lib_a-fprintf.o: fprintf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-fprintf.o `test -f 'fprintf.S' || echo '$(srcdir)/'`fprintf.S
+
+lib_a-fprintf.obj: fprintf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-fprintf.obj `if test -f 'fprintf.S'; then $(CYGPATH_W) 'fprintf.S'; else
$(CYGPATH_W) '$(srcdir)/fprintf.S'; fi`
+
+lib_a-fscanf.o: fscanf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-fscanf.o `test -f 'fscanf.S' || echo '$(srcdir)/'`fscanf.S
+
+lib_a-fscanf.obj: fscanf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-fscanf.obj `if test -f 'fscanf.S'; then $(CYGPATH_W) 'fscanf.S'; else
$(CYGPATH_W) '$(srcdir)/fscanf.S'; fi`
+
+lib_a-iprintf.o: iprintf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-iprintf.o `test -f 'iprintf.S' || echo '$(srcdir)/'`iprintf.S
+
+lib_a-iprintf.obj: iprintf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-iprintf.obj `if test -f 'iprintf.S'; then $(CYGPATH_W) 'iprintf.S'; else
$(CYGPATH_W) '$(srcdir)/iprintf.S'; fi`
+
+lib_a-iscanf.o: iscanf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-iscanf.o `test -f 'iscanf.S' || echo '$(srcdir)/'`iscanf.S
+
+lib_a-iscanf.obj: iscanf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-iscanf.obj `if test -f 'iscanf.S'; then $(CYGPATH_W) 'iscanf.S'; else
$(CYGPATH_W) '$(srcdir)/iscanf.S'; fi`
+
+lib_a-printf.o: printf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-printf.o `test -f 'printf.S' || echo '$(srcdir)/'`printf.S
+
+lib_a-printf.obj: printf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-printf.obj `if test -f 'printf.S'; then $(CYGPATH_W) 'printf.S'; else
$(CYGPATH_W) '$(srcdir)/printf.S'; fi`
+
+lib_a-scanf.o: scanf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-scanf.o `test -f 'scanf.S' || echo '$(srcdir)/'`scanf.S
+
+lib_a-scanf.obj: scanf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-scanf.obj `if test -f 'scanf.S'; then $(CYGPATH_W) 'scanf.S'; else
$(CYGPATH_W) '$(srcdir)/scanf.S'; fi`
+
+lib_a-siprintf.o: siprintf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-siprintf.o `test -f 'siprintf.S' || echo '$(srcdir)/'`siprintf.S
+
+lib_a-siprintf.obj: siprintf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-siprintf.obj `if test -f 'siprintf.S'; then $(CYGPATH_W) 'siprintf.S';
else $(CYGPATH_W) '$(srcdir)/siprintf.S'; fi`
+
+lib_a-siscanf.o: siscanf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-siscanf.o `test -f 'siscanf.S' || echo '$(srcdir)/'`siscanf.S
+
+lib_a-siscanf.obj: siscanf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-siscanf.obj `if test -f 'siscanf.S'; then $(CYGPATH_W) 'siscanf.S'; else
$(CYGPATH_W) '$(srcdir)/siscanf.S'; fi`
+
+lib_a-sniprintf.o: sniprintf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-sniprintf.o `test -f 'sniprintf.S' || echo '$(srcdir)/'`sniprintf.S
+
+lib_a-sniprintf.obj: sniprintf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-sniprintf.obj `if test -f 'sniprintf.S'; then $(CYGPATH_W)
'sniprintf.S'; else $(CYGPATH_W) '$(srcdir)/sniprintf.S'; fi`
+
+lib_a-snprintf.o: snprintf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-snprintf.o `test -f 'snprintf.S' || echo '$(srcdir)/'`snprintf.S
+
+lib_a-snprintf.obj: snprintf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-snprintf.obj `if test -f 'snprintf.S'; then $(CYGPATH_W) 'snprintf.S';
else $(CYGPATH_W) '$(srcdir)/snprintf.S'; fi`
+
+lib_a-sprintf.o: sprintf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-sprintf.o `test -f 'sprintf.S' || echo '$(srcdir)/'`sprintf.S
+
+lib_a-sprintf.obj: sprintf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-sprintf.obj `if test -f 'sprintf.S'; then $(CYGPATH_W) 'sprintf.S'; else
$(CYGPATH_W) '$(srcdir)/sprintf.S'; fi`
+
+lib_a-sscanf.o: sscanf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-sscanf.o `test -f 'sscanf.S' || echo '$(srcdir)/'`sscanf.S
+
+lib_a-sscanf.obj: sscanf.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-sscanf.obj `if test -f 'sscanf.S'; then $(CYGPATH_W) 'sscanf.S'; else
$(CYGPATH_W) '$(srcdir)/sscanf.S'; fi`
+
+lib_a-stack_reg_va.o: stack_reg_va.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-stack_reg_va.o `test -f 'stack_reg_va.S' || echo
'$(srcdir)/'`stack_reg_va.S
+
+lib_a-stack_reg_va.obj: stack_reg_va.S
+ $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-stack_reg_va.obj `if test -f 'stack_reg_va.S'; then $(CYGPATH_W)
'stack_reg_va.S'; else $(CYGPATH_W) '$(srcdir)/stack_reg_va.S'; fi`
+
.c.o:
$(COMPILE) -c $<
@@ -407,30 +491,12 @@
lib_a-fileno.obj: fileno.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fileno.obj
`if test -f 'fileno.c'; then $(CYGPATH_W) 'fileno.c'; else $(CYGPATH_W) '$(srcdir)/fileno.c'; fi`
-lib_a-fiprintf.o: fiprintf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fiprintf.o
`test -f 'fiprintf.c' || echo '$(srcdir)/'`fiprintf.c
-
-lib_a-fiprintf.obj: fiprintf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fiprintf.obj
`if test -f 'fiprintf.c'; then $(CYGPATH_W) 'fiprintf.c'; else $(CYGPATH_W) '$(srcdir)/fiprintf.c'; fi`
-
-lib_a-fiscanf.o: fiscanf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fiscanf.o
`test -f 'fiscanf.c' || echo '$(srcdir)/'`fiscanf.c
-
-lib_a-fiscanf.obj: fiscanf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fiscanf.obj
`if test -f 'fiscanf.c'; then $(CYGPATH_W) 'fiscanf.c'; else $(CYGPATH_W) '$(srcdir)/fiscanf.c'; fi`
-
lib_a-fopen.o: fopen.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fopen.o `test
-f 'fopen.c' || echo '$(srcdir)/'`fopen.c
lib_a-fopen.obj: fopen.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fopen.obj `if
test -f 'fopen.c'; then $(CYGPATH_W) 'fopen.c'; else $(CYGPATH_W) '$(srcdir)/fopen.c'; fi`
-lib_a-fprintf.o: fprintf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fprintf.o
`test -f 'fprintf.c' || echo '$(srcdir)/'`fprintf.c
-
-lib_a-fprintf.obj: fprintf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fprintf.obj
`if test -f 'fprintf.c'; then $(CYGPATH_W) 'fprintf.c'; else $(CYGPATH_W) '$(srcdir)/fprintf.c'; fi`
-
lib_a-fputc.o: fputc.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fputc.o `test
-f 'fputc.c' || echo '$(srcdir)/'`fputc.c
@@ -455,12 +521,6 @@
lib_a-freopen.obj: freopen.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-freopen.obj
`if test -f 'freopen.c'; then $(CYGPATH_W) 'freopen.c'; else $(CYGPATH_W) '$(srcdir)/freopen.c'; fi`
-lib_a-fscanf.o: fscanf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fscanf.o
`test -f 'fscanf.c' || echo '$(srcdir)/'`fscanf.c
-
-lib_a-fscanf.obj: fscanf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fscanf.obj
`if test -f 'fscanf.c'; then $(CYGPATH_W) 'fscanf.c'; else $(CYGPATH_W) '$(srcdir)/fscanf.c'; fi`
-
lib_a-fseek.o: fseek.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fseek.o `test
-f 'fseek.c' || echo '$(srcdir)/'`fseek.c
@@ -503,18 +563,6 @@
lib_a-gets.obj: gets.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-gets.obj `if
test -f 'gets.c'; then $(CYGPATH_W) 'gets.c'; else $(CYGPATH_W) '$(srcdir)/gets.c'; fi`
-lib_a-iprintf.o: iprintf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-iprintf.o
`test -f 'iprintf.c' || echo '$(srcdir)/'`iprintf.c
-
-lib_a-iprintf.obj: iprintf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-iprintf.obj
`if test -f 'iprintf.c'; then $(CYGPATH_W) 'iprintf.c'; else $(CYGPATH_W) '$(srcdir)/iprintf.c'; fi`
-
-lib_a-iscanf.o: iscanf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-iscanf.o
`test -f 'iscanf.c' || echo '$(srcdir)/'`iscanf.c
-
-lib_a-iscanf.obj: iscanf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-iscanf.obj
`if test -f 'iscanf.c'; then $(CYGPATH_W) 'iscanf.c'; else $(CYGPATH_W) '$(srcdir)/iscanf.c'; fi`
-
lib_a-memcpy.o: memcpy.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-memcpy.o
`test -f 'memcpy.c' || echo '$(srcdir)/'`memcpy.c
@@ -539,12 +587,6 @@
lib_a-perror.obj: perror.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-perror.obj
`if test -f 'perror.c'; then $(CYGPATH_W) 'perror.c'; else $(CYGPATH_W) '$(srcdir)/perror.c'; fi`
-lib_a-printf.o: printf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-printf.o
`test -f 'printf.c' || echo '$(srcdir)/'`printf.c
-
-lib_a-printf.obj: printf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-printf.obj
`if test -f 'printf.c'; then $(CYGPATH_W) 'printf.c'; else $(CYGPATH_W) '$(srcdir)/printf.c'; fi`
-
lib_a-putc.o: putc.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-putc.o `test
-f 'putc.c' || echo '$(srcdir)/'`putc.c
@@ -581,12 +623,6 @@
lib_a-rewind.obj: rewind.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-rewind.obj
`if test -f 'rewind.c'; then $(CYGPATH_W) 'rewind.c'; else $(CYGPATH_W) '$(srcdir)/rewind.c'; fi`
-lib_a-scanf.o: scanf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-scanf.o `test
-f 'scanf.c' || echo '$(srcdir)/'`scanf.c
-
-lib_a-scanf.obj: scanf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-scanf.obj `if
test -f 'scanf.c'; then $(CYGPATH_W) 'scanf.c'; else $(CYGPATH_W) '$(srcdir)/scanf.c'; fi`
-
lib_a-setbuf.o: setbuf.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-setbuf.o
`test -f 'setbuf.c' || echo '$(srcdir)/'`setbuf.c
@@ -599,48 +635,12 @@
lib_a-setvbuf.obj: setvbuf.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-setvbuf.obj
`if test -f 'setvbuf.c'; then $(CYGPATH_W) 'setvbuf.c'; else $(CYGPATH_W) '$(srcdir)/setvbuf.c'; fi`
-lib_a-siprintf.o: siprintf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-siprintf.o
`test -f 'siprintf.c' || echo '$(srcdir)/'`siprintf.c
-
-lib_a-siprintf.obj: siprintf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-siprintf.obj
`if test -f 'siprintf.c'; then $(CYGPATH_W) 'siprintf.c'; else $(CYGPATH_W) '$(srcdir)/siprintf.c'; fi`
-
-lib_a-siscanf.o: siscanf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-siscanf.o
`test -f 'siscanf.c' || echo '$(srcdir)/'`siscanf.c
-
-lib_a-siscanf.obj: siscanf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-siscanf.obj
`if test -f 'siscanf.c'; then $(CYGPATH_W) 'siscanf.c'; else $(CYGPATH_W) '$(srcdir)/siscanf.c'; fi`
-
lib_a-sleep.o: sleep.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sleep.o `test
-f 'sleep.c' || echo '$(srcdir)/'`sleep.c
lib_a-sleep.obj: sleep.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sleep.obj `if
test -f 'sleep.c'; then $(CYGPATH_W) 'sleep.c'; else $(CYGPATH_W) '$(srcdir)/sleep.c'; fi`
-lib_a-sniprintf.o: sniprintf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sniprintf.o
`test -f 'sniprintf.c' || echo '$(srcdir)/'`sniprintf.c
-
-lib_a-sniprintf.obj: sniprintf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sniprintf.obj
`if test -f 'sniprintf.c'; then $(CYGPATH_W) 'sniprintf.c'; else $(CYGPATH_W) '$(srcdir)/sniprintf.c'; fi`
-
-lib_a-snprintf.o: snprintf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-snprintf.o
`test -f 'snprintf.c' || echo '$(srcdir)/'`snprintf.c
-
-lib_a-snprintf.obj: snprintf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-snprintf.obj
`if test -f 'snprintf.c'; then $(CYGPATH_W) 'snprintf.c'; else $(CYGPATH_W) '$(srcdir)/snprintf.c'; fi`
-
-lib_a-sprintf.o: sprintf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sprintf.o
`test -f 'sprintf.c' || echo '$(srcdir)/'`sprintf.c
-
-lib_a-sprintf.obj: sprintf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sprintf.obj
`if test -f 'sprintf.c'; then $(CYGPATH_W) 'sprintf.c'; else $(CYGPATH_W) '$(srcdir)/sprintf.c'; fi`
-
-lib_a-sscanf.o: sscanf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sscanf.o
`test -f 'sscanf.c' || echo '$(srcdir)/'`sscanf.c
-
-lib_a-sscanf.obj: sscanf.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sscanf.obj
`if test -f 'sscanf.c'; then $(CYGPATH_W) 'sscanf.c'; else $(CYGPATH_W) '$(srcdir)/sscanf.c'; fi`
-
lib_a-stdio.o: stdio.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-stdio.o `test
-f 'stdio.c' || echo '$(srcdir)/'`stdio.c
Index: newlib/libc/machine/spu/sniprintf.c
===================================================================
RCS file: newlib/libc/machine/spu/sniprintf.c
diff -N newlib/libc/machine/spu/sniprintf.c
--- newlib/libc/machine/spu/sniprintf.c 20 Feb 2007 20:58:38 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,2 +0,0 @@
-#define INTEGER_ONLY
-#include "snprintf.c"
Index: newlib/libc/machine/spu/fprintf.c
===================================================================
RCS file: newlib/libc/machine/spu/fprintf.c
diff -N newlib/libc/machine/spu/fprintf.c
--- newlib/libc/machine/spu/fprintf.c 23 May 2007 21:41:17 -0000 1.4
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,81 +0,0 @@
-/*
-(C) Copyright IBM Corp. 2006
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
- * Neither the name of IBM nor the names of its contributors may be
-used to endorse or promote products derived from this software without
-specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-Author: Joel Schopp <jschopp@austin.ibm.com>
-*/
-
-#include <_ansi.h>
-#include <stdio.h>
-
-#include "c99ppe.h"
-
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-#ifdef INTEGER_ONLY
-# define fprintf fiprintf
-#endif
-
-typedef struct
-{
- int fp;
- unsigned int pad0[ 3 ];
- _CONST char* fmt;
- unsigned int pad1[ 3 ];
- va_list ap;
-} c99_fprintf_t;
-
-#ifndef _REENT_ONLY
-
-int
-fprintf(FILE * fp, _CONST char *fmt,...)
-{
- int ret;
- c99_fprintf_t args;
-
- CHECK_INIT(_REENT);
-
- args.fp = fp->_fp;
- args.fmt = (char*) fmt;
-
-#ifdef _HAVE_STDC
- va_start (args.ap, fmt);
-#else
- va_start (args.ap);
-#endif
-
- ret =__send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFPRINTF, &args);
-
- va_end (args.ap);
- return ret;
-}
-#endif /* ! _REENT_ONLY */
Index: newlib/libc/machine/spu/sprintf.c
===================================================================
RCS file: newlib/libc/machine/spu/sprintf.c
diff -N newlib/libc/machine/spu/sprintf.c
--- newlib/libc/machine/spu/sprintf.c 23 May 2007 21:41:17 -0000 1.4
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,82 +0,0 @@
-/*
-(C) Copyright IBM Corp. 2006
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
- * Neither the name of IBM nor the names of its contributors may be
-used to endorse or promote products derived from this software without
-specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-Author: Joel Schopp <jschopp@austin.ibm.com>
-*/
-
-#include <_ansi.h>
-#include <stdio.h>
-
-#include "c99ppe.h"
-
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-#ifdef INTEGER_ONLY
-# define sprintf siprintf
-#endif
-
-typedef struct
-{
- char* str;
- unsigned int pad0[ 3 ];
- _CONST char* fmt;
- unsigned int pad1[ 3 ];
- va_list ap;
-} c99_sprintf_t;
-
-#ifndef _REENT_ONLY
-
-_DEFUN(sprintf, (str, fmt),
- char *str _AND
- _CONST char *fmt _DOTS)
-{
- int ret;
- c99_sprintf_t args;
-
- CHECK_STR_INIT(_REENT);
-
- args.str = str;
- args.fmt = fmt;
-#ifdef _HAVE_STDC
- va_start (args.ap, fmt);
-#else
- va_start (args.ap);
-#endif
-
- ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSPRINTF, &args);
-
- va_end (args.ap);
- return ret;
-}
-
-#endif /* ! _REENT_ONLY */
Index: newlib/libc/machine/spu/sscanf.c
===================================================================
RCS file: newlib/libc/machine/spu/sscanf.c
diff -N newlib/libc/machine/spu/sscanf.c
--- newlib/libc/machine/spu/sscanf.c 23 May 2007 21:41:17 -0000 1.4
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,83 +0,0 @@
-/*
-(C) Copyright IBM Corp. 2006
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
- * Neither the name of IBM nor the names of its contributors may be
-used to endorse or promote products derived from this software without
-specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-Author: Joel Schopp <jschopp@austin.ibm.com>
-*/
-
-#include <_ansi.h>
-#include <stdio.h>
-
-#include "c99ppe.h"
-
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-#ifdef INTEGER_ONLY
-# define sscanf siscanf
-#endif
-
-typedef struct
-{
- _CONST char* str;
- unsigned int pad0[ 3 ];
- _CONST char* fmt;
- unsigned int pad1[ 3 ];
- va_list ap;
-} c99_sscanf_t;
-
-#ifndef _REENT_ONLY
-
-int
-_DEFUN(sscanf, (str, fmt),
- _CONST char *str _AND
- _CONST char *fmt _DOTS)
-{
- int ret;
- c99_sscanf_t args;
-
- CHECK_STR_INIT(_REENT);
-
- args.str = str;
- args.fmt = fmt;
-#ifdef _HAVE_STDC
- va_start (args.ap, fmt);
-#else
- va_start (args.ap);
-#endif
-
- ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSSCANF, &args);
-
- va_end (args.ap);
- return ret;
-}
-
-#endif /* ! _REENT_ONLY */
Index: newlib/libc/machine/spu/stdio.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/machine/spu/stdio.c,v
retrieving revision 1.1
diff -u -r1.1 stdio.c
--- newlib/libc/machine/spu/stdio.c 1 Feb 2007 16:33:05 -0000 1.1
+++ newlib/libc/machine/spu/stdio.c 15 Aug 2007 10:42:23 -0000
@@ -80,3 +80,9 @@
s->_stderr = &s->__sf[2];
s->_stderr->_fp = SPE_STDERR;
}
+
+_VOID
+_DEFUN_VOID (__check_init)
+{
+ CHECK_INIT(_REENT);
+}
Index: newlib/libc/machine/spu/printf.c
===================================================================
RCS file: newlib/libc/machine/spu/printf.c
diff -N newlib/libc/machine/spu/printf.c
--- newlib/libc/machine/spu/printf.c 23 May 2007 21:41:17 -0000 1.6
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,56 +0,0 @@
-#include <_ansi.h>
-#include <stdio.h>
-
-#include "c99ppe.h"
-
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-#ifdef INTEGER_ONLY
-# define printf iprintf
-#endif
-
-typedef struct
-{
- _CONST char* fmt;
- unsigned int pad0[ 3 ];
- va_list ap;
-} c99_printf_t;
-
-#ifndef _REENT_ONLY
-
-#ifdef _HAVE_STDC
-int
-_DEFUN (printf, (fmt,ap),
- _CONST char *fmt _AND
- ...)
-#else
-int
-#error
-printf (fmt, va_alist)
- _CONST char *fmt;
- va_dcl
-#endif
-{
- int ret;
- c99_printf_t args;
-
- CHECK_STD_INIT(_REENT);
-
- args.fmt = fmt;
-#ifdef _HAVE_STDC
- va_start (args.ap, fmt);
-#else
- va_start (args.ap);
-#endif
-
- ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VPRINTF, &args);
-
- va_end (args.ap);
- return ret;
-}
-
-#endif /* ! _REENT_ONLY */
Index: newlib/libc/machine/spu/snprintf.c
===================================================================
RCS file: newlib/libc/machine/spu/snprintf.c
diff -N newlib/libc/machine/spu/snprintf.c
--- newlib/libc/machine/spu/snprintf.c 23 May 2007 21:41:17 -0000 1.4
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,86 +0,0 @@
-/*
-(C) Copyright IBM Corp. 2006
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
- * Neither the name of IBM nor the names of its contributors may be
-used to endorse or promote products derived from this software without
-specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-Author: Joel Schopp <jschopp@austin.ibm.com>
-*/
-
-#include <_ansi.h>
-#include <stdio.h>
-
-#include "c99ppe.h"
-
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-#ifdef INTEGER_ONLY
-# define snprintf sniprintf
-#endif
-
-typedef struct
-{
- char* str;
- unsigned int pad0[ 3 ];
- size_t size;
- unsigned int pad1[ 3 ];
- _CONST char* fmt;
- unsigned int pad2[ 3 ];
- va_list ap;
-} c99_snprintf_t;
-
-#ifndef _REENT_ONLY
-
-_DEFUN(snprintf, (str, size, fmt),
- char *str _AND
- size_t size _AND
- _CONST char *fmt _DOTS)
-{
- int ret;
- c99_snprintf_t args;
-
- CHECK_STR_INIT(_REENT);
-
- args.str = str;
- args.size = size;
- args.fmt = fmt;
-#ifdef _HAVE_STDC
- va_start (args.ap, fmt);
-#else
- va_start (args.ap);
-#endif
-
- ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSNPRINTF, &args);
-
- va_end (args.ap);
- return ret;
-}
-
-#endif /* ! _REENT_ONLY */
Index: newlib/libc/machine/spu/scanf.c
===================================================================
RCS file: newlib/libc/machine/spu/scanf.c
diff -N newlib/libc/machine/spu/scanf.c
--- newlib/libc/machine/spu/scanf.c 23 May 2007 21:41:17 -0000 1.4
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,78 +0,0 @@
-/*
-(C) Copyright IBM Corp. 2006
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
- * Neither the name of IBM nor the names of its contributors may be
-used to endorse or promote products derived from this software without
-specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-Author: Joel Schopp <jschopp@austin.ibm.com>
-*/
-
-#include <_ansi.h>
-#include <stdio.h>
-
-#include "c99ppe.h"
-
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-#ifdef INTEGER_ONLY
-# define scanf iscanf
-#endif
-
-typedef struct
-{
- _CONST char* fmt;
- unsigned int pad0[ 3 ];
- va_list ap;
-} c99_vscanf_t;
-
-#ifndef _REENT_ONLY
-
-scanf(_CONST char *fmt, ...)
-{
- int ret;
- c99_vscanf_t args;
-
- CHECK_STD_INIT(_REENT);
-
- args.fmt = (char*) fmt;
-#ifdef _HAVE_STDC
- va_start (args.ap, fmt);
-#else
- va_start (args.ap);
-#endif
-
-
- ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSCANF, &args);
-
- va_end (args.ap);
- return ret;
-}
-
-#endif /* ! _REENT_ONLY */
Index: newlib/libc/machine/spu/fiprintf.c
===================================================================
RCS file: newlib/libc/machine/spu/fiprintf.c
diff -N newlib/libc/machine/spu/fiprintf.c
--- newlib/libc/machine/spu/fiprintf.c 20 Feb 2007 20:58:38 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,2 +0,0 @@
-#define INTEGER_ONLY
-#include "fprintf.c"
Index: newlib/libc/machine/spu/iprintf.c
===================================================================
RCS file: newlib/libc/machine/spu/iprintf.c
diff -N newlib/libc/machine/spu/iprintf.c
--- newlib/libc/machine/spu/iprintf.c 20 Feb 2007 20:58:38 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,2 +0,0 @@
-#define INTEGER_ONLY
-#include "printf.c"
Index: newlib/libc/machine/spu/Makefile.am
===================================================================
RCS file: /cvs/src/src/newlib/libc/machine/spu/Makefile.am,v
retrieving revision 1.11
diff -u -r1.11 Makefile.am
--- newlib/libc/machine/spu/Makefile.am 15 Jun 2007 16:00:46 -0000 1.11
+++ newlib/libc/machine/spu/Makefile.am 15 Aug 2007 10:42:09 -0000
@@ -9,18 +9,18 @@
AM_CCASFLAGS = $(INCLUDES)
lib_a_SOURCES = setjmp.S clearerr.c creat.c fclose.c feof.c ferror.c fflush.c \
- fgetc.c fgetpos.c fgets.c fileno.c fiprintf.c fiscanf.c fopen.c \
- fprintf.c fputc.c fputs.c fread.c freopen.c fscanf.c fseek.c \
- fsetpos.c ftell.c fwrite.c getc.c getchar.c gets.c iprintf.c \
- iscanf.c memcpy.c memmove.c memset.c perror.c printf.c \
- putc.c putchar.c puts.c remove.c rename.c rewind.c scanf.c \
- setbuf.c setvbuf.c siprintf.c siscanf.c sleep.c sniprintf.c \
- snprintf.c sprintf.c sscanf.c stdio.c strcat.c strchr.c strcmp.c \
+ fgetc.c fgetpos.c fgets.c fileno.c fiprintf.S fiscanf.S fopen.c \
+ fprintf.S fputc.c fputs.c fread.c freopen.c fscanf.S fseek.c \
+ fsetpos.c ftell.c fwrite.c getc.c getchar.c gets.c iprintf.S \
+ iscanf.S memcpy.c memmove.c memset.c perror.c printf.S \
+ putc.c putchar.c puts.c remove.c rename.c rewind.c scanf.S \
+ setbuf.c setvbuf.c siprintf.S siscanf.S sleep.c sniprintf.S \
+ snprintf.S sprintf.S sscanf.S stdio.c strcat.c strchr.c strcmp.c \
strcpy.c strcspn.c strlen.c strncat.c strncmp.c strncpy.c strpbrk.c \
strrchr.c strspn.c strxfrm.c tmpfile.c tmpnam.c ungetc.c usleep.c \
vfiprintf.c vfiscanf.c vfprintf.c vfscanf.c viprintf.c viscanf.c \
vprintf.c vscanf.c vsiprintf.c vsiscanf.c vsniprintf.c vsnprintf.c \
- vsprintf.c vsscanf.c
+ vsprintf.c vsscanf.c stack_reg_va.S
lib_a_CCASFLAGS = $(AM_CCASFLAGS)
lib_a_CFLAGS = $(AM_CFLAGS)
Index: newlib/libc/machine/spu/siscanf.c
===================================================================
RCS file: newlib/libc/machine/spu/siscanf.c
diff -N newlib/libc/machine/spu/siscanf.c
--- newlib/libc/machine/spu/siscanf.c 20 Feb 2007 20:58:38 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,2 +0,0 @@
-#define INTEGER_ONLY
-#include "sscanf.c"
Index: newlib/libc/machine/spu/fiscanf.c
===================================================================
RCS file: newlib/libc/machine/spu/fiscanf.c
diff -N newlib/libc/machine/spu/fiscanf.c
--- newlib/libc/machine/spu/fiscanf.c 20 Feb 2007 20:58:38 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,2 +0,0 @@
-#define INTEGER_ONLY
-#include "fscanf.c"
Index: newlib/libc/machine/spu/c99ppe.h
===================================================================
RCS file: /cvs/src/src/newlib/libc/machine/spu/c99ppe.h,v
retrieving revision 1.4
diff -u -r1.4 c99ppe.h
--- newlib/libc/machine/spu/c99ppe.h 4 Apr 2007 21:03:13 -0000 1.4
+++ newlib/libc/machine/spu/c99ppe.h 15 Aug 2007 10:42:23 -0000
@@ -30,11 +30,26 @@
Author: Joel Schopp <jschopp@austin.ibm.com>
*/
+#define SPE_C99_SIGNALCODE 0x2100
+
+#ifdef __ASSEMBLER__
+
+#define STACK_REGS 72 /* Number of registers preserved in stack
+ in case of variable argument API. */
+
+#define SPE_C99_VFPRINTF 0x23
+#define SPE_C99_VFSCANF 0x24
+#define SPE_C99_VPRINTF 0x25
+#define SPE_C99_VSCANF 0x26
+#define SPE_C99_VSNPRINTF 0x27
+#define SPE_C99_VSPRINTF 0x28
+#define SPE_C99_VSSCANF 0x29
+
+#else /* __ASSEMBLER__ */
+
#include <errno.h>
#include <sys/syscall.h>
-#define SPE_C99_SIGNALCODE 0x2100
-
#define SPE_C99_OP_SHIFT 24
#define SPE_C99_OP_MASK 0xff
#define SPE_C99_DATA_MASK 0xffffff
@@ -102,3 +117,5 @@
do { if ((ptr) && !(ptr)->__sdidinit) __sinit (ptr); } while (0)
#define CHECK_STD_INIT(ptr) /* currently, do nothing */
#define CHECK_STR_INIT(ptr) /* currently, do nothing */
+
+#endif /* __ASSEMBLER__ */
Index: newlib/libc/machine/spu/iscanf.c
===================================================================
RCS file: newlib/libc/machine/spu/iscanf.c
diff -N newlib/libc/machine/spu/iscanf.c
--- newlib/libc/machine/spu/iscanf.c 20 Feb 2007 20:58:38 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,2 +0,0 @@
-#define INTEGER_ONLY
-#include "scanf.c"
Index: newlib/libc/machine/spu/fscanf.c
===================================================================
RCS file: newlib/libc/machine/spu/fscanf.c
diff -N newlib/libc/machine/spu/fscanf.c
--- newlib/libc/machine/spu/fscanf.c 23 May 2007 21:41:17 -0000 1.4
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,80 +0,0 @@
-/*
-(C) Copyright IBM Corp. 2006
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
- * Neither the name of IBM nor the names of its contributors may be
-used to endorse or promote products derived from this software without
-specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-Author: Joel Schopp <jschopp@austin.ibm.com>
-*/
-
-#include <_ansi.h>
-#include <stdio.h>
-
-#include "c99ppe.h"
-
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-#ifdef INTEGER_ONLY
-# define fscanf fiscanf
-#endif
-
-typedef struct
-{
- int fp;
- unsigned int pad0[ 3 ];
- _CONST char* fmt;
- unsigned int pad1[ 3 ];
- va_list ap;
-} c99_vfscanf_t;
-
-#ifndef _REENT_ONLY
-
-fscanf(FILE *fp, _CONST char *fmt, ...)
-{
- int ret;
- c99_vfscanf_t args;
-
- CHECK_INIT(_REENT);
-
- args.fp = fp->_fp;
- args.fmt = (char*) fmt;
-#ifdef _HAVE_STDC
- va_start (args.ap, fmt);
-#else
- va_start (args.ap);
-#endif
-
-
- ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFSCANF, &args);
-
- va_end (args.ap);
- return ret;
-}
-#endif /* ! _REENT_ONLY */
Index: newlib/libc/machine/spu/siprintf.c
===================================================================
RCS file: newlib/libc/machine/spu/siprintf.c
diff -N newlib/libc/machine/spu/siprintf.c
--- newlib/libc/machine/spu/siprintf.c 20 Feb 2007 20:58:38 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,2 +0,0 @@
-#define INTEGER_ONLY
-#include "sprintf.c"
Index: newlib/libc/machine/spu/sprintf.S
===================================================================
RCS file: newlib/libc/machine/spu/sprintf.S
diff -N newlib/libc/machine/spu/sprintf.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newlib/libc/machine/spu/sprintf.S 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,56 @@
+/*
+ Copyright (c) 2007, Toshiba Corporation
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the names of Toshiba nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "c99ppe.h"
+
+#define SIGCODE SPE_C99_SIGNALCODE
+#define NAME sprintf
+#define PARMS 2
+#define OPCODE SPE_C99_VSPRINTF
+
+#define parms $2
+
+ .text
+ .align 4
+ GLOBL NAME
+NAME:
+ stqd $0, 16($sp) /* save caller address */
+ il parms, PARMS
+ brsl $0, __stack_reg_va /* save register to the stack frame */
+
+ il $3, SIGCODE /* signal code */
+ il $4, OPCODE /* op code */
+ ai $5, $sp, 16*2 /* data ($3 save address) */
+ brsl $0, __send_to_ppe
+
+ il $2, 16*(STACK_REGS+2+2)
+ a $sp, $sp, $2
+ lqd $0, 16($sp) /* load caller address */
+ bi $0 /* return to caller */
Index: newlib/libc/machine/spu/fprintf.S
===================================================================
RCS file: newlib/libc/machine/spu/fprintf.S
diff -N newlib/libc/machine/spu/fprintf.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newlib/libc/machine/spu/fprintf.S 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,63 @@
+/*
+ Copyright (c) 2007, Toshiba Corporation
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the names of Toshiba nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "c99ppe.h"
+
+#define SIGCODE SPE_C99_SIGNALCODE
+#define NAME fprintf
+#define PARMS 2
+#define OPCODE SPE_C99_VFPRINTF
+#define FP 3
+
+#define parms $2
+
+ .text
+ .align 4
+ GLOBL NAME
+NAME:
+ stqd $0, 16($sp) /* save caller address */
+ il parms, PARMS
+ brsl $0, __stack_reg_va /* save register to the stack frame */
+
+ brsl $0, __check_init
+ lqd $3, 16*(FP-1)($sp) /* $3 <- saved FP on the stack frame */
+ lqd $2, 0($3) /* FP = fp->_fp */
+ rotqby $2, $2, $3
+ stqd $2, 16*(FP-1)($sp) /* replace FP on the stack frame */
+
+ il $3, SIGCODE /* signal code */
+ il $4, OPCODE /* op code */
+ ai $5, $sp, 16*2 /* data ($3 save address) */
+ brsl $0, __send_to_ppe
+
+ il $2, 16*(STACK_REGS+2+2)
+ a $sp, $sp, $2
+ lqd $0, 16($sp) /* load caller address */
+ bi $0 /* return to caller */
Index: newlib/libc/machine/spu/siprintf.S
===================================================================
RCS file: newlib/libc/machine/spu/siprintf.S
diff -N newlib/libc/machine/spu/siprintf.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newlib/libc/machine/spu/siprintf.S 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,32 @@
+/*
+ Copyright (c) 2007, Toshiba Corporation
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the names of Toshiba nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#define sprintf siprintf
+#include "sprintf.S"
Index: newlib/libc/machine/spu/sniprintf.S
===================================================================
RCS file: newlib/libc/machine/spu/sniprintf.S
diff -N newlib/libc/machine/spu/sniprintf.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newlib/libc/machine/spu/sniprintf.S 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,32 @@
+/*
+ Copyright (c) 2007, Toshiba Corporation
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the names of Toshiba nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#define snprintf sniprintf
+#include "snprintf.S"
Index: newlib/libc/machine/spu/printf.S
===================================================================
RCS file: newlib/libc/machine/spu/printf.S
diff -N newlib/libc/machine/spu/printf.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newlib/libc/machine/spu/printf.S 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,56 @@
+/*
+ Copyright (c) 2007, Toshiba Corporation
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the names of Toshiba nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "c99ppe.h"
+
+#define SIGCODE SPE_C99_SIGNALCODE
+#define NAME printf
+#define PARMS 1
+#define OPCODE SPE_C99_VPRINTF
+
+#define parms $2
+
+ .text
+ .align 4
+ GLOBL NAME
+NAME:
+ stqd $0, 16($sp) /* save caller address */
+ il parms, PARMS
+ brsl $0, __stack_reg_va /* save register to the stack frame */
+
+ il $3, SIGCODE /* signal code */
+ il $4, OPCODE /* op code */
+ ai $5, $sp, 16*2 /* data ($3 save address) */
+ brsl $0, __send_to_ppe
+
+ il $2, 16*(STACK_REGS+2+2)
+ a $sp, $sp, $2
+ lqd $0, 16($sp) /* load caller address */
+ bi $0 /* return to caller */
Index: newlib/libc/machine/spu/stack_reg_va.S
===================================================================
RCS file: newlib/libc/machine/spu/stack_reg_va.S
diff -N newlib/libc/machine/spu/stack_reg_va.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newlib/libc/machine/spu/stack_reg_va.S 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,166 @@
+/*
+ Copyright (c) 2007, Toshiba Corporation
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the names of Toshiba nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+/*
+ * This file contains code use to construct a PIC, spu side, syscall
+ * function with variable parameters in accordance with the CBE ABI.
+ *
+ * This function is equivalent to constructing a va_list structure and
+ * calling the va_list form of the function. Therefore, for example,
+ * a printf function stack frame will look like this:
+ *
+ * | Stack | high memory
+ * | Parms |
+ * | |
+ * |------------|
+ * | Link Reg |
+ * |------------|
+ * | Back Chain |<-----. <---- input SP
+ * |------------| |
+ * | Reg 74 | |
+ * |------------| |
+ * | Reg 73 | |
+ * |------------| |
+ * // ... // |
+ * |------------| |
+ * | Reg 5 | |
+ * |------------| |
+ * | Reg 4 |<--. |
+ * |------------| | |
+ * va_list.| call_stack |------'
+ * |------------| |
+ * va_list.| next_arg |---'
+ * |------------|
+ * | format (r3)| <---- start of parameters
+ * |------------| |------------|
+ * | stack | | |
+ * | code | |(Back Chain)| <---- output SP
+ * | 1-3 qwords | <---- code_ptr `------------'
+ * `------------'
+ * low memory
+ *
+ * This was written in assembly so that it is smaller than what would
+ * be produced by using va_start.
+ */
+
+#include "c99ppe.h"
+
+#define parms $2
+
+#define offset $67
+#define flag $68
+#define regdec $69
+#define link $70
+
+#define code_ptr $71
+#define ptr $72
+#define inst $73
+#define tmp $74
+
+ .text
+ .global __stack_reg_va
+
+__stack_reg_va:
+
+ /* Save registers 69-74 explicitly so that we have some
+ * working registers.
+ */
+ stqd $74, 16*(-1)($sp)
+ stqd $73, 16*(-2)($sp)
+ stqd $72, 16*(-3)($sp)
+ stqd $71, 16*(-4)($sp)
+ stqd $70, 16*(-5)($sp)
+ stqd $69, 16*(-6)($sp)
+
+ /* Construct self-modifying stack code that saves the remaining
+ * volatile registers onto the stack.
+ */
+ il regdec, -1 /* for decrement register value in save instruction */
+ shlqbyi regdec, regdec, 12
+ il tmp, -(STACK_REGS+2+3)*16
+ a code_ptr, $sp, tmp
+ lqr tmp, save_regs_1 /* store stack code */
+ stqd tmp, 0(code_ptr)
+ lqr inst, save_regs_2
+ ai ptr, $sp, 16*(-6)
+ sync
+ bisl link, code_ptr /* branch to the constructed stack code */
+
+ /* Adjust pointer so that it points to the first variable
+ * argument on the stack.
+ */
+ ai offset, parms, -1 /* offset = parms - 1 */
+ mpyi offset, offset, 16 /* offset = offset * 16 */
+ a ptr, ptr, offset /* ptr = ptr + offset */
+
+ /* Store the va_list to the parameter list.
+ */
+ stqd $sp, 16*(-1)(ptr)
+ stqd ptr, 16*(-2)(ptr)
+
+ /* Make $3 store address.
+ */
+ ai offset, parms, 2 /* offset = parms + 2 */
+ mpyi offset, offset, -16 /* offset = offset * -16 */
+ a ptr, ptr, offset /* ptr = ptr + offset */
+
+ /* Save all the fixed (non-variable arguments on the stack)
+ */
+ ceqi flag, parms, 0x01 /* if(parms==1) flag=0xFFFFFFFF */
+ brnz flag, reg_3 /* if(flag!=0) jump */
+ ceqi flag, parms, 0x02 /* if(parms==2) flag=0xFFFFFFFF */
+ brnz flag, reg_4 /* if(flag!=0) jump */
+ stqd $5, 16*2(ptr)
+reg_4:
+ stqd $4, 16*1(ptr)
+reg_3:
+ stqd $3, 0(ptr)
+
+ il $3, -16*(STACK_REGS+2+2)
+ stqx $sp, $3, $sp /* save back chain */
+ a $sp, $sp, $3
+ bi $0 /* return to caller */
+
+/***************************** stack code *********************************************/
+
+ /* The following code is copied into the stack for re-entract,
+ * self-modified, code execution. This code copies the volatile
+ * registers into a va_list parameter array.
+ */
+ .balignl 16, 0
+save_regs_1:
+ stqd inst, 16(code_ptr) /* store instruction */
+ sync
+ a inst, inst, regdec /* decrement register number in the instruction */
+ ceqbi tmp, inst, 3 /* if (reg-num == 3) tmp = 0x000000FF 000..0 */
+save_regs_2:
+ stqd $68, -16(ptr)
+ ai ptr, ptr, -16
+ brz tmp, save_regs_1 /* if (tmp == 0) jump */
+ bi link /* finish to make va_list */
Index: newlib/libc/machine/spu/siscanf.S
===================================================================
RCS file: newlib/libc/machine/spu/siscanf.S
diff -N newlib/libc/machine/spu/siscanf.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newlib/libc/machine/spu/siscanf.S 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,32 @@
+/*
+ Copyright (c) 2007, Toshiba Corporation
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the names of Toshiba nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#define sscanf siscanf
+#include "sscanf.S"
Index: newlib/libc/machine/spu/fscanf.S
===================================================================
RCS file: newlib/libc/machine/spu/fscanf.S
diff -N newlib/libc/machine/spu/fscanf.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newlib/libc/machine/spu/fscanf.S 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,63 @@
+/*
+ Copyright (c) 2007, Toshiba Corporation
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the names of Toshiba nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "c99ppe.h"
+
+#define SIGCODE SPE_C99_SIGNALCODE
+#define NAME fscanf
+#define PARMS 2
+#define OPCODE SPE_C99_VFSCANF
+#define FP 3
+
+#define parms $2
+
+ .text
+ .align 4
+ GLOBL NAME
+NAME:
+ stqd $0, 16($sp) /* save caller address */
+ il parms, PARMS
+ brsl $0, __stack_reg_va /* save register to the stack frame */
+
+ brsl $0, __check_init
+ lqd $3, 16*(FP-1)($sp) /* $3 <- saved FP on the stack frame */
+ lqd $2, 0($3) /* FP = fp->_fp */
+ rotqby $2, $2, $3
+ stqd $2, 16*(FP-1)($sp) /* replace FP on the stack frame */
+
+ il $3, SIGCODE /* signal code */
+ il $4, OPCODE /* op code */
+ ai $5, $sp, 16*2 /* data ($3 save address) */
+ brsl $0, __send_to_ppe
+
+ il $2, 16*(STACK_REGS+2+2)
+ a $sp, $sp, $2
+ lqd $0, 16($sp) /* load caller address */
+ bi $0 /* return to caller */
Index: newlib/libc/machine/spu/sscanf.S
===================================================================
RCS file: newlib/libc/machine/spu/sscanf.S
diff -N newlib/libc/machine/spu/sscanf.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newlib/libc/machine/spu/sscanf.S 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,56 @@
+/*
+ Copyright (c) 2007, Toshiba Corporation
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the names of Toshiba nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "c99ppe.h"
+
+#define SIGCODE SPE_C99_SIGNALCODE
+#define NAME sscanf
+#define PARMS 2
+#define OPCODE SPE_C99_VSSCANF
+
+#define parms $2
+
+ .text
+ .align 4
+ GLOBL NAME
+NAME:
+ stqd $0, 16($sp) /* save caller address */
+ il parms, PARMS
+ brsl $0, __stack_reg_va /* save register to the stack frame */
+
+ il $3, SIGCODE /* signal code */
+ il $4, OPCODE /* op code */
+ ai $5, $sp, 16*2 /* data ($3 save address) */
+ brsl $0, __send_to_ppe
+
+ il $2, 16*(STACK_REGS+2+2)
+ a $sp, $sp, $2
+ lqd $0, 16($sp) /* load caller address */
+ bi $0 /* return to caller */
Index: newlib/libc/machine/spu/iprintf.S
===================================================================
RCS file: newlib/libc/machine/spu/iprintf.S
diff -N newlib/libc/machine/spu/iprintf.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newlib/libc/machine/spu/iprintf.S 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,32 @@
+/*
+ Copyright (c) 2007, Toshiba Corporation
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the names of Toshiba nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#define printf iprintf
+#include "printf.S"
Index: newlib/libc/machine/spu/iscanf.S
===================================================================
RCS file: newlib/libc/machine/spu/iscanf.S
diff -N newlib/libc/machine/spu/iscanf.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newlib/libc/machine/spu/iscanf.S 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,32 @@
+/*
+ Copyright (c) 2007, Toshiba Corporation
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the names of Toshiba nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#define scanf iscanf
+#include "scanf.S"
Index: newlib/libc/machine/spu/snprintf.S
===================================================================
RCS file: newlib/libc/machine/spu/snprintf.S
diff -N newlib/libc/machine/spu/snprintf.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newlib/libc/machine/spu/snprintf.S 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,56 @@
+/*
+ Copyright (c) 2007, Toshiba Corporation
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the names of Toshiba nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "c99ppe.h"
+
+#define SIGCODE SPE_C99_SIGNALCODE
+#define NAME snprintf
+#define PARMS 3
+#define OPCODE SPE_C99_VSNPRINTF
+
+#define parms $2
+
+ .text
+ .align 4
+ GLOBL NAME
+NAME:
+ stqd $0, 16($sp) /* save caller address */
+ il parms, PARMS
+ brsl $0, __stack_reg_va /* save register to the stack frame */
+
+ il $3, SIGCODE /* signal code */
+ il $4, OPCODE /* op code */
+ ai $5, $sp, 16*2 /* data ($3 save address) */
+ brsl $0, __send_to_ppe
+
+ il $2, 16*(STACK_REGS+2+2)
+ a $sp, $sp, $2
+ lqd $0, 16($sp) /* load caller address */
+ bi $0 /* return to caller */
Index: newlib/libc/machine/spu/scanf.S
===================================================================
RCS file: newlib/libc/machine/spu/scanf.S
diff -N newlib/libc/machine/spu/scanf.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newlib/libc/machine/spu/scanf.S 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,56 @@
+/*
+ Copyright (c) 2007, Toshiba Corporation
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the names of Toshiba nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "c99ppe.h"
+
+#define SIGCODE SPE_C99_SIGNALCODE
+#define NAME scanf
+#define PARMS 1
+#define OPCODE SPE_C99_VSCANF
+
+#define parms $2
+
+ .text
+ .align 4
+ GLOBL NAME
+NAME:
+ stqd $0, 16($sp) /* save caller address */
+ il parms, PARMS
+ brsl $0, __stack_reg_va /* save register to the stack frame */
+
+ il $3, SIGCODE /* signal code */
+ il $4, OPCODE /* op code */
+ ai $5, $sp, 16*2 /* data ($3 save address) */
+ brsl $0, __send_to_ppe
+
+ il $2, 16*(STACK_REGS+2+2)
+ a $sp, $sp, $2
+ lqd $0, 16($sp) /* load caller address */
+ bi $0 /* return to caller */
Index: newlib/libc/machine/spu/fiscanf.S
===================================================================
RCS file: newlib/libc/machine/spu/fiscanf.S
diff -N newlib/libc/machine/spu/fiscanf.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newlib/libc/machine/spu/fiscanf.S 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,32 @@
+/*
+ Copyright (c) 2007, Toshiba Corporation
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the names of Toshiba nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#define fscanf fiscanf
+#include "fscanf.S"
Index: newlib/libc/machine/spu/fiprintf.S
===================================================================
RCS file: newlib/libc/machine/spu/fiprintf.S
diff -N newlib/libc/machine/spu/fiprintf.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newlib/libc/machine/spu/fiprintf.S 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,32 @@
+/*
+ Copyright (c) 2007, Toshiba Corporation
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the names of Toshiba nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#define fprintf fiprintf
+#include "fprintf.S"
More information about the Newlib
mailing list