On 09/26/2012 07:35 PM, Takuo Koguchi wrote: > As already suggested by Glenn, syscall_983042 seems to be an ARM private > cacheflush syscall. The number is assigned in arch/arm/include/asm/unistd.h > In the case of EABI, __ARM_NR_cacheflush is 0x0f0002(=982042) > /* > * The following SWIs are ARM private. > */ > #define __ARM_NR_BASE (__NR_SYSCALL_BASE+0x0f0000) #define > __ARM_NR_breakpoint (__ARM_NR_BASE+1) > #define __ARM_NR_cacheflush (__ARM_NR_BASE+2) > #define __ARM_NR_usr26 (__ARM_NR_BASE+3) > #define __ARM_NR_usr32 (__ARM_NR_BASE+4) > #define __ARM_NR_set_tls (__ARM_NR_BASE+5) > > The strace command used here has no knowledge about the syscall and seems to > print the contents of registers from R0. syscall_983042(0x47a8e074, > 0x47a8e078, 0, 0xfff, 0x4086d118, 0x47a8e074, > 0x47a4a905, 0xf0002, 0, 0x47a8e078, 0xfc46f7bc, 0x413d4630, 0, 0xbeb43678, > 0x40841ac3, 0x40011454, 0x40000010, 0x47a8e074, 0xb691, 0, 0x7461642f, > 0x61642f61, 0x632f6174, 0x682e6d6f, 0x63646e61, > 0x2e746e65, 0x7478656e, 0x2f736d73, 0x755f6368, 0x61, 0, 0) = 0 > The syscall number 0xf0002 is stored in R7 as expected. > > ARM private cacheflush syscall actually takes only 3 args, start(0x47a8e074), > end(0x47a8e078), flags(0). 0 is the only valid value for the syscall. > > So the log entry says, the application requested to write back 4 bytes of > data to the memory and it succeded. Hope this will help.
Well, you learn something new every day! I didn't know ARM *had* private syscalls. Thanks for this info. BTW - this is used in the bionic routine cacheflush(), located in bionic/libc/arch-arm/syscalls/cacheflush.S I couldn't find any callers of cacheflush() in bionic. It's also called via the syscall() syscall in valgrind, but with cursory poking about I couldn't find any other references in AOSP. Presumably the original app knows what it's doing, or some library routine is invoking this. It seems like a lot of overhead to go to the kernel to guarantee a cache flush. Maybe this is related to some kind of user-space locking primitive. Interesting diversion... -- Tim ============================= Tim Bird Architecture Group Chair, CE Workgroup of the Linux Foundation Senior Staff Engineer, Sony Network Entertainment ============================= -- unsubscribe: [email protected] website: http://groups.google.com/group/android-kernel
