Index: newlib-1.15.0/newlib/libc/machine/spu/fopen.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/fopen.c
@@ -0,0 +1,39 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+#ifdef _HAVE_STDC
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+typedef struct
+{
+  char* fp;
+  unsigned int pad0[ 3 ];
+  char* mode;
+  unsigned int pad1[ 3 ];
+} c99_fopen_t;
+
+#ifndef _REENT_ONLY
+FILE *
+_DEFUN (fopen, (file, mode),
+	_CONST char *file _AND
+	_CONST char *mode)
+{
+  FILE** ret;
+  c99_fopen_t args;
+  args.fp = file;
+  args.mode = mode;
+  ret = (FILE**) &args;
+
+  /*  ret = vfprintf (_stdout_r (_REENT), fmt, ap);*/
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FOPEN, &args);
+
+  return *ret;
+}
+
+#endif /* ! _REENT_ONLY */
Index: newlib-1.15.0/newlib/libc/machine/spu/vfprintf.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/vfprintf.c
@@ -0,0 +1,43 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+#ifdef _HAVE_STDC
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+typedef struct
+{
+  FILE * fp;
+  unsigned int pad0[ 3 ];
+  char* fmt;
+  unsigned int pad1[ 3 ];
+  va_list ap;
+} c99_vfprintf_t;
+
+#ifndef _REENT_ONLY
+
+int
+_DEFUN (vfprintf, (fp, fmt0, ap),
+	FILE * fp _AND
+	_CONST char *fmt0 _AND
+	va_list ap)
+{
+  int* ret;
+  c99_vfprintf_t args;
+  ret = (int*) &args;
+
+  args.fp = fp;
+  args.fmt = (char*) fmt0;
+  va_copy(args.ap,ap);
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFPRINTF, &args);
+
+  return *ret;
+}
+
+#endif /* ! _REENT_ONLY */
Index: newlib-1.15.0/newlib/libc/machine/spu/clearerr.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/clearerr.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+#undef clearerr
+
+_VOID
+_DEFUN (clearerr, (fp),
+	FILE * fp)
+
+{
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_CLEARERR, &fp);
+
+  return;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/fclose.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/fclose.c
@@ -0,0 +1,25 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+#ifdef _HAVE_STDC
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+#ifndef _REENT_ONLY
+int
+_DEFUN (fclose, (fp),
+	FILE * fp)
+{
+  int* ret = (int*) &fp;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FCLOSE, &fp);
+
+  return *ret;
+}
+
+#endif /* ! _REENT_ONLY */
Index: newlib-1.15.0/newlib/libc/machine/spu/feof.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/feof.c
@@ -0,0 +1,18 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+#undef feof
+
+int
+_DEFUN (feof, (fp),
+	FILE * fp)
+{
+  int* result;
+  result = (int*)&fp;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FEOF, &fp);
+
+
+  return *result;
+}
Index: newlib-1.15.0/newlib/libc/machine/spu/ferror.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/ferror.c
@@ -0,0 +1,20 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+#undef feof
+
+#undef ferror
+
+int
+_DEFUN (ferror, (fp),
+	FILE * fp)
+{
+  int* result;
+  result = (int*)&fp;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FERROR, &fp);
+
+
+  return *result;
+}
Index: newlib-1.15.0/newlib/libc/machine/spu/fflush.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/fflush.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+int
+_DEFUN (fflush, (fp),
+	FILE * fp)
+{
+  int* result;
+  result = (int*)&fp;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FFLUSH, &fp);
+
+
+  return *result;
+}
Index: newlib-1.15.0/newlib/libc/machine/spu/fgetc.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/fgetc.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+int
+_DEFUN (fgetc, (fp),
+	FILE * fp)
+{
+  int* result;
+  result = (int*)&fp;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETC, &fp);
+
+
+  return *result;
+}
Index: newlib-1.15.0/newlib/libc/machine/spu/fgetpos.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/fgetpos.c
@@ -0,0 +1,28 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+typedef struct
+{
+  FILE * fp;
+  unsigned int pad0[ 3 ];
+  _fpos_t * pos;
+} c99_fgetpos_t;
+
+int
+_DEFUN (fgetpos, (fp, pos),
+	FILE * fp _AND
+	_fpos_t * pos)
+{
+  c99_fgetpos_t arg;
+  int* result;
+  result = (int*)&fp;
+
+  arg.fp = fp;
+  arg.pos = pos;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETPOS, &arg);
+
+
+  return *result;
+}
Index: newlib-1.15.0/newlib/libc/machine/spu/fgets.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/fgets.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+typedef struct
+{
+  char *buf;
+  unsigned int pad0[3];
+  int n;
+  unsigned int pad1[3];
+  FILE *fp;
+} c99_fgets_t;
+
+char *
+_DEFUN (fgets, (buf, n, fp),
+	char *buf _AND
+	int n _AND
+	FILE * fp)
+{
+  char** ret;
+  c99_fgets_t args;
+  args.buf = buf;
+  args.n = n;
+  args.fp = fp;
+  ret = (char**) &args;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETS, &args);
+
+  return *ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/fileno.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/fileno.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+
+int
+_DEFUN (fileno, (fp),
+	FILE *fp)
+
+{
+  int *ret = (int*)&fp;
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FILENO, &fp);
+
+  return *ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/fputc.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/fputc.c
@@ -0,0 +1,30 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+typedef struct
+{
+  int ch;
+  unsigned int pad0[ 3 ];
+  FILE* fp;
+  unsigned int pad1[ 3 ];
+} c99_fputc_t;
+
+int
+fputc (c, fp)
+     int c;
+     register FILE *fp;
+{
+  int* ret;
+  c99_fputc_t args;
+  args.ch = c;
+  args.fp = fp;
+  ret = (int*)&args;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FPUTC, &args);
+
+  return *ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/fputs.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/fputs.c
@@ -0,0 +1,30 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+typedef struct
+{
+  char* s;
+  unsigned int pad0[ 3 ];
+  FILE* fp;
+  unsigned int pad1[ 3 ];
+} c99_fputs_t;
+
+int
+_DEFUN (fputs, (s, fp),
+	char _CONST * s _AND
+	FILE * fp)
+{
+  int* ret;
+  c99_fputs_t args;
+  args.s = s;
+  args.fp = fp;
+  ret = (int*)&args;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FPUTS, &args);
+
+  return *ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/fread.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/fread.c
@@ -0,0 +1,36 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+typedef struct
+{
+  char* buf;
+  unsigned int pad0[ 3 ];
+  size_t size;
+  unsigned int pad1[ 3 ];
+  size_t count;
+  unsigned int pad2[ 3 ];
+  FILE *fp;
+} c99_fread_t;
+
+size_t
+_DEFUN (fread, (buf, size, count, fp),
+	_PTR buf _AND
+	size_t size _AND
+	size_t count _AND
+	FILE * fp)
+{
+  size_t* ret;
+  c99_fread_t args;
+  args.buf = buf;
+  args.size = size;
+  args.count = count;
+  args.fp = fp;
+  ret = (size_t*) &args;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FREAD, &args);
+
+  return *ret;
+}
Index: newlib-1.15.0/newlib/libc/machine/spu/freopen.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/freopen.c
@@ -0,0 +1,32 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+typedef struct
+{
+  char *file;
+  unsigned int pad0[ 3 ];
+  char *mode;
+  unsigned int pad1[ 3 ];
+  FILE *fp;
+} c99_freopen_t;
+
+FILE *
+_DEFUN (freopen, (file, mode, fp),
+	const char *file _AND
+	const char *mode _AND
+	FILE *fp)
+{
+  FILE **ret;
+  c99_freopen_t args;
+  args.file = file;
+  args.mode = mode;
+  args.fp = fp;
+  ret = (FILE**) &args;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FREOPEN, &args);
+
+  return *ret;
+}
Index: newlib-1.15.0/newlib/libc/machine/spu/fseek.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/fseek.c
@@ -0,0 +1,33 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+typedef struct
+{
+  FILE* fp;
+  unsigned int pad0[ 3 ];
+  long offset;
+  unsigned int pad1[ 3 ];
+  int whence;
+} c99_fseek_t;
+
+int
+_DEFUN (fseek, (fp, offset, whence),
+     register FILE *fp _AND
+     long offset _AND
+     int whence)
+{
+  int* ret;
+  c99_fseek_t args;
+  args.fp = fp;
+  args.offset = offset;
+  args.whence = whence;
+  ret = (int*)&args;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FSEEK, &args);
+
+  return *ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/fsetpos.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/fsetpos.c
@@ -0,0 +1,29 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+typedef struct
+{
+  FILE* fp;
+  unsigned int pad0[ 3 ];
+  _fpos_t *pos;
+} c99_fsetpos_t;
+
+int
+_DEFUN (fsetpos, (iop, pos),
+	FILE * iop _AND
+	_CONST _fpos_t * pos)
+{
+  int* ret;
+  c99_fsetpos_t args;
+  args.fp = iop;
+  args.pos = pos;
+  ret = (int*)&args;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FSETPOS, &args);
+
+  return *ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/ftell.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/ftell.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+
+long
+_DEFUN (ftell, (fp),
+	FILE * fp)
+{
+  long *ret = (long*)&fp;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FTELL, &fp);
+
+  return *ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/fwrite.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/fwrite.c
@@ -0,0 +1,36 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+typedef struct
+{
+  char* buf;
+  unsigned int pad0[ 3 ];
+  size_t size;
+  unsigned int pad1[ 3 ];
+  size_t count;
+  unsigned int pad2[ 3 ];
+  FILE *fp;
+} c99_fwrite_t;
+
+size_t
+_DEFUN (fwrite, (buf, size, count, fp),
+	_CONST _PTR buf _AND
+	size_t size _AND
+	size_t count _AND
+	FILE * fp)
+{
+  size_t* ret;
+  c99_fwrite_t args;
+  args.buf = buf;
+  args.size = size;
+  args.count = count;
+  args.fp = fp;
+  ret = (size_t*) &args;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FWRITE, &args);
+
+  return *ret;
+}
Index: newlib-1.15.0/newlib/libc/machine/spu/getc.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/getc.c
@@ -0,0 +1,21 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+/*
+ * A subroutine version of the macro getc.
+ */
+
+#undef getc
+
+int
+getc (fp)
+     FILE *fp;
+{
+  int* ret;
+  ret = (int*)&fp;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETC, &fp);
+
+  return *ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/getchar.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/getchar.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+#undef getchar
+
+int
+getchar ()
+{
+  int ret;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETCHAR, &ret);
+
+  return ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/gets.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/gets.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+char *
+gets (buf)
+     char *buf;
+{
+
+  /* The return value gets written over buf
+   */
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETS, &buf);
+
+  return buf;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/remove.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/remove.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+int
+remove (filename)
+     _CONST char *filename;
+{
+
+  /* The return value gets written over buf
+   */
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_REMOVE, &filename);
+
+  return (int)filename;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/rename.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/rename.c
@@ -0,0 +1,29 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+typedef struct
+{
+  char *old;
+  unsigned int pad0[ 3 ];
+  char *new;
+  unsigned int pad1[ 3 ];
+} c99_rename_t;
+
+int
+rename (old, new)
+     _CONST char *old;
+     _CONST char *new;
+{
+  int *ret;
+  c99_rename_t args;
+  args.old = old;
+  args.new = new;
+  ret = (int*) &args;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_RENAME, &args);
+
+  return *ret;
+}
Index: newlib-1.15.0/newlib/libc/machine/spu/rewind.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/rewind.c
@@ -0,0 +1,13 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+void
+_DEFUN (rewind, (fp),
+	FILE * fp)
+{
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_REWIND, &fp);
+
+  return;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/setbuf.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/setbuf.c
@@ -0,0 +1,28 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+typedef struct
+{
+  FILE* fp;
+  unsigned int pad0[ 3 ];
+  char *buf;
+  unsigned int pad1[ 3 ];
+} c99_setbuf_t;
+
+void
+_DEFUN (setbuf, (fp, buf),
+	FILE * fp _AND
+	char *buf)
+{
+  c99_setbuf_t args;
+  args.fp = fp;
+  args.buf = buf;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_SETBUF, &args);
+
+  return;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/setvbuf.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/setvbuf.c
@@ -0,0 +1,38 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+typedef struct
+{
+  FILE* fp;
+  unsigned int pad0[ 3 ];
+  char *buf;
+  unsigned int pad1[ 3 ];
+  int mode;
+  unsigned int pad2[ 3 ];
+  size_t size;
+  unsigned int pad3[ 3 ];
+} c99_setvbuf_t;
+
+int
+_DEFUN (setvbuf, (fp, buf, mode, size),
+	FILE * fp _AND
+	char *buf _AND
+	int mode _AND
+	size_t size)
+{
+  int* ret;
+  c99_setvbuf_t args;
+  args.fp = fp;
+  args.buf = buf;
+  args.mode = mode;
+  args.size = size;
+  ret = (int*)&args;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_SETVBUF, &args);
+
+  return *ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/tmpfile.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/tmpfile.c
@@ -0,0 +1,14 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+FILE *
+_DEFUN_VOID (tmpfile)
+{
+  FILE* ret;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_TMPFILE, &ret);
+
+  return ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/tmpnam.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/tmpnam.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+char *
+_DEFUN (tmpnam, (s),
+	char *s)
+{
+  char **ret = &s;
+  /* The return value gets written over buf
+   */
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_TMPNAM, &s);
+
+  return *ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/ungetc.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/ungetc.c
@@ -0,0 +1,30 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+typedef struct
+{
+  int c;
+  unsigned int pad0[ 3 ];
+  FILE* fp;
+  unsigned int pad1[ 3 ];
+} c99_ungetc_t;
+
+int
+ungetc (c, fp)
+     int c;
+     register FILE *fp;
+{
+  int* ret;
+  c99_ungetc_t args;
+  args.c = c;
+  args.fp = fp;
+  ret = (int*)&args;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_UNGETC, &args);
+
+  return *ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/vfscanf.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/vfscanf.c
@@ -0,0 +1,43 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+#ifdef _HAVE_STDC
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+typedef struct
+{
+  FILE * fp;
+  unsigned int pad0[ 3 ];
+  char* fmt;
+  unsigned int pad1[ 3 ];
+  va_list ap;
+} c99_vfscanf_t;
+
+#ifndef _REENT_ONLY
+
+int
+_DEFUN (vfscanf, (fp, fmt, ap),
+    FILE *fp _AND
+    _CONST char *fmt _AND
+    va_list ap)
+{
+  int* ret;
+  c99_vfscanf_t args;
+  ret = (int*) &args;
+
+  args.fp = fp;
+  args.fmt = (char*) fmt;
+  va_copy(args.ap,ap);
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFSCANF, &args);
+
+  return *ret;
+}
+
+#endif /* ! _REENT_ONLY */
Index: newlib-1.15.0/newlib/libc/machine/spu/vsscanf.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/vsscanf.c
@@ -0,0 +1,39 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+#ifdef _HAVE_STDC
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+typedef struct
+{
+  char *str;
+  unsigned int pad0[ 3 ];
+  char *fmt;
+  unsigned int pad1[ 3 ];
+  va_list ap;
+} c99_vsscanf_t;
+
+int
+_DEFUN (vsscanf, (str, fmt, ap),
+    _CONST char *str _AND
+    _CONST char *fmt _AND
+    va_list ap)
+{
+  int* ret;
+  c99_vsscanf_t args;
+  ret = (int*) &args;
+
+  args.str = str;
+  args.fmt = (char*) fmt;
+  va_copy(args.ap,ap);
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSSCANF, &args);
+
+  return *ret;
+}
Index: newlib-1.15.0/newlib/libc/machine/spu/putc.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/putc.c
@@ -0,0 +1,32 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+typedef struct
+{
+  int ch;
+  unsigned int pad0[ 3 ];
+  FILE* fp;
+  unsigned int pad1[ 3 ];
+} c99_putc_t;
+
+#undef putc
+
+int
+putc (c, fp)
+     int c;
+     register FILE *fp;
+{
+  int* ret;
+  c99_putc_t args;
+  args.ch = c;
+  args.fp = fp;
+  ret = (int*)&args;
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTC, &args);
+
+  return *ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/vscanf.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/vscanf.c
@@ -0,0 +1,39 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+#ifdef _HAVE_STDC
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+typedef struct
+{
+  char* fmt;
+  unsigned int pad0[ 3 ];
+  va_list ap;
+} c99_vscanf_t;
+
+#ifndef _REENT_ONLY
+
+int
+_DEFUN (vscanf, (fmt, ap),
+     _CONST char *fmt _AND
+     va_list ap)
+{
+  int* ret;
+  c99_vscanf_t args;
+  ret = (int*) &args;
+
+  args.fmt = (char*) fmt;
+  va_copy(args.ap,ap);
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSCANF, &args);
+
+  return *ret;
+}
+
+#endif /* ! _REENT_ONLY */
Index: newlib-1.15.0/newlib/libc/machine/spu/Makefile.in
===================================================================
--- newlib-1.15.0.orig/newlib/libc/machine/spu/Makefile.in
+++ newlib-1.15.0/newlib/libc/machine/spu/Makefile.in
@@ -51,7 +51,27 @@ DIST_COMMON = $(srcdir)/../../../../conf
 	$(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 \
+	$(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 $(srcdir)/../../../../compile \
+	$(srcdir)/../../../../compile $(srcdir)/../../../../compile \
+	$(srcdir)/../../../../compile $(srcdir)/../../../../compile \
+	$(srcdir)/../../../../compile $(srcdir)/../../../../compile
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/../../../acinclude.m4 \
@@ -77,7 +97,28 @@ am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT
 	lib_a-strxfrm.$(OBJEXT) lib_a-printf.$(OBJEXT) \
 	lib_a-perror.$(OBJEXT) lib_a-putchar.$(OBJEXT) \
 	lib_a-puts.$(OBJEXT) lib_a-vsnprintf.$(OBJEXT) \
-	lib_a-vprintf.$(OBJEXT) lib_a-vsprintf.$(OBJEXT)
+	lib_a-vprintf.$(OBJEXT) lib_a-vsprintf.$(OBJEXT) \
+	lib_a-clearerr.$(OBJEXT) lib_a-fclose.$(OBJEXT) \
+	lib_a-feof.$(OBJEXT) lib_a-ferror.$(OBJEXT) \
+	lib_a-fflush.$(OBJEXT) lib_a-fgetc.$(OBJEXT) \
+	lib_a-fgetpos.$(OBJEXT) lib_a-fgets.$(OBJEXT) \
+	lib_a-fileno.$(OBJEXT) lib_a-fopen.$(OBJEXT) \
+	lib_a-fprintf.$(OBJEXT) lib_a-fputc.$(OBJEXT) \
+	lib_a-fputs.$(OBJEXT) lib_a-fread.$(OBJEXT) \
+	lib_a-freopen.$(OBJEXT) lib_a-fscanf.$(OBJEXT) \
+	lib_a-fseek.$(OBJEXT) lib_a-fsetpos.$(OBJEXT) \
+	lib_a-ftell.$(OBJEXT) lib_a-fwrite.$(OBJEXT) \
+	lib_a-getc.$(OBJEXT) lib_a-getchar.$(OBJEXT) \
+	lib_a-gets.$(OBJEXT) lib_a-putc.$(OBJEXT) \
+	lib_a-remove.$(OBJEXT) lib_a-rename.$(OBJEXT) \
+	lib_a-rewind.$(OBJEXT) lib_a-scanf.$(OBJEXT) \
+	lib_a-setbuf.$(OBJEXT) lib_a-setvbuf.$(OBJEXT) \
+	lib_a-snprintf.$(OBJEXT) lib_a-sprintf.$(OBJEXT) \
+	lib_a-sscanf.$(OBJEXT) lib_a-tmpfile.$(OBJEXT) \
+	lib_a-tmpnam.$(OBJEXT) lib_a-ungetc.$(OBJEXT) \
+	lib_a-vfprintf.$(OBJEXT) lib_a-vfscanf.$(OBJEXT) \
+	lib_a-vscanf.$(OBJEXT) lib_a-vsscanf.$(OBJEXT) \
+	lib_a-wbuf.$(OBJEXT)
 lib_a_OBJECTS = $(am_lib_a_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir)
 depcomp =
@@ -202,7 +243,7 @@ AUTOMAKE_OPTIONS = cygnus
 INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
 noinst_LIBRARIES = lib.a
 AM_CCASFLAGS = $(INCLUDES)
-lib_a_SOURCES = setjmp.S memcpy.c memmove.c memset.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 printf.c perror.c putchar.c puts.c vsnprintf.c vprintf.c vsprintf.c
+lib_a_SOURCES = setjmp.S memcpy.c memmove.c memset.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 printf.c perror.c putchar.c puts.c vsnprintf.c vprintf.c vsprintf.c clearerr.c fclose.c feof.c ferror.c fflush.c fgetc.c fgetpos.c fgets.c fileno.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 putc.c remove.c rename.c rewind.c scanf.c setbuf.c setvbuf.c snprintf.c sprintf.c sscanf.c tmpfile.c tmpnam.c ungetc.c vfprintf.c vfscanf.c vscanf.c vsscanf.c wbuf.c
 lib_a_CCASFLAGS = $(AM_CCASFLAGS)
 lib_a_CFLAGS = $(AM_CFLAGS)
 ACLOCAL_AMFLAGS = -I ../../.. 
@@ -414,6 +455,252 @@ lib_a-vsprintf.o: vsprintf.c
 
 lib_a-vsprintf.obj: vsprintf.c
 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-vsprintf.obj `if test -f 'vsprintf.c'; then $(CYGPATH_W) 'vsprintf.c'; else $(CYGPATH_W) '$(srcdir)/vsprintf.c'; fi`
+
+lib_a-clearerr.o: clearerr.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-clearerr.o `test -f 'clearerr.c' || echo '$(srcdir)/'`clearerr.c
+
+lib_a-clearerr.obj: clearerr.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-clearerr.obj `if test -f 'clearerr.c'; then $(CYGPATH_W) 'clearerr.c'; else $(CYGPATH_W) '$(srcdir)/clearerr.c'; fi`
+
+lib_a-fclose.o: fclose.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fclose.o `test -f 'fclose.c' || echo '$(srcdir)/'`fclose.c
+
+lib_a-fclose.obj: fclose.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fclose.obj `if test -f 'fclose.c'; then $(CYGPATH_W) 'fclose.c'; else $(CYGPATH_W) '$(srcdir)/fclose.c'; fi`
+
+lib_a-feof.o: feof.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feof.o `test -f 'feof.c' || echo '$(srcdir)/'`feof.c
+
+lib_a-feof.obj: feof.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feof.obj `if test -f 'feof.c'; then $(CYGPATH_W) 'feof.c'; else $(CYGPATH_W) '$(srcdir)/feof.c'; fi`
+
+lib_a-ferror.o: ferror.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-ferror.o `test -f 'ferror.c' || echo '$(srcdir)/'`ferror.c
+
+lib_a-ferror.obj: ferror.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-ferror.obj `if test -f 'ferror.c'; then $(CYGPATH_W) 'ferror.c'; else $(CYGPATH_W) '$(srcdir)/ferror.c'; fi`
+
+lib_a-fflush.o: fflush.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fflush.o `test -f 'fflush.c' || echo '$(srcdir)/'`fflush.c
+
+lib_a-fflush.obj: fflush.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fflush.obj `if test -f 'fflush.c'; then $(CYGPATH_W) 'fflush.c'; else $(CYGPATH_W) '$(srcdir)/fflush.c'; fi`
+
+lib_a-fgetc.o: fgetc.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fgetc.o `test -f 'fgetc.c' || echo '$(srcdir)/'`fgetc.c
+
+lib_a-fgetc.obj: fgetc.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fgetc.obj `if test -f 'fgetc.c'; then $(CYGPATH_W) 'fgetc.c'; else $(CYGPATH_W) '$(srcdir)/fgetc.c'; fi`
+
+lib_a-fgetpos.o: fgetpos.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fgetpos.o `test -f 'fgetpos.c' || echo '$(srcdir)/'`fgetpos.c
+
+lib_a-fgetpos.obj: fgetpos.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fgetpos.obj `if test -f 'fgetpos.c'; then $(CYGPATH_W) 'fgetpos.c'; else $(CYGPATH_W) '$(srcdir)/fgetpos.c'; fi`
+
+lib_a-fgets.o: fgets.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fgets.o `test -f 'fgets.c' || echo '$(srcdir)/'`fgets.c
+
+lib_a-fgets.obj: fgets.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fgets.obj `if test -f 'fgets.c'; then $(CYGPATH_W) 'fgets.c'; else $(CYGPATH_W) '$(srcdir)/fgets.c'; fi`
+
+lib_a-fileno.o: fileno.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fileno.o `test -f 'fileno.c' || echo '$(srcdir)/'`fileno.c
+
+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-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
+
+lib_a-fputc.obj: fputc.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fputc.obj `if test -f 'fputc.c'; then $(CYGPATH_W) 'fputc.c'; else $(CYGPATH_W) '$(srcdir)/fputc.c'; fi`
+
+lib_a-fputs.o: fputs.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fputs.o `test -f 'fputs.c' || echo '$(srcdir)/'`fputs.c
+
+lib_a-fputs.obj: fputs.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fputs.obj `if test -f 'fputs.c'; then $(CYGPATH_W) 'fputs.c'; else $(CYGPATH_W) '$(srcdir)/fputs.c'; fi`
+
+lib_a-fread.o: fread.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fread.o `test -f 'fread.c' || echo '$(srcdir)/'`fread.c
+
+lib_a-fread.obj: fread.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fread.obj `if test -f 'fread.c'; then $(CYGPATH_W) 'fread.c'; else $(CYGPATH_W) '$(srcdir)/fread.c'; fi`
+
+lib_a-freopen.o: freopen.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-freopen.o `test -f 'freopen.c' || echo '$(srcdir)/'`freopen.c
+
+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
+
+lib_a-fseek.obj: fseek.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fseek.obj `if test -f 'fseek.c'; then $(CYGPATH_W) 'fseek.c'; else $(CYGPATH_W) '$(srcdir)/fseek.c'; fi`
+
+lib_a-fsetpos.o: fsetpos.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fsetpos.o `test -f 'fsetpos.c' || echo '$(srcdir)/'`fsetpos.c
+
+lib_a-fsetpos.obj: fsetpos.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fsetpos.obj `if test -f 'fsetpos.c'; then $(CYGPATH_W) 'fsetpos.c'; else $(CYGPATH_W) '$(srcdir)/fsetpos.c'; fi`
+
+lib_a-ftell.o: ftell.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-ftell.o `test -f 'ftell.c' || echo '$(srcdir)/'`ftell.c
+
+lib_a-ftell.obj: ftell.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-ftell.obj `if test -f 'ftell.c'; then $(CYGPATH_W) 'ftell.c'; else $(CYGPATH_W) '$(srcdir)/ftell.c'; fi`
+
+lib_a-fwrite.o: fwrite.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fwrite.o `test -f 'fwrite.c' || echo '$(srcdir)/'`fwrite.c
+
+lib_a-fwrite.obj: fwrite.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fwrite.obj `if test -f 'fwrite.c'; then $(CYGPATH_W) 'fwrite.c'; else $(CYGPATH_W) '$(srcdir)/fwrite.c'; fi`
+
+lib_a-getc.o: getc.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-getc.o `test -f 'getc.c' || echo '$(srcdir)/'`getc.c
+
+lib_a-getc.obj: getc.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-getc.obj `if test -f 'getc.c'; then $(CYGPATH_W) 'getc.c'; else $(CYGPATH_W) '$(srcdir)/getc.c'; fi`
+
+lib_a-getchar.o: getchar.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-getchar.o `test -f 'getchar.c' || echo '$(srcdir)/'`getchar.c
+
+lib_a-getchar.obj: getchar.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-getchar.obj `if test -f 'getchar.c'; then $(CYGPATH_W) 'getchar.c'; else $(CYGPATH_W) '$(srcdir)/getchar.c'; fi`
+
+lib_a-gets.o: gets.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-gets.o `test -f 'gets.c' || echo '$(srcdir)/'`gets.c
+
+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-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
+
+lib_a-putc.obj: putc.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-putc.obj `if test -f 'putc.c'; then $(CYGPATH_W) 'putc.c'; else $(CYGPATH_W) '$(srcdir)/putc.c'; fi`
+
+lib_a-remove.o: remove.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-remove.o `test -f 'remove.c' || echo '$(srcdir)/'`remove.c
+
+lib_a-remove.obj: remove.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-remove.obj `if test -f 'remove.c'; then $(CYGPATH_W) 'remove.c'; else $(CYGPATH_W) '$(srcdir)/remove.c'; fi`
+
+lib_a-rename.o: rename.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-rename.o `test -f 'rename.c' || echo '$(srcdir)/'`rename.c
+
+lib_a-rename.obj: rename.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-rename.obj `if test -f 'rename.c'; then $(CYGPATH_W) 'rename.c'; else $(CYGPATH_W) '$(srcdir)/rename.c'; fi`
+
+lib_a-rewind.o: rewind.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-rewind.o `test -f 'rewind.c' || echo '$(srcdir)/'`rewind.c
+
+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
+
+lib_a-setbuf.obj: setbuf.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-setbuf.obj `if test -f 'setbuf.c'; then $(CYGPATH_W) 'setbuf.c'; else $(CYGPATH_W) '$(srcdir)/setbuf.c'; fi`
+
+lib_a-setvbuf.o: setvbuf.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-setvbuf.o `test -f 'setvbuf.c' || echo '$(srcdir)/'`setvbuf.c
+
+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-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-tmpfile.o: tmpfile.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-tmpfile.o `test -f 'tmpfile.c' || echo '$(srcdir)/'`tmpfile.c
+
+lib_a-tmpfile.obj: tmpfile.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-tmpfile.obj `if test -f 'tmpfile.c'; then $(CYGPATH_W) 'tmpfile.c'; else $(CYGPATH_W) '$(srcdir)/tmpfile.c'; fi`
+
+lib_a-tmpnam.o: tmpnam.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-tmpnam.o `test -f 'tmpnam.c' || echo '$(srcdir)/'`tmpnam.c
+
+lib_a-tmpnam.obj: tmpnam.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-tmpnam.obj `if test -f 'tmpnam.c'; then $(CYGPATH_W) 'tmpnam.c'; else $(CYGPATH_W) '$(srcdir)/tmpnam.c'; fi`
+
+lib_a-ungetc.o: ungetc.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-ungetc.o `test -f 'ungetc.c' || echo '$(srcdir)/'`ungetc.c
+
+lib_a-ungetc.obj: ungetc.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-ungetc.obj `if test -f 'ungetc.c'; then $(CYGPATH_W) 'ungetc.c'; else $(CYGPATH_W) '$(srcdir)/ungetc.c'; fi`
+
+lib_a-vfprintf.o: vfprintf.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-vfprintf.o `test -f 'vfprintf.c' || echo '$(srcdir)/'`vfprintf.c
+
+lib_a-vfprintf.obj: vfprintf.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-vfprintf.obj `if test -f 'vfprintf.c'; then $(CYGPATH_W) 'vfprintf.c'; else $(CYGPATH_W) '$(srcdir)/vfprintf.c'; fi`
+
+lib_a-vfscanf.o: vfscanf.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-vfscanf.o `test -f 'vfscanf.c' || echo '$(srcdir)/'`vfscanf.c
+
+lib_a-vfscanf.obj: vfscanf.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-vfscanf.obj `if test -f 'vfscanf.c'; then $(CYGPATH_W) 'vfscanf.c'; else $(CYGPATH_W) '$(srcdir)/vfscanf.c'; fi`
+
+lib_a-vscanf.o: vscanf.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-vscanf.o `test -f 'vscanf.c' || echo '$(srcdir)/'`vscanf.c
+
+lib_a-vscanf.obj: vscanf.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-vscanf.obj `if test -f 'vscanf.c'; then $(CYGPATH_W) 'vscanf.c'; else $(CYGPATH_W) '$(srcdir)/vscanf.c'; fi`
+
+lib_a-vsscanf.o: vsscanf.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-vsscanf.o `test -f 'vsscanf.c' || echo '$(srcdir)/'`vsscanf.c
+
+lib_a-vsscanf.obj: vsscanf.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-vsscanf.obj `if test -f 'vsscanf.c'; then $(CYGPATH_W) 'vsscanf.c'; else $(CYGPATH_W) '$(srcdir)/vsscanf.c'; fi`
+
+lib_a-wbuf.o: wbuf.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wbuf.o `test -f 'wbuf.c' || echo '$(srcdir)/'`wbuf.c
+
+lib_a-wbuf.obj: wbuf.c
+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wbuf.obj `if test -f 'wbuf.c'; then $(CYGPATH_W) 'wbuf.c'; else $(CYGPATH_W) '$(srcdir)/wbuf.c'; fi`
 uninstall-info-am:
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
Index: newlib-1.15.0/newlib/libc/machine/spu/fprintf.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/fprintf.c
@@ -0,0 +1,42 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+#ifdef _HAVE_STDC
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+typedef struct
+{
+  FILE * fp;
+  unsigned int pad0[ 3 ];
+  char* fmt;
+  unsigned int pad1[ 3 ];
+  va_list ap;
+} c99_fprintf_t;
+
+int
+fprintf(FILE * fp, _CONST char *fmt,...)
+{
+  int* ret;
+  c99_fprintf_t args;
+  ret = (int*) &args;
+
+  args.fp = fp;
+  args.fmt = (char*) fmt;
+
+#ifdef _HAVE_STDC
+  va_start (args.ap, args.fmt);
+#else
+  va_start (args.ap);
+#endif
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFPRINTF, &args);
+
+  va_end (args.ap);
+  return *ret;
+}
Index: newlib-1.15.0/newlib/libc/machine/spu/fscanf.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/fscanf.c
@@ -0,0 +1,42 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+#ifdef _HAVE_STDC
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+typedef struct
+{
+  FILE * fp;
+  unsigned int pad0[ 3 ];
+  char* fmt;
+  unsigned int pad1[ 3 ];
+  va_list ap;
+} c99_vfscanf_t;
+
+fscanf(FILE *fp, _CONST char *fmt, ...)
+{
+  int* ret;
+  c99_vfscanf_t args;
+  ret = (int*) &args;
+
+  args.fp = fp;
+  args.fmt = (char*) fmt;
+#ifdef _HAVE_STDC
+  va_start (args.ap, args.fmt);
+#else
+  va_start (args.ap);
+#endif
+
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFSCANF, &args);
+
+  va_end (args.ap);
+  return *ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/scanf.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/scanf.c
@@ -0,0 +1,39 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+#ifdef _HAVE_STDC
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+typedef struct
+{
+  char* fmt;
+  unsigned int pad0[ 3 ];
+  va_list ap;
+} c99_vscanf_t;
+
+scanf(_CONST char *fmt, ...)
+{
+  int* ret;
+  c99_vscanf_t args;
+  ret = (int*) &args;
+
+  args.fmt = (char*) fmt;
+#ifdef _HAVE_STDC
+  va_start (args.ap, args.fmt);
+#else
+  va_start (args.ap);
+#endif
+
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSCANF, &args);
+
+  va_end (args.ap);
+  return *ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/snprintf.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/snprintf.c
@@ -0,0 +1,46 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+#ifdef _HAVE_STDC
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+typedef struct
+{
+  char* str;
+  unsigned int pad0[ 3 ];
+  size_t size;
+  unsigned int pad1[ 3 ];
+  char* fmt;
+  unsigned int pad2[ 3 ];
+  va_list ap;
+} c99_snprintf_t;
+
+_DEFUN(snprintf, (str, size, fmt),
+       char *str   _AND
+       size_t size _AND
+       _CONST char *fmt _DOTS)
+{
+  int* ret;
+  c99_snprintf_t args;
+  ret = (int*) &args;
+
+  args.str = str;
+  args.size = size;
+  args.fmt = fmt;
+#ifdef _HAVE_STDC
+  va_start (args.ap, args.fmt);
+#else
+  va_start (args.ap);
+#endif
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSNPRINTF, &args);
+
+  va_end (args.ap);
+  return *ret;
+}
Index: newlib-1.15.0/newlib/libc/machine/spu/sprintf.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/sprintf.c
@@ -0,0 +1,42 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+#ifdef _HAVE_STDC
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+typedef struct
+{
+  char* str;
+  unsigned int pad0[ 3 ];
+  char* fmt;
+  unsigned int pad1[ 3 ];
+  va_list ap;
+} c99_sprintf_t;
+
+_DEFUN(sprintf, (str, fmt),
+       char *str _AND
+       _CONST char *fmt _DOTS)
+{
+  int* ret;
+  c99_sprintf_t args;
+  ret = (int*) &args;
+
+  args.str = str;
+  args.fmt = fmt;
+#ifdef _HAVE_STDC
+  va_start (args.ap, args.fmt);
+#else
+  va_start (args.ap);
+#endif
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSPRINTF, &args);
+
+  va_end (args.ap);
+  return *ret;
+}
Index: newlib-1.15.0/newlib/libc/machine/spu/sscanf.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/sscanf.c
@@ -0,0 +1,44 @@
+
+#include <_ansi.h>
+#include <stdio.h>
+
+#include "c99ppe.h"
+
+#ifdef _HAVE_STDC
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+typedef struct
+{
+  char* str;
+  unsigned int pad0[ 3 ];
+  char* fmt;
+  unsigned int pad1[ 3 ];
+  va_list ap;
+} c99_sscanf_t;
+
+int
+_DEFUN(sscanf, (str, fmt),
+       _CONST char *str _AND
+       _CONST char *fmt _DOTS)
+{
+  int* ret;
+  c99_sscanf_t args;
+  ret = (int*) &args;
+
+  args.str = str;
+  args.fmt = fmt;
+#ifdef _HAVE_STDC
+  va_start (args.ap, args.fmt);
+#else
+  va_start (args.ap);
+#endif
+
+  send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSSCANF, &args);
+
+  va_end (args.ap);
+  return *ret;
+}
+
Index: newlib-1.15.0/newlib/libc/machine/spu/Makefile.am
===================================================================
--- newlib-1.15.0.orig/newlib/libc/machine/spu/Makefile.am
+++ newlib-1.15.0/newlib/libc/machine/spu/Makefile.am
@@ -8,7 +8,8 @@ noinst_LIBRARIES = lib.a
 
 AM_CCASFLAGS = $(INCLUDES)
 
-lib_a_SOURCES = setjmp.S memcpy.c memmove.c memset.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 printf.c perror.c putchar.c puts.c vsnprintf.c vprintf.c vsprintf.c
+lib_a_SOURCES = setjmp.S memcpy.c memmove.c memset.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 printf.c perror.c putchar.c puts.c vsnprintf.c vprintf.c vsprintf.c clearerr.c fclose.c feof.c ferror.c fflush.c fgetc.c fgetpos.c fgets.c fileno.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 putc.c remove.c rename.c rewind.c scanf.c setbuf.c setvbuf.c snprintf.c sprintf.c sscanf.c tmpfile.c tmpnam.c ungetc.c vfprintf.c vfscanf.c vscanf.c vsscanf.c wbuf.c
+
 
 lib_a_CCASFLAGS = $(AM_CCASFLAGS)
 lib_a_CFLAGS = $(AM_CFLAGS)
Index: newlib-1.15.0/newlib/libc/machine/spu/wbuf.c
===================================================================
--- /dev/null
+++ newlib-1.15.0/newlib/libc/machine/spu/wbuf.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int
+_DEFUN(__swbuf, (c, fp),
+       int c _AND
+       FILE *fp)
+{
+  return fputc(c, fp);
+}
