]> sourceware.org Git - systemtap.git/commitdiff
Add syscall information for ARM
authorWade Farnsworth <wade_farnsworth@mentor.com>
Thu, 3 Nov 2011 18:13:00 +0000 (11:13 -0700)
committerMark Wielaard <mjw@redhat.com>
Fri, 4 Nov 2011 12:06:43 +0000 (13:06 +0100)
Add syscall information for ARM devices.  This allows tapsets to be
compiled on this architecture when CONFIG_UTRACE is enabled.

Signed-off-by: Wade Farnsworth <wade_farnsworth@mentor.com>
runtime/syscall.h

index 786965f490ae5a244c500d80e6ba20a22dd19111..2adcd3b6e9190fa6f5dcee52f088fbad7b357a5f 100644 (file)
 #define MREMAP_SYSCALL_NO(tsk)         163
 #endif
 
+#if defined(__arm__)
+#define MMAP_SYSCALL_NO(tsk)           90
+#define MMAP2_SYSCALL_NO(tsk)          192
+#define MPROTECT_SYSCALL_NO(tsk)       125
+#define MUNMAP_SYSCALL_NO(tsk)         91
+#define MREMAP_SYSCALL_NO(tsk)         163
+#endif
+
 #if !defined(MMAP_SYSCALL_NO) || !defined(MMAP2_SYSCALL_NO)            \
        || !defined(MPROTECT_SYSCALL_NO) || !defined(MUNMAP_SYSCALL_NO) \
        || !defined(MREMAP_SYSCALL_NO)
@@ -146,6 +154,14 @@ syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
 }
 #endif
 
+#if defined(__arm__)
+static inline long
+syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
+{
+       return regs->ARM_r7;
+}
+#endif
+
 #if defined(__i386__) || defined(__x86_64__)
 static inline long
 syscall_get_return_value(struct task_struct *task, struct pt_regs *regs)
@@ -196,6 +212,14 @@ syscall_get_return_value(struct task_struct *task, struct pt_regs *regs)
 }
 #endif
 
+#if defined(__arm__)
+static inline long
+syscall_get_return_value(struct task_struct *task, struct pt_regs *regs)
+{
+       return regs->ARM_r0;
+}
+
+#endif
 #if defined(__i386__) || defined(__x86_64__)
 static inline void
 syscall_get_arguments(struct task_struct *task, struct pt_regs *regs,
@@ -490,5 +514,19 @@ syscall_get_arguments(struct task_struct *task, struct pt_regs *regs,
 }
 #endif
 
+#if defined(__arm__)
+static inline void
+syscall_get_arguments(struct task_struct *task, struct pt_regs *regs,
+                     unsigned int i, unsigned int n, unsigned long *args)
+{
+       if (i + n > 6) {
+               _stp_error("invalid syscall arg request");
+               return;
+       }
+
+       memcpy(args, &regs->uregs[i], n * sizeof(args[0]));
+}
+#endif
+
 #endif /* !STAPCONF_ASM_SYSCALL_H */
 #endif /* _SYSCALL_H_ */
This page took 0.028967 seconds and 5 git commands to generate.