2008-11-20 Ken Werner <ken.werner@de.ibm.com>

Patrick Mansfield  <patmans@us.ibm.com>
            Joel Schopp   <jschopp@austin.ibm.com>

        * spu/Makefile.in: Add new files.
        * spu/jsre.h: Add JSRE_MMAP, JSRE_MREMAP, JSRE_MSYNC and
        JSRE_MUNMAP opcodes.
        * spu/mmap_eaddr.c: New File.
        * spu/mremap_eaddr.c: Likewise.
        * spu/msync_eaddr.c: Likewise.
        * spu/munmap_eaddr.c: Likewise.
This commit is contained in:
Jeff Johnston 2008-11-20 20:12:34 +00:00
parent 0e9810262d
commit 01eb6cd6d9
7 changed files with 267 additions and 12 deletions

View File

@ -1,3 +1,15 @@
2008-11-20 Ken Werner <ken.werner@de.ibm.com>
Patrick Mansfield <patmans@us.ibm.com>
Joel Schopp <jschopp@austin.ibm.com>
* spu/Makefile.in: Add new files.
* spu/jsre.h: Add JSRE_MMAP, JSRE_MREMAP, JSRE_MSYNC and
JSRE_MUNMAP opcodes.
* spu/mmap_eaddr.c: New File.
* spu/mremap_eaddr.c: Likewise.
* spu/msync_eaddr.c: Likewise.
* spu/munmap_eaddr.c: Likewise.
2008-11-17 Jeff Johnston <jjohnstn@redhat.com>
* m32r/Makefile.in: Add building m32r-stub.o from local copy instead

View File

@ -56,15 +56,14 @@ OBJCOPY = `t='$(program_transform_name)'; echo objcopy | sed -e $$t`
# object files needed
OBJS = \
access.o chdir.o chmod.o chown.o close.o conv_stat.o dirfuncs.o dup.o \
dup2.o exit.o fchdir.o fchmod.o fchown.o fdatasync.o fstat.o \
fsync.o ftruncate.o getcwd.o getpagesize.o getpid.o \
gettimeofday.o isatty.o kill.o lchown.o \
link.o linux_syscalls.o lockf.o lseek.o \
lstat.o mkdir.o mknod.o mkstemp.o mktemp.o nanosleep.o open.o \
pread.o pwrite.o read.o readlink.o readv.o rmdir.o sbrk.o \
sched_yield.o shm_open.o shm_unlink.o stat.o symlink.o sync.o \
syscalls.o truncate.o umask.o unlink.o utime.o utimes.o write.o \
writev.o
dup2.o exit.o fchdir.o fchmod.o fchown.o fdatasync.o fstat.o fsync.o \
ftruncate.o getcwd.o getpagesize.o getpid.o gettimeofday.o isatty.o \
kill.o lchown.o link.o linux_syscalls.o lockf.o lseek.o lstat.o mkdir.o \
mknod.o mkstemp.o mktemp.o mmap_eaddr.o mremap_eaddr.o msync_eaddr.o \
munmap_eaddr.o nanosleep.o open.o pread.o pwrite.o read.o readlink.o \
readv.o rmdir.o sbrk.o sched_yield.o shm_open.o shm_unlink.o stat.o \
symlink.o sync.o syscalls.o truncate.o umask.o unlink.o utime.o utimes.o \
write.o writev.o
# Object files specific to particular targets.
EVALOBJS = ${OBJS}

View File

@ -6,12 +6,12 @@ All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of IBM nor the names of its contributors may be
* Neither the name of IBM nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
@ -46,6 +46,10 @@ Author: Andreas Neukoetter (ti95neuk@de.ibm.com)
#define JSRE_GETTIMEOFDAY 7
#define JSRE_LSEEK 9
#define JSRE_LSTAT 10
#define JSRE_MMAP 11
#define JSRE_MREMAP 12
#define JSRE_MSYNC 13
#define JSRE_MUNMAP 14
#define JSRE_OPEN 15
#define JSRE_READ 16
#define JSRE_SHM_OPEN 21

67
libgloss/spu/mmap_eaddr.c Normal file
View File

@ -0,0 +1,67 @@
/*
(C) Copyright IBM Corp. 2007
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of IBM nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/mman.h>
#include "jsre.h"
typedef struct
{
unsigned long long start;
unsigned int pad0[2];
unsigned int length;
unsigned int pad1[3];
unsigned int prot;
unsigned int pad2[3];
unsigned int flags;
unsigned int pad3[3];
unsigned int fd;
unsigned int pad4[3];
unsigned int offset;
unsigned int pad5[3];
} syscall_mmap_t;
unsigned long long mmap_eaddr(unsigned long long start, size_t length, int
prot, int flags, int fd, off_t offset)
{
syscall_mmap_t sys;
sys.start = start;
sys.length = (unsigned int) length;
sys.prot = (unsigned int) prot;
sys.flags = (unsigned int) flags;
sys.fd = (unsigned int) fd;
sys.offset = (unsigned int) offset;
__send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_MMAP, &sys);
/*
* Extract 64 bit result from the result stored in sys.
*/
return *(unsigned long long *) (&sys);
}

View File

@ -0,0 +1,61 @@
/*
(C) Copyright IBM Corp. 2007
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of IBM nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/mman.h>
#include "jsre.h"
typedef struct
{
unsigned long long old_addr;
unsigned int pad0[2];
unsigned int old_size;
unsigned int pad1[3];
unsigned int new_size;
unsigned int pad2[3];
unsigned int flags;
unsigned int pad3[3];
} syscall_mremap_t;
unsigned long long mremap_eaddr(unsigned long long old_addr, size_t old_size,
size_t new_size, int flags)
{
syscall_mremap_t sys;
sys.old_addr = old_addr;
sys.old_size = (unsigned int) old_size;
sys.new_size = (unsigned int) new_size;
sys.flags = (unsigned int) flags;
__send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_MREMAP, &sys);
/*
* Extract 64 bit result from the result stored in sys.
*/
return *(unsigned long long *) (&sys);
}

View File

@ -0,0 +1,58 @@
/*
(C) Copyright IBM Corp. 2007
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of IBM nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/mman.h>
#include "jsre.h"
typedef struct
{
unsigned long long start;
unsigned int pad0[2];
unsigned int length;
unsigned int pad1[3];
unsigned int flags;
unsigned int pad2[3];
} syscall_msync_t;
unsigned long long msync_eaddr(unsigned long long start, size_t length,
int flags)
{
syscall_msync_t sys;
sys.start = start;
sys.length = (unsigned int) length;
sys.flags = (unsigned int) flags;
__send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_MSYNC, &sys);
/*
* Extract 64 bit result from the result stored in sys.
*/
return *(unsigned long long *) (&sys);
}

View File

@ -0,0 +1,54 @@
/*
(C) Copyright IBM Corp. 2007
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of IBM nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/mman.h>
#include "jsre.h"
typedef struct
{
unsigned long long start;
unsigned int pad0[2];
unsigned int length;
unsigned int pad1[3];
} syscall_munmap_t;
unsigned long long munmap_eaddr(unsigned long long start, size_t length)
{
syscall_munmap_t sys;
sys.start = start;
sys.length = (unsigned int) length;
__send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_MUNMAP, &sys);
/*
* Extract 64 bit result from the result stored in sys.
*/
return *(unsigned long long *) (&sys);
}