This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
[PATCH RFC] spu return rc value from __send_to_ppe
- From: Patrick Mansfield <patmans at us dot ibm dot com>
- To: newlib at sourceware dot org, Ulrich Weigand <Ulrich dot Weigand at de dot ibm dot com>, Vladimir Zbarsky <vzbarsky at us dot ibm dot com>
- Date: Mon, 21 May 2007 11:15:33 -0700
- Subject: [PATCH RFC] spu return rc value from __send_to_ppe
Per Ulrich Weigand's suggestion, return the rc value in __send_to_ppe,
rather than doing so in each each caller of __send_to_ppe, so no code is
generated to return the value (since the return value is already in
register 3).
This moves 8 bytes (2 instructions) from the caller into __send_to_ppe. So
to see any savings in size, you have to call two different assist calls.
libgloss ChangeLog:
2007-05-21 Patrick Mansfield <patmans@us.ibm.com>
* spu/syscalls.c: Change __send_to_ppe to return the result stored
in stored in slot 0 of the data, rather than have each assisted
call retrieve the value.
* spu/access.c: Use the __send_to_ppe instead of the slot 0 value.
* spu/close.c: Ditto.
* spu/dup.c: Ditto.
* spu/fstat.c: Ditto.
* spu/ftruncate.c: Ditto.
* spu/gettimeofday.c: Ditto.
* spu/lseek.c: Ditto.
* spu/open.c: Ditto.
* spu/read.c: Ditto.
* spu/stat.c: Ditto.
* spu/unlink.c: Ditto.
* spu/write.c: Ditto.
newlib ChangeLog:
2007-05-21 Patrick Mansfield <patmans@us.ibm.com>
* libc/machine/spu/sys/syscall.h: Update the __send_to_ppe
prototype.
* libc/machine/spu/fclose.c: Use the __send_to_ppe return value
instead of the slot 0 value.
* libc/machine/spu/feof.c: Ditto.
* libc/machine/spu/ferror.c: Ditto.
* libc/machine/spu/fflush.c: Ditto.
* libc/machine/spu/fgetc.c: Ditto.
* libc/machine/spu/fgetpos.c: Ditto.
* libc/machine/spu/fgets.c: Ditto.
* libc/machine/spu/fileno.c: Ditto.
* libc/machine/spu/fopen.c: Ditto.
* libc/machine/spu/fprintf.c: Ditto.
* libc/machine/spu/fputc.c: Ditto.
* libc/machine/spu/fputs.c: Ditto.
* libc/machine/spu/fread.c: Ditto.
* libc/machine/spu/freopen.c: Ditto.
* libc/machine/spu/fscanf.c: Ditto.
* libc/machine/spu/fseek.c: Ditto.
* libc/machine/spu/fsetpos.c: Ditto.
* libc/machine/spu/ftell.c: Ditto.
* libc/machine/spu/fwrite.c: Ditto.
* libc/machine/spu/getc.c: Ditto.
* libc/machine/spu/getchar.c: Ditto.
* libc/machine/spu/gets.c: Ditto.
* libc/machine/spu/printf.c: Ditto.
* libc/machine/spu/putc.c: Ditto.
* libc/machine/spu/putchar.c: Ditto.
* libc/machine/spu/puts.c: Ditto.
* libc/machine/spu/remove.c: Ditto.
* libc/machine/spu/rename.c: Ditto.
* libc/machine/spu/scanf.c: Ditto.
* libc/machine/spu/setvbuf.c: Ditto.
* libc/machine/spu/snprintf.c: Ditto.
* libc/machine/spu/sprintf.c: Ditto.
* libc/machine/spu/sscanf.c: Ditto.
* libc/machine/spu/tmpfile.c: Ditto.
* libc/machine/spu/tmpnam.c: Ditto.
* libc/machine/spu/ungetc.c: Ditto.
* libc/machine/spu/vfprintf.c: Ditto.
* libc/machine/spu/vfscanf.c: Ditto.
* libc/machine/spu/vprintf.c: Ditto.
* libc/machine/spu/vscanf.c: Ditto.
* libc/machine/spu/vsnprintf.c: Ditto.
* libc/machine/spu/vsprintf.c: Ditto.
* libc/machine/spu/vsscanf.c: Ditto.
Index: my-base-quilt/libgloss/spu/access.c
===================================================================
--- my-base-quilt.orig/libgloss/spu/access.c
+++ my-base-quilt/libgloss/spu/access.c
@@ -40,8 +40,6 @@ access (const char *pathname, int mode)
sys.pathname = (unsigned int) pathname;
sys.mode = mode;
- __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_ACCESS, &sys);
-
- return ( psys_out->rc);
+ return __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_ACCESS, &sys);
}
Index: my-base-quilt/libgloss/spu/close.c
===================================================================
--- my-base-quilt.orig/libgloss/spu/close.c
+++ my-base-quilt/libgloss/spu/close.c
@@ -40,8 +40,6 @@ close (int file)
sys.file = file;
- __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_CLOSE, &sys);
-
- return ( psys_out->rc);
+ return __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_CLOSE, &sys);
}
Index: my-base-quilt/libgloss/spu/dup.c
===================================================================
--- my-base-quilt.orig/libgloss/spu/dup.c
+++ my-base-quilt/libgloss/spu/dup.c
@@ -39,8 +39,6 @@ dup (int oldfd)
sys.oldfd = oldfd;
- __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_DUP, &sys);
-
- return ( psys_out->rc);
+ return __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_DUP, &sys);
}
Index: my-base-quilt/libgloss/spu/fstat.c
===================================================================
--- my-base-quilt.orig/libgloss/spu/fstat.c
+++ my-base-quilt/libgloss/spu/fstat.c
@@ -39,11 +39,12 @@ fstat (int file, struct stat *pstat)
syscall_fstat_t sys;
syscall_out_t *psys_out = ( syscall_out_t* )&sys;
jsre_stat_t pjstat;
+ int ret;
sys.file = file;
sys.ptr = ( unsigned int )&pjstat;
- __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_FSTAT, &sys);
+ ret = __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_FSTAT, &sys);
pstat->st_dev = pjstat.dev;
pstat->st_ino = pjstat.ino;
@@ -60,6 +61,6 @@ fstat (int file, struct stat *pstat)
pstat->st_ctime = pjstat.ctime;
- return( psys_out->rc );
+ return ret;
}
Index: my-base-quilt/libgloss/spu/ftruncate.c
===================================================================
--- my-base-quilt.orig/libgloss/spu/ftruncate.c
+++ my-base-quilt/libgloss/spu/ftruncate.c
@@ -40,8 +40,6 @@ ftruncate (int file, off_t length)
sys.file = file;
sys.length = length;
- __send_to_ppe(JSRE_POSIX1_SIGNALCODE, JSRE_FTRUNCATE, &sys);
-
- return ( psys_out->rc);
+ return __send_to_ppe(JSRE_POSIX1_SIGNALCODE, JSRE_FTRUNCATE, &sys);
}
Index: my-base-quilt/libgloss/spu/gettimeofday.c
===================================================================
--- my-base-quilt.orig/libgloss/spu/gettimeofday.c
+++ my-base-quilt/libgloss/spu/gettimeofday.c
@@ -43,7 +43,5 @@ gettimeofday (struct timeval *tv, struct
sys.tv = (unsigned int)tv;
sys.tz = (unsigned int)tz;
- __send_to_ppe(JSRE_POSIX1_SIGNALCODE, JSRE_GETTIMEOFDAY, &sys);
-
- return (psys_out->rc);
+ return __send_to_ppe(JSRE_POSIX1_SIGNALCODE, JSRE_GETTIMEOFDAY, &sys);
}
Index: my-base-quilt/libgloss/spu/lseek.c
===================================================================
--- my-base-quilt.orig/libgloss/spu/lseek.c
+++ my-base-quilt/libgloss/spu/lseek.c
@@ -54,8 +54,6 @@ lseek (int file, off_t offset, int whenc
break;
}
- __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_LSEEK, &sys);
-
- return ( psys_out->rc);
+ return __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_LSEEK, &sys);
}
Index: my-base-quilt/libgloss/spu/open.c
===================================================================
--- my-base-quilt.orig/libgloss/spu/open.c
+++ my-base-quilt/libgloss/spu/open.c
@@ -70,8 +70,6 @@ open (const char *filename, int flags, .
sys.mode = va_arg (ap, int);
va_end (ap);
- __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_OPEN, &sys);
-
- return ( psys_out->rc);
+ return __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_OPEN, &sys);
}
Index: my-base-quilt/libgloss/spu/read.c
===================================================================
--- my-base-quilt.orig/libgloss/spu/read.c
+++ my-base-quilt/libgloss/spu/read.c
@@ -43,8 +43,6 @@ read (int file, void *ptr, size_t len)
sys.ptr = ( unsigned int )ptr;
sys.len = len;
- __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_READ, &sys);
-
- return ( psys_out->rc);
+ return __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_READ, &sys);
}
Index: my-base-quilt/libgloss/spu/stat.c
===================================================================
--- my-base-quilt.orig/libgloss/spu/stat.c
+++ my-base-quilt/libgloss/spu/stat.c
@@ -40,11 +40,12 @@ stat (const char *pathname, struct stat
syscall_stat_t sys;
syscall_out_t *psys_out = ( syscall_out_t* )&sys;
jsre_stat_t pjstat;
+ int ret;
sys.pathname = (unsigned int)pathname;
sys.ptr = ( unsigned int )&pjstat;
- __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_STAT, &sys);
+ ret = __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_STAT, &sys);
pstat->st_dev = pjstat.dev;
pstat->st_ino = pjstat.ino;
@@ -60,6 +61,6 @@ stat (const char *pathname, struct stat
pstat->st_mtime = pjstat.mtime;
pstat->st_ctime = pjstat.ctime;
- return( psys_out->rc );
+ return ret;
}
Index: my-base-quilt/libgloss/spu/syscalls.c
===================================================================
--- my-base-quilt.orig/libgloss/spu/syscalls.c
+++ my-base-quilt/libgloss/spu/syscalls.c
@@ -32,7 +32,7 @@ Author: Andreas Neukoetter (ti95neuk@de.
#include <errno.h>
#include "jsre.h"
-void
+int
__send_to_ppe (unsigned int signalcode, unsigned int opcode, void *data)
{
@@ -49,5 +49,10 @@ __send_to_ppe (unsigned int signalcode,
asm ("sync");
f ();
errno = ((unsigned int *) data)[3];
+
+ /*
+ * Return the rc code stored in slot 0.
+ */
+ return ((unsigned int *) data)[0];
}
Index: my-base-quilt/libgloss/spu/unlink.c
===================================================================
--- my-base-quilt.orig/libgloss/spu/unlink.c
+++ my-base-quilt/libgloss/spu/unlink.c
@@ -40,8 +40,6 @@ unlink (const char *pathname)
sys.pathname = ( unsigned int )pathname;
- __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_UNLINK, &sys);
-
- return ( psys_out->rc);
+ return __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_UNLINK, &sys);
}
Index: my-base-quilt/libgloss/spu/write.c
===================================================================
--- my-base-quilt.orig/libgloss/spu/write.c
+++ my-base-quilt/libgloss/spu/write.c
@@ -43,8 +43,6 @@ write (int file, const void *ptr, size_t
sys.ptr = ( unsigned int )ptr;
sys.len = len;
- __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_WRITE, &sys);
-
- return ( psys_out->rc);
+ return __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_WRITE, &sys);
}
Index: my-base-quilt/newlib/libc/machine/spu/fclose.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/fclose.c
+++ my-base-quilt/newlib/libc/machine/spu/fclose.c
@@ -46,7 +46,7 @@ _DEFUN (fclose, (fp),
ret = fp->_fp;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FCLOSE, &ret);
+ ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FCLOSE, &ret);
__sfp_free(fp);
Index: my-base-quilt/newlib/libc/machine/spu/feof.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/feof.c
+++ my-base-quilt/newlib/libc/machine/spu/feof.c
@@ -46,9 +46,6 @@ _DEFUN (feof, (fp),
result = fp->_fp;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FEOF, &result);
-
-
- return result;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FEOF, &result);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/ferror.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/ferror.c
+++ my-base-quilt/newlib/libc/machine/spu/ferror.c
@@ -46,9 +46,6 @@ _DEFUN (ferror, (fp),
result = fp->_fp;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FERROR, &result);
-
-
- return result;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FERROR, &result);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/fflush.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/fflush.c
+++ my-base-quilt/newlib/libc/machine/spu/fflush.c
@@ -45,9 +45,6 @@ _DEFUN (fflush, (fp),
result = fp->_fp;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FFLUSH, &result);
-
-
- return result;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FFLUSH, &result);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/fgetc.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/fgetc.c
+++ my-base-quilt/newlib/libc/machine/spu/fgetc.c
@@ -46,8 +46,6 @@ _DEFUN (fgetc, (fp),
result = fp->_fp;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETC, &result);
-
- return result;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETC, &result);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/fgetpos.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/fgetpos.c
+++ my-base-quilt/newlib/libc/machine/spu/fgetpos.c
@@ -58,9 +58,6 @@ _DEFUN (fgetpos, (fp, pos),
arg.fp = fp->_fp;
arg.pos = pos;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETPOS, &arg);
-
-
- return *result;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETPOS, &arg);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/fgets.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/fgets.c
+++ my-base-quilt/newlib/libc/machine/spu/fgets.c
@@ -61,8 +61,6 @@ _DEFUN (fgets, (buf, n, fp),
args.fp = fp->_fp;
ret = (char**) &args;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETS, &args);
-
- return *ret;
+ return (char*) __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETS, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/fileno.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/fileno.c
+++ my-base-quilt/newlib/libc/machine/spu/fileno.c
@@ -47,8 +47,6 @@ _DEFUN (fileno, (fp),
ret = fp->_fp;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FILENO, &ret);
-
- return ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FILENO, &ret);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/fopen.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/fopen.c
+++ my-base-quilt/newlib/libc/machine/spu/fopen.c
@@ -65,7 +65,7 @@ _DEFUN (fopen, (file, mode),
args.mode = mode;
ret = (int *) &args;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FOPEN, &args);
+ *ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FOPEN, &args);
if (*ret) {
fp->_fp = *ret;
Index: my-base-quilt/newlib/libc/machine/spu/fprintf.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/fprintf.c
+++ my-base-quilt/newlib/libc/machine/spu/fprintf.c
@@ -75,7 +75,7 @@ fprintf(FILE * fp, _CONST char *fmt,...)
va_start (args.ap);
#endif
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFPRINTF, &args);
+ *ret =__send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFPRINTF, &args);
va_end (args.ap);
return *ret;
Index: my-base-quilt/newlib/libc/machine/spu/fputc.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/fputc.c
+++ my-base-quilt/newlib/libc/machine/spu/fputc.c
@@ -59,8 +59,6 @@ fputc (c, fp)
args.fp = fp->_fp;
ret = (int*)&args;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FPUTC, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FPUTC, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/fputs.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/fputs.c
+++ my-base-quilt/newlib/libc/machine/spu/fputs.c
@@ -59,8 +59,6 @@ _DEFUN (fputs, (s, fp),
args.fp = fp->_fp;
ret = (int*)&args;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FPUTS, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FPUTS, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/fread.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/fread.c
+++ my-base-quilt/newlib/libc/machine/spu/fread.c
@@ -66,8 +66,6 @@ _DEFUN (fread, (buf, size, count, fp),
args.fp = fp->_fp;
ret = (size_t*) &args;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FREAD, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FREAD, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/freopen.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/freopen.c
+++ my-base-quilt/newlib/libc/machine/spu/freopen.c
@@ -62,7 +62,7 @@ _DEFUN (freopen, (file, mode, fp),
args.fp = fp->_fp;
ret = (int *) &args;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FREOPEN, &args);
+ *ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FREOPEN, &args);
if (*ret) {
fp->_fp = *ret;
Index: my-base-quilt/newlib/libc/machine/spu/fscanf.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/fscanf.c
+++ my-base-quilt/newlib/libc/machine/spu/fscanf.c
@@ -74,7 +74,7 @@ fscanf(FILE *fp, _CONST char *fmt, ...)
#endif
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFSCANF, &args);
+ *ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFSCANF, &args);
va_end (args.ap);
return *ret;
Index: my-base-quilt/newlib/libc/machine/spu/fseek.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/fseek.c
+++ my-base-quilt/newlib/libc/machine/spu/fseek.c
@@ -62,8 +62,6 @@ _DEFUN (fseek, (fp, offset, whence),
args.whence = whence;
ret = (int*)&args;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FSEEK, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FSEEK, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/fsetpos.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/fsetpos.c
+++ my-base-quilt/newlib/libc/machine/spu/fsetpos.c
@@ -58,8 +58,6 @@ _DEFUN (fsetpos, (iop, pos),
args.pos = pos;
ret = (int*)&args;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FSETPOS, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FSETPOS, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/ftell.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/ftell.c
+++ my-base-quilt/newlib/libc/machine/spu/ftell.c
@@ -47,8 +47,6 @@ _DEFUN (ftell, (fp),
ret = fp->_fp;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FTELL, &ret);
-
- return ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FTELL, &ret);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/fwrite.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/fwrite.c
+++ my-base-quilt/newlib/libc/machine/spu/fwrite.c
@@ -66,8 +66,6 @@ _DEFUN (fwrite, (buf, size, count, fp),
args.fp = fp->_fp;
ret = (size_t*) &args;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FWRITE, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FWRITE, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/getc.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/getc.c
+++ my-base-quilt/newlib/libc/machine/spu/getc.c
@@ -49,8 +49,6 @@ getc (fp)
ret = fp->_fp;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETC, &ret);
-
- return ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETC, &ret);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/getchar.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/getchar.c
+++ my-base-quilt/newlib/libc/machine/spu/getchar.c
@@ -45,8 +45,6 @@ getchar ()
CHECK_STD_INIT(_REENT);
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETCHAR, &ret);
-
- return ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETCHAR, &ret);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/gets.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/gets.c
+++ my-base-quilt/newlib/libc/machine/spu/gets.c
@@ -44,8 +44,6 @@ gets (buf)
/* The return value gets written over buf
*/
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETS, &buf);
-
- return buf;
+ return (char*) __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETS, &buf);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/printf.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/printf.c
+++ my-base-quilt/newlib/libc/machine/spu/printf.c
@@ -49,7 +49,7 @@ printf (fmt, va_alist)
va_start (args.ap);
#endif
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VPRINTF, &args);
+ *ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VPRINTF, &args);
va_end (args.ap);
return *ret;
Index: my-base-quilt/newlib/libc/machine/spu/putc.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/putc.c
+++ my-base-quilt/newlib/libc/machine/spu/putc.c
@@ -59,9 +59,7 @@ putc (c, fp)
args.fp = fp->_fp;
ret = (int*)&args;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTC, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTC, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/putchar.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/putchar.c
+++ my-base-quilt/newlib/libc/machine/spu/putchar.c
@@ -14,9 +14,7 @@ putchar (c)
/* c gets overwritten before return */
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTCHAR, &c);
-
- return c;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTCHAR, &c);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/puts.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/puts.c
+++ my-base-quilt/newlib/libc/machine/spu/puts.c
@@ -12,9 +12,7 @@ _DEFUN (puts, (s),
/* The return value gets written over s
*/
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTS, &s);
-
- return (int)s;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTS, &s);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/remove.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/remove.c
+++ my-base-quilt/newlib/libc/machine/spu/remove.c
@@ -41,8 +41,6 @@ remove (filename)
/* The return value gets written over buf
*/
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_REMOVE, &filename);
-
- return (int)filename;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_REMOVE, &filename);
}
Index: my-base-quilt/newlib/libc/machine/spu/rename.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/rename.c
+++ my-base-quilt/newlib/libc/machine/spu/rename.c
@@ -54,7 +54,5 @@ rename (old, new)
args.new = new;
ret = (int*) &args;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_RENAME, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_RENAME, &args);
}
Index: my-base-quilt/newlib/libc/machine/spu/scanf.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/scanf.c
+++ my-base-quilt/newlib/libc/machine/spu/scanf.c
@@ -71,7 +71,7 @@ scanf(_CONST char *fmt, ...)
#endif
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSCANF, &args);
+ *ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSCANF, &args);
va_end (args.ap);
return *ret;
Index: my-base-quilt/newlib/libc/machine/spu/setvbuf.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/setvbuf.c
+++ my-base-quilt/newlib/libc/machine/spu/setvbuf.c
@@ -67,9 +67,7 @@ _DEFUN (setvbuf, (fp, buf, mode, size),
args.size = size;
ret = (int*)&args;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_SETVBUF, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_SETVBUF, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/snprintf.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/snprintf.c
+++ my-base-quilt/newlib/libc/machine/spu/snprintf.c
@@ -79,7 +79,7 @@ _DEFUN(snprintf, (str, size, fmt),
va_start (args.ap);
#endif
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSNPRINTF, &args);
+ *ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSNPRINTF, &args);
va_end (args.ap);
return *ret;
Index: my-base-quilt/newlib/libc/machine/spu/sprintf.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/sprintf.c
+++ my-base-quilt/newlib/libc/machine/spu/sprintf.c
@@ -75,7 +75,7 @@ _DEFUN(sprintf, (str, fmt),
va_start (args.ap);
#endif
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSPRINTF, &args);
+ *ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSPRINTF, &args);
va_end (args.ap);
return *ret;
Index: my-base-quilt/newlib/libc/machine/spu/sscanf.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/sscanf.c
+++ my-base-quilt/newlib/libc/machine/spu/sscanf.c
@@ -76,7 +76,7 @@ _DEFUN(sscanf, (str, fmt),
va_start (args.ap);
#endif
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSSCANF, &args);
+ *ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSSCANF, &args);
va_end (args.ap);
return *ret;
Index: my-base-quilt/newlib/libc/machine/spu/tmpfile.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/tmpfile.c
+++ my-base-quilt/newlib/libc/machine/spu/tmpfile.c
@@ -50,7 +50,7 @@ _DEFUN_VOID (tmpfile)
return NULL;
}
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_TMPFILE, &ret);
+ ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_TMPFILE, &ret);
if (ret) {
fp->_fp = ret;
Index: my-base-quilt/newlib/libc/machine/spu/tmpnam.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/tmpnam.c
+++ my-base-quilt/newlib/libc/machine/spu/tmpnam.c
@@ -38,10 +38,7 @@ 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;
+ return (char*) __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_TMPNAM, &s);
}
Index: my-base-quilt/newlib/libc/machine/spu/ungetc.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/ungetc.c
+++ my-base-quilt/newlib/libc/machine/spu/ungetc.c
@@ -59,9 +59,7 @@ ungetc (c, fp)
args.fp = fp->_fp;
ret = (int*)&args;
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_UNGETC, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_UNGETC, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/vfprintf.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/vfprintf.c
+++ my-base-quilt/newlib/libc/machine/spu/vfprintf.c
@@ -73,9 +73,7 @@ _DEFUN (vfprintf, (fp, fmt0, ap),
args.fmt = (char*) fmt0;
va_copy(args.ap,ap);
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFPRINTF, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFPRINTF, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/vfscanf.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/vfscanf.c
+++ my-base-quilt/newlib/libc/machine/spu/vfscanf.c
@@ -73,9 +73,7 @@ _DEFUN (vfscanf, (fp, fmt, ap),
args.fmt = (char*) fmt;
va_copy(args.ap,ap);
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFSCANF, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFSCANF, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/vprintf.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/vprintf.c
+++ my-base-quilt/newlib/libc/machine/spu/vprintf.c
@@ -37,9 +37,7 @@ _DEFUN (vprintf, (fmt, ap),
args.fmt = fmt;
va_copy(args.ap,ap);
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VPRINTF, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VPRINTF, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/vscanf.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/vscanf.c
+++ my-base-quilt/newlib/libc/machine/spu/vscanf.c
@@ -69,9 +69,7 @@ _DEFUN (vscanf, (fmt, ap),
args.fmt = (char*) fmt;
va_copy(args.ap,ap);
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSCANF, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSCANF, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/vsnprintf.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/vsnprintf.c
+++ my-base-quilt/newlib/libc/machine/spu/vsnprintf.c
@@ -45,9 +45,7 @@ _DEFUN (vsnprintf, (str, size, fmt, ap),
args.fmt = fmt;
va_copy(args.ap,ap);
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSNPRINTF, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSNPRINTF, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/vsprintf.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/vsprintf.c
+++ my-base-quilt/newlib/libc/machine/spu/vsprintf.c
@@ -42,9 +42,7 @@ _DEFUN (vsprintf, (str, fmt, ap),
args.fmt = (char*) fmt;
va_copy(args.ap,ap);
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSPRINTF, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSPRINTF, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/vsscanf.c
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/vsscanf.c
+++ my-base-quilt/newlib/libc/machine/spu/vsscanf.c
@@ -73,9 +73,7 @@ _DEFUN (vsscanf, (str, fmt, ap),
args.fmt = (char*) fmt;
va_copy(args.ap,ap);
- __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSSCANF, &args);
-
- return *ret;
+ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSSCANF, &args);
}
#endif /* ! _REENT_ONLY */
Index: my-base-quilt/newlib/libc/machine/spu/sys/syscall.h
===================================================================
--- my-base-quilt.orig/newlib/libc/machine/spu/sys/syscall.h
+++ my-base-quilt/newlib/libc/machine/spu/sys/syscall.h
@@ -1,4 +1,4 @@
#ifndef _SYS_SYSCALL_H
#define _SYS_SYSCALL_H
-void __send_to_ppe(unsigned int signalcode, unsigned int opcode, void *data);
+int __send_to_ppe(unsigned int signalcode, unsigned int opcode, void *data);
#endif