Not as far as I know, and no. Looking at this code generally, it would be nice to move the common definitions into a generic base class rather than have 32 bit SPARC inherit from 64 bit SPARC, but that's outside the scope of this patch.
Gabe nathan binkert wrote: > Did anyone ever import this code? If not, anyone see any reason not to? > > On Wed, Jul 29, 2009 at 2:50 PM, Vince Weaver <[email protected]> wrote: > >> Hello >> >> I'm trying to run gcc from spec2k under SPARC_SE and ran into a few >> unimplemented syscalls. Attached is a patch that enables getrlimit and >> getrusage and sets setrlimit to be ignored. >> >> The code is modeled on the Alpha code and seems to work. gcc.spec2k still >> doesn't work though. On expr it makes it about 1/3 the way through and >> then fails out due to an illegal memory access. >> >> Vince >> >> >> diff -r b35ef789e6f6 src/arch/sparc/linux/linux.hh >> --- a/src/arch/sparc/linux/linux.hh Wed Jul 29 00:35:49 2009 -0700 >> +++ b/src/arch/sparc/linux/linux.hh Wed Jul 29 17:42:04 2009 -0400 >> @@ -77,6 +77,31 @@ >> static const int NUM_OPEN_FLAGS; >> >> static const unsigned TGT_MAP_ANONYMOUS = 0x20; >> + >> + //@{ >> + /// For getrusage(). >> + static const int TGT_RUSAGE_SELF = 0; >> + static const int TGT_RUSAGE_CHILDREN = -1; >> + static const int TGT_RUSAGE_BOTH = -2; >> + //@} >> + >> + /// Resource enumeration for getrlimit(). >> + enum rlimit_resources { >> + TGT_RLIMIT_CPU = 0, >> + TGT_RLIMIT_FSIZE = 1, >> + TGT_RLIMIT_DATA = 2, >> + TGT_RLIMIT_STACK = 3, >> + TGT_RLIMIT_CORE = 4, >> + TGT_RLIMIT_RSS = 5, >> + TGT_RLIMIT_NOFILE = 6, >> + TGT_RLIMIT_AS = 7, >> + TGT_RLIMIT_VMEM = 7, >> + TGT_RLIMIT_NPROC = 8, >> + TGT_RLIMIT_MEMLOCK = 9, >> + TGT_RLIMIT_LOCKS = 10 >> + }; >> + >> + >> }; >> >> class Sparc32Linux : public SparcLinux >> diff -r b35ef789e6f6 src/arch/sparc/linux/syscalls.cc >> --- a/src/arch/sparc/linux/syscalls.cc Wed Jul 29 00:35:49 2009 -0700 >> +++ b/src/arch/sparc/linux/syscalls.cc Wed Jul 29 17:42:04 2009 -0400 >> @@ -31,6 +31,9 @@ >> #include "arch/sparc/linux/process.hh" >> #include "sim/syscall_emul.hh" >> >> +using namespace std; >> +using namespace SparcISA; >> + >> class LiveProcess; >> class ThreadContext; >> >> @@ -205,7 +208,7 @@ >> /* 114 */ SyscallDesc("sendmsg", unimplementedFunc), >> /* 115 */ SyscallDesc("getgroups32", unimplementedFunc), //32 bit >> /* 116 */ SyscallDesc("gettimeofday", gettimeofdayFunc<Sparc32Linux>), >> //32 bit >> - /* 117 */ SyscallDesc("getrusage", unimplementedFunc), //32 bit >> + /* 117 */ SyscallDesc("getrusage", getrusageFunc<Sparc32Linux>), //32 >> bit >> /* 118 */ SyscallDesc("getsockopt", unimplementedFunc), >> /* 119 */ SyscallDesc("getcwd", getcwdFunc), >> /* 120 */ SyscallDesc("readv", unimplementedFunc), >> @@ -232,8 +235,8 @@ >> /* 141 */ SyscallDesc("getpeername", unimplementedFunc), >> /* 142 */ SyscallDesc("futex", unimplementedFunc), //32 bit >> /* 143 */ SyscallDesc("gettid", unimplementedFunc), >> - /* 144 */ SyscallDesc("getrlimit", unimplementedFunc), >> - /* 145 */ SyscallDesc("setrlimit", unimplementedFunc), >> + /* 144 */ SyscallDesc("getrlimit", getrlimitFunc<Sparc32Linux>), >> + /* 145 */ SyscallDesc("setrlimit", ignoreFunc), >> /* 146 */ SyscallDesc("pivot_root", unimplementedFunc), >> /* 147 */ SyscallDesc("prctl", unimplementedFunc), //32 bit >> /* 148 */ SyscallDesc("pciconfig_read", unimplementedFunc), >> @@ -511,7 +514,7 @@ >> /* 114 */ SyscallDesc("sendmsg", unimplementedFunc), >> /* 115 */ SyscallDesc("getgroups32", unimplementedFunc), >> /* 116 */ SyscallDesc("gettimeofday", gettimeofdayFunc<SparcLinux>), >> - /* 117 */ SyscallDesc("getrusage", unimplementedFunc), >> + /* 117 */ SyscallDesc("getrusage", getrusageFunc<SparcLinux>), >> /* 118 */ SyscallDesc("getsockopt", unimplementedFunc), >> /* 119 */ SyscallDesc("getcwd", unimplementedFunc), >> /* 120 */ SyscallDesc("readv", unimplementedFunc), >> @@ -538,7 +541,7 @@ >> /* 141 */ SyscallDesc("getpeername", unimplementedFunc), >> /* 142 */ SyscallDesc("futex", unimplementedFunc), >> /* 143 */ SyscallDesc("gettid", unimplementedFunc), >> - /* 144 */ SyscallDesc("getrlimit", unimplementedFunc), >> + /* 144 */ SyscallDesc("getrlimit", getrlimitFunc<SparcLinux>), >> /* 145 */ SyscallDesc("setrlimit", unimplementedFunc), >> /* 146 */ SyscallDesc("pivot_root", unimplementedFunc), >> /* 147 */ SyscallDesc("prctl", unimplementedFunc), >> _______________________________________________ >> m5-dev mailing list >> [email protected] >> http://m5sim.org/mailman/listinfo/m5-dev >> >> >> > _______________________________________________ > m5-dev mailing list > [email protected] > http://m5sim.org/mailman/listinfo/m5-dev > _______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
