summaryrefslogtreecommitdiff
path: root/src/arch/arm/linux/process.cc
diff options
context:
space:
mode:
authorAli Saidi <saidi@eecs.umich.edu>2009-07-27 00:51:01 -0700
committerAli Saidi <saidi@eecs.umich.edu>2009-07-27 00:51:01 -0700
commit99831ed93821ee8efc3e7a4b6671c5b226d245e2 (patch)
treee9945e22340dc1c1c2f32d74720371dc4d078819 /src/arch/arm/linux/process.cc
parent0a18bc0d6cdcbf68f9bf01ae98ce0f678c62f16f (diff)
downloadgem5-99831ed93821ee8efc3e7a4b6671c5b226d245e2.tar.xz
ARM: Handle register indexed system calls.
Diffstat (limited to 'src/arch/arm/linux/process.cc')
-rw-r--r--src/arch/arm/linux/process.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/arch/arm/linux/process.cc b/src/arch/arm/linux/process.cc
index 7158acfff..c5320c1ab 100644
--- a/src/arch/arm/linux/process.cc
+++ b/src/arch/arm/linux/process.cc
@@ -448,7 +448,8 @@ ArmLinuxProcess::getDesc(int callnum)
// Angel SWI syscalls are unsupported in this release
if (callnum == 0x123456) {
panic("Attempt to execute an ANGEL_SWI system call (newlib-related)");
- } else if ((callnum & 0x00f00000) == 0x00900000) {
+ } else if ((callnum & 0x00f00000) == 0x00900000 ||
+ (callnum & 0xf0000) == 0xf0000) {
callnum &= 0x000fffff;
if ((callnum & 0x0f0000) == 0xf0000) {
callnum -= 0x0f0001;