Hello evebody,
Here's a small observation that I made:
In SMT configurations for ALPHA/Linux, the first workload that finishes
terminates all the other workloads on the CPU because it makes the system
call, exit_group(). This problem, however, does not surface with the "hello"
binary checked into the repository because, I think, it is compiled with an
older compiler toolchain (which was build with linux 2.4.3) and it makes a
call to exit() instead of exit_group().
So my question is:
Shouldn't the exit_group() syscall be simulated by the exit() syscall in SE
mode? Here is the diff in the source:
diff -r e0c1c6d87649 src/sim/syscall_emul.cc
--- a/src/sim/syscall_emul.cc Sun Aug 23 14:19:14 2009 -0700
+++ b/src/sim/syscall_emul.cc Mon Aug 31 16:18:05 2009 -0400
@@ -110,12 +110,16 @@
exitGroupFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
ThreadContext *tc)
{
+#if !FULL_SYSTEM
+ return exitFunc(desc, callnum, process, tc);
+#else
// really should just halt all thread contexts belonging to this
// process in case there's another process running...
exitSimLoop("target called exit()",
process->getSyscallArg(tc, 0) & 0xff);
return 1;
+#endif
}
regards,
Soumyaroop.
--
Soumyaroop Roy
Ph.D. Candidate
Department of Computer Science and Engineering
University of South Florida, Tampa
http://www.csee.usf.edu/~sroy <http://www.csee.usf.edu/%7Esroy>
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev