+2007-04-04 Patrick Mansfield <patmans@us.ibm.com>
+
+ * libc/machine/spu/sys/syscall.h: New file for __send_to_ppe
+ prototype.
+ * libc/machine/spu/c99ppe.h: Remove static version of send_to_ppe.
+ * libc/machine/spu/clearerr.c: Call __send_to_ppe vs send_to_ppe.
+ * libc/machine/spu/fclose.c: Ditto.
+ * 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/perror.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/rewind.c: Ditto.
+ * libc/machine/spu/scanf.c: Ditto.
+ * libc/machine/spu/setbuf.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.
+
2007-04-04 Jeff Johnston <jjohnstn@redhat.com>
* libc/argz/argz_insert.c: Add stddef.h to get ptrdiff_t type.
*/
#include <errno.h>
+#include <sys/syscall.h>
#define SPE_C99_SIGNALCODE 0x2100
unsigned int slot[4];
};
-static void
-send_to_ppe(int signalcode, int opcode, void *data)
-{
-
- unsigned int combined = ( ( opcode<<24 )&0xff000000 ) | ( ( unsigned int )data & 0x00ffffff );
- struct spe_reg128* ret = data;
-
- __vector unsigned int stopfunc = {
- signalcode, /* stop 0x210x*/
- (unsigned int) combined,
- 0x4020007f, /* nop */
- 0x35000000 /* bi $0 */
- };
-
- void (*f) (void) = (void *) &stopfunc;
- asm ("sync":::"memory");
- f();
- errno = ret->slot[3];
- return;
-}
-
void _EXFUN(__sinit,(struct _reent *));
FILE *_EXFUN(__sfp,(struct _reent *));
#define __sfp_free(fp) ( (fp)->_fp = 0 )
ret = fp->_fp;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_CLEARERR, &ret);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_CLEARERR, &ret);
return;
}
ret = fp->_fp;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FCLOSE, &ret);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FCLOSE, &ret);
__sfp_free(fp);
result = fp->_fp;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FEOF, &result);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FEOF, &result);
return result;
result = fp->_fp;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FERROR, &result);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FERROR, &result);
return result;
result = fp->_fp;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FFLUSH, &result);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FFLUSH, &result);
return result;
result = fp->_fp;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETC, &result);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETC, &result);
return result;
}
arg.fp = fp->_fp;
arg.pos = pos;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETPOS, &arg);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETPOS, &arg);
return *result;
args.fp = fp->_fp;
ret = (char**) &args;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETS, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETS, &args);
return *ret;
}
ret = fp->_fp;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FILENO, &ret);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FILENO, &ret);
return ret;
}
args.mode = mode;
ret = (int *) &args;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FOPEN, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FOPEN, &args);
if (*ret) {
fp->_fp = *ret;
va_start (args.ap);
#endif
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFPRINTF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFPRINTF, &args);
va_end (args.ap);
return *ret;
args.fp = fp->_fp;
ret = (int*)&args;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FPUTC, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FPUTC, &args);
return *ret;
}
args.fp = fp->_fp;
ret = (int*)&args;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FPUTS, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FPUTS, &args);
return *ret;
}
args.fp = fp->_fp;
ret = (size_t*) &args;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FREAD, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FREAD, &args);
return *ret;
}
args.fp = fp->_fp;
ret = (int *) &args;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FREOPEN, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FREOPEN, &args);
if (*ret) {
fp->_fp = *ret;
#endif
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFSCANF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFSCANF, &args);
va_end (args.ap);
return *ret;
args.whence = whence;
ret = (int*)&args;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FSEEK, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FSEEK, &args);
return *ret;
}
args.pos = pos;
ret = (int*)&args;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FSETPOS, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FSETPOS, &args);
return *ret;
}
ret = fp->_fp;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FTELL, &ret);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FTELL, &ret);
return ret;
}
args.fp = fp->_fp;
ret = (size_t*) &args;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FWRITE, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FWRITE, &args);
return *ret;
}
ret = fp->_fp;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETC, &ret);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETC, &ret);
return ret;
}
CHECK_STD_INIT(_REENT);
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETCHAR, &ret);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETCHAR, &ret);
return ret;
}
/* The return value gets written over buf
*/
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETS, &buf);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETS, &buf);
return buf;
}
{
CHECK_STD_INIT(_REENT);
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PERROR, &s);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PERROR, &s);
return;
}
va_start (args.ap);
#endif
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VPRINTF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VPRINTF, &args);
va_end (args.ap);
return *ret;
args.fp = fp->_fp;
ret = (int*)&args;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTC, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTC, &args);
return *ret;
}
/* c gets overwritten before return */
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTCHAR, &c);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTCHAR, &c);
return c;
}
/* The return value gets written over s
*/
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTS, &s);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTS, &s);
return (int)s;
}
/* The return value gets written over buf
*/
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_REMOVE, &filename);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_REMOVE, &filename);
return (int)filename;
}
args.new = new;
ret = (int*) &args;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_RENAME, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_RENAME, &args);
return *ret;
}
ret = fp->_fp;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_REWIND, &ret);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_REWIND, &ret);
return;
}
#endif
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSCANF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSCANF, &args);
va_end (args.ap);
return *ret;
args.fp = fp->_fp;
args.buf = buf;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_SETBUF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_SETBUF, &args);
return;
}
args.size = size;
ret = (int*)&args;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_SETVBUF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_SETVBUF, &args);
return *ret;
}
va_start (args.ap);
#endif
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSNPRINTF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSNPRINTF, &args);
va_end (args.ap);
return *ret;
va_start (args.ap);
#endif
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSPRINTF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSPRINTF, &args);
va_end (args.ap);
return *ret;
va_start (args.ap);
#endif
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSSCANF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSSCANF, &args);
va_end (args.ap);
return *ret;
--- /dev/null
+#ifndef _SYS_SYSCALL_H
+#define _SYS_SYSCALL_H
+void __send_to_ppe(unsigned int signalcode, unsigned int opcode, void *data);
+#endif
return NULL;
}
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_TMPFILE, &ret);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_TMPFILE, &ret);
if (ret) {
fp->_fp = ret;
char **ret = &s;
/* The return value gets written over buf
*/
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_TMPNAM, &s);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_TMPNAM, &s);
return *ret;
}
args.fp = fp->_fp;
ret = (int*)&args;
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_UNGETC, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_UNGETC, &args);
return *ret;
}
args.fmt = (char*) fmt0;
va_copy(args.ap,ap);
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFPRINTF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFPRINTF, &args);
return *ret;
}
args.fmt = (char*) fmt;
va_copy(args.ap,ap);
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFSCANF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFSCANF, &args);
return *ret;
}
args.fmt = fmt;
va_copy(args.ap,ap);
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VPRINTF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VPRINTF, &args);
return *ret;
}
args.fmt = (char*) fmt;
va_copy(args.ap,ap);
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSCANF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSCANF, &args);
return *ret;
}
args.fmt = fmt;
va_copy(args.ap,ap);
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSNPRINTF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSNPRINTF, &args);
return *ret;
}
args.fmt = (char*) fmt;
va_copy(args.ap,ap);
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSPRINTF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSPRINTF, &args);
return *ret;
}
args.fmt = (char*) fmt;
va_copy(args.ap,ap);
- send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSSCANF, &args);
+ __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSSCANF, &args);
return *ret;
}