From 99831ed93821ee8efc3e7a4b6671c5b226d245e2 Mon Sep 17 00:00:00 2001 From: Ali Saidi <saidi@eecs.umich.edu> Date: Mon, 27 Jul 2009 00:51:01 -0700 Subject: ARM: Handle register indexed system calls. --- src/arch/arm/linux/process.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/arch/arm/linux/process.cc') 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; -- cgit v1.2.3 From e7640227cac9432c689491f29c996d9168bfb330 Mon Sep 17 00:00:00 2001 From: Ali Saidi <saidi@eecs.umich.edu> Date: Mon, 27 Jul 2009 00:51:20 -0700 Subject: ARM: Fix fstat/fstat64 structs to match EABI definitions. --- src/arch/arm/linux/process.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/arch/arm/linux/process.cc') diff --git a/src/arch/arm/linux/process.cc b/src/arch/arm/linux/process.cc index c5320c1ab..e72c3fb3c 100644 --- a/src/arch/arm/linux/process.cc +++ b/src/arch/arm/linux/process.cc @@ -260,7 +260,7 @@ SyscallDesc ArmLinuxProcess::syscallDescs[] = { /* 194 */ SyscallDesc("ftruncate64", unimplementedFunc), /* 195 */ SyscallDesc("stat64", unimplementedFunc), /* 196 */ SyscallDesc("lstat64", lstat64Func<ArmLinux>), - /* 197 */ SyscallDesc("fstat64", fstatFunc<ArmLinux>), + /* 197 */ SyscallDesc("fstat64", fstat64Func<ArmLinux>), /* 198 */ SyscallDesc("lchown", unimplementedFunc), /* 199 */ SyscallDesc("getuid", getuidFunc), /* 200 */ SyscallDesc("getgid", getgidFunc), -- cgit v1.2.3 From 0a9eb59e6f8be32939c6a267e67943ef50b8ba83 Mon Sep 17 00:00:00 2001 From: Ali Saidi <saidi@eecs.umich.edu> Date: Wed, 29 Jul 2009 00:09:46 -0700 Subject: ARM: Ignore the "times" system call. --- src/arch/arm/linux/process.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/arch/arm/linux/process.cc') diff --git a/src/arch/arm/linux/process.cc b/src/arch/arm/linux/process.cc index e72c3fb3c..75e3a67ca 100644 --- a/src/arch/arm/linux/process.cc +++ b/src/arch/arm/linux/process.cc @@ -106,7 +106,7 @@ SyscallDesc ArmLinuxProcess::syscallDescs[] = { /* 40 */ SyscallDesc("rmdir", unimplementedFunc), /* 41 */ SyscallDesc("dup", unimplementedFunc), /* 42 */ SyscallDesc("pipe", unimplementedFunc), - /* 43 */ SyscallDesc("times", unimplementedFunc), + /* 43 */ SyscallDesc("times", ignoreFunc), /* 44 */ SyscallDesc("prof", unimplementedFunc), /* 45 */ SyscallDesc("brk", brkFunc), /* 46 */ SyscallDesc("setgid", unimplementedFunc), -- cgit v1.2.3 From c2da5bae17436b87a9aa960eab2f77383f4e5a4c Mon Sep 17 00:00:00 2001 From: Gabe Black <gblack@eecs.umich.edu> Date: Wed, 29 Jul 2009 00:17:20 -0700 Subject: ARM: Get rid of a stray line in the set_tls handler. --- src/arch/arm/linux/process.cc | 1 - 1 file changed, 1 deletion(-) (limited to 'src/arch/arm/linux/process.cc') diff --git a/src/arch/arm/linux/process.cc b/src/arch/arm/linux/process.cc index 75e3a67ca..6736a649d 100644 --- a/src/arch/arm/linux/process.cc +++ b/src/arch/arm/linux/process.cc @@ -418,7 +418,6 @@ setTLSFunc(SyscallDesc *desc, int callnum, LiveProcess *process, ThreadContext *tc) { uint32_t tlsPtr = process->getSyscallArg(tc, 0); - TypedBufferArg<Linux::utsname> name(process->getSyscallArg(tc, 0)); tc->getMemPort()->writeBlob(ArmLinuxProcess::commPage + 0x0ff0, (uint8_t *)&tlsPtr, sizeof(tlsPtr)); -- cgit v1.2.3 From b066e717f4301bd5b882319d7d52e8bbd9c0b6c2 Mon Sep 17 00:00:00 2001 From: Gabe Black <gblack@eecs.umich.edu> Date: Wed, 29 Jul 2009 00:18:26 -0700 Subject: ARM: Fix an instruction in the cmpxchg kernel provided routine. The instruction was encoded as a load instead of the intended store. --- src/arch/arm/linux/process.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/arch/arm/linux/process.cc') diff --git a/src/arch/arm/linux/process.cc b/src/arch/arm/linux/process.cc index 6736a649d..56e3588a7 100644 --- a/src/arch/arm/linux/process.cc +++ b/src/arch/arm/linux/process.cc @@ -496,7 +496,7 @@ ArmLinuxProcess::startup() { 0x00, 0x30, 0x92, 0xe5, //ldr r3, [r2] 0x00, 0x30, 0x53, 0xe0, //subs r3, r3, r0 - 0x00, 0x10, 0x92, 0x05, //streq r1, [r2] + 0x00, 0x10, 0x82, 0x05, //streq r1, [r2] 0x03, 0x00, 0xa0, 0xe1, //mov r0, r3 0x0e, 0xf0, 0xa0, 0xe1 //usr_ret lr }; -- cgit v1.2.3