diff options
author | Chris Emmons <Chris.Emmons@ARM.com> | 2011-03-17 19:20:20 -0500 |
---|---|---|
committer | Chris Emmons <Chris.Emmons@ARM.com> | 2011-03-17 19:20:20 -0500 |
commit | ccaaa98b4916f730e5eee0cb1d206dca21cb802d (patch) | |
tree | 339a2874833e9276e5717fd93f2e0e4cf52e4f17 /src/sim | |
parent | 53ab306acc725670138d6f65ae2dbef241ac49a3 (diff) | |
download | gem5-ccaaa98b4916f730e5eee0cb1d206dca21cb802d.tar.xz |
ARM: Add minimal ARM_SE support for m5threads.
Updated some of the assembly code sequences to use armv7 instructions and
coprocessor 15 for storing the TLS pointer.
Diffstat (limited to 'src/sim')
-rw-r--r-- | src/sim/syscall_emul.cc | 14 | ||||
-rw-r--r-- | src/sim/syscall_emul.hh | 2 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc index e0469744e..506b22fdf 100644 --- a/src/sim/syscall_emul.cc +++ b/src/sim/syscall_emul.cc @@ -98,6 +98,18 @@ ignoreFunc(SyscallDesc *desc, int callnum, LiveProcess *process, SyscallReturn +ignoreWarnOnceFunc(SyscallDesc *desc, int callnum, LiveProcess *process, + ThreadContext *tc) +{ + int index = 0; + warn_once("ignoring syscall %s(%d, %d, ...)", desc->name, + process->getSyscallArg(tc, index), process->getSyscallArg(tc, index)); + + return 0; +} + + +SyscallReturn exitFunc(SyscallDesc *desc, int callnum, LiveProcess *process, ThreadContext *tc) { @@ -802,6 +814,8 @@ cloneFunc(SyscallDesc *desc, int callnum, LiveProcess *process, for (int y = 8; y < 32; y++) ctc->setIntReg(y, tc->readIntReg(y)); + #elif THE_ISA == ARM_ISA + TheISA::copyRegs(tc, ctc); #else fatal("sys_clone is not implemented for this ISA\n"); #endif diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh index 1dc51ad56..5091c275d 100644 --- a/src/sim/syscall_emul.hh +++ b/src/sim/syscall_emul.hh @@ -187,6 +187,8 @@ SyscallReturn unimplementedFunc(SyscallDesc *desc, int num, /// trace flag is enabled. Return success to the target program. SyscallReturn ignoreFunc(SyscallDesc *desc, int num, LiveProcess *p, ThreadContext *tc); +SyscallReturn ignoreWarnOnceFunc(SyscallDesc *desc, int num, + LiveProcess *p, ThreadContext *tc); /// Target exit() handler: terminate current context. SyscallReturn exitFunc(SyscallDesc *desc, int num, |