[PATCH] sharing spu _send_to_ppe()
Jeff Johnston
jjohnstn@redhat.com
Thu Aug 31 22:03:00 GMT 2006
Patch checked in.
-- Jeff J.
Kazunori Asayama wrote:
> The patch below modifies the definition of _send_to_ppe() in SPU
> libgloss to make it possible to share it between libgloss and stdio
> offloading routines.
>
> Thanks,
>
> 2006-08-30 Kazunori Asayama <asayama@sm.sony.co.jp>
>
> * spu/syscalls.c: Add a new argument to _send_to_ppe() to
> specify signal code.
> * spu/jsre.h: Update declaration of _send_to_ppe().
> * spu/close.c: Replace _send_to_ppe_0x2101() by _send_to_ppe().
> * spu/fstat.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.
>
>
> Index: newlib-trunk/libgloss/spu/jsre.h
> ===================================================================
> --- newlib-trunk.orig/libgloss/spu/jsre.h 2006-08-29 17:06:19.000000000 +0900
> +++ newlib-trunk/libgloss/spu/jsre.h 2006-08-30 15:56:45.000000000 +0900
> @@ -52,6 +52,8 @@
> #define JSRE_O_SYNC 4096
> #define JSRE_O_ASYNC 8192
>
> +#define JSRE_POSIX1_SIGNALCODE 0x2101
> +
> #define JSRE_CLOSE 2
> #define JSRE_FSTAT 4
> #define JSRE_LSEEK 9
> @@ -152,6 +154,6 @@
> unsigned int ctime;
> } jsre_stat_t;
>
> -void _send_to_ppe_0x2101 (int opcode, void *data);
> +void _send_to_ppe (unsigned int signalcode, unsigned int opcode, void *data);
>
> #endif
> Index: newlib-trunk/libgloss/spu/syscalls.c
> ===================================================================
> --- newlib-trunk.orig/libgloss/spu/syscalls.c 2006-08-29 17:06:19.000000000 +0900
> +++ newlib-trunk/libgloss/spu/syscalls.c 2006-08-30 16:37:18.000000000 +0900
> @@ -30,14 +30,16 @@
> Author: Andreas Neukoetter (ti95neuk@de.ibm.com)
> */
>
> +#include "jsre.h"
> +
> void
> -_send_to_ppe_0x2101 (int opcode, void *data)
> +_send_to_ppe (unsigned int signalcode, unsigned int opcode, void *data)
> {
>
> unsigned int combined = ( ( opcode<<24 )&0xff000000 ) | ( ( unsigned int )data & 0x00ffffff );
>
> vector unsigned int stopfunc = {
> - 0x00002101, /* stop 0x2101 */
> + signalcode, /* stop */
> (unsigned int) combined,
> 0x4020007f, /* nop */
> 0x35000000 /* bi $0 */
> Index: newlib-trunk/libgloss/spu/close.c
> ===================================================================
> --- newlib-trunk.orig/libgloss/spu/close.c 2006-08-29 17:06:19.000000000 +0900
> +++ newlib-trunk/libgloss/spu/close.c 2006-08-30 15:57:12.000000000 +0900
> @@ -41,7 +41,7 @@
>
> sys.file = file;
>
> - _send_to_ppe_0x2101 (JSRE_CLOSE, &sys);
> + _send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_CLOSE, &sys);
>
> errno = psys_out->err;
> return ( psys_out->rc);
> Index: newlib-trunk/libgloss/spu/fstat.c
> ===================================================================
> --- newlib-trunk.orig/libgloss/spu/fstat.c 2006-08-29 17:06:19.000000000 +0900
> +++ newlib-trunk/libgloss/spu/fstat.c 2006-08-30 15:57:35.000000000 +0900
> @@ -44,7 +44,7 @@
> sys.file = file;
> sys.ptr = ( unsigned int )&pjstat;
>
> - _send_to_ppe_0x2101 (JSRE_FSTAT, &sys);
> + _send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_FSTAT, &sys);
>
> pstat->st_dev = pjstat.dev;
> pstat->st_ino = pjstat.ino;
> Index: newlib-trunk/libgloss/spu/lseek.c
> ===================================================================
> --- newlib-trunk.orig/libgloss/spu/lseek.c 2006-08-29 17:06:19.000000000 +0900
> +++ newlib-trunk/libgloss/spu/lseek.c 2006-08-30 15:57:46.000000000 +0900
> @@ -55,7 +55,7 @@
> break;
> }
>
> - _send_to_ppe_0x2101 (JSRE_LSEEK, &sys);
> + _send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_LSEEK, &sys);
>
> errno = psys_out->err;
> return ( psys_out->rc);
> Index: newlib-trunk/libgloss/spu/open.c
> ===================================================================
> --- newlib-trunk.orig/libgloss/spu/open.c 2006-08-29 17:06:19.000000000 +0900
> +++ newlib-trunk/libgloss/spu/open.c 2006-08-30 15:57:53.000000000 +0900
> @@ -81,7 +81,7 @@
> sys.mode = 0;
> }
>
> - _send_to_ppe_0x2101 ( JSRE_OPEN, &sys);
> + _send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_OPEN, &sys);
>
> errno = psys_out->err;
> return ( psys_out->rc);
> Index: newlib-trunk/libgloss/spu/read.c
> ===================================================================
> --- newlib-trunk.orig/libgloss/spu/read.c 2006-08-29 17:06:19.000000000 +0900
> +++ newlib-trunk/libgloss/spu/read.c 2006-08-30 15:57:59.000000000 +0900
> @@ -44,7 +44,7 @@
> sys.ptr = ( unsigned int )ptr;
> sys.len = len;
>
> - _send_to_ppe_0x2101 (JSRE_READ, &sys);
> + _send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_READ, &sys);
>
> errno = psys_out->err;
> return ( psys_out->rc);
> Index: newlib-trunk/libgloss/spu/stat.c
> ===================================================================
> --- newlib-trunk.orig/libgloss/spu/stat.c 2006-08-29 17:06:19.000000000 +0900
> +++ newlib-trunk/libgloss/spu/stat.c 2006-08-30 15:58:04.000000000 +0900
> @@ -45,7 +45,7 @@
> sys.pathname = pathname;
> sys.ptr = ( unsigned int )&pjstat;
>
> - _send_to_ppe_0x2101 (JSRE_STAT, &sys);
> + _send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_STAT, &sys);
>
> pstat->st_dev = pjstat.dev;
> pstat->st_ino = pjstat.ino;
> Index: newlib-trunk/libgloss/spu/unlink.c
> ===================================================================
> --- newlib-trunk.orig/libgloss/spu/unlink.c 2006-08-29 17:06:19.000000000 +0900
> +++ newlib-trunk/libgloss/spu/unlink.c 2006-08-30 15:58:09.000000000 +0900
> @@ -41,7 +41,7 @@
>
> sys.pathname = ( unsigned int )pathname;
>
> - _send_to_ppe_0x2101 (JSRE_UNLINK, &sys);
> + _send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_UNLINK, &sys);
>
> errno = psys_out->err;
> return ( psys_out->rc);
> Index: newlib-trunk/libgloss/spu/write.c
> ===================================================================
> --- newlib-trunk.orig/libgloss/spu/write.c 2006-08-29 17:06:19.000000000 +0900
> +++ newlib-trunk/libgloss/spu/write.c 2006-08-30 15:58:23.000000000 +0900
> @@ -44,7 +44,7 @@
> sys.ptr = ( unsigned int )ptr;
> sys.len = len;
>
> - _send_to_ppe_0x2101 (JSRE_WRITE, &sys);
> + _send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_WRITE, &sys);
>
> errno = psys_out->err;
> return ( psys_out->rc);
More information about the Newlib
mailing list