From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20462 invoked by alias); 3 Nov 2011 18:08:31 -0000 Received: (qmail 20454 invoked by uid 22791); 3 Nov 2011 18:08:30 -0000 X-SWARE-Spam-Status: No, hits=-1.4 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 03 Nov 2011 18:08:13 +0000 Received: from svr-orw-fem-01.mgc.mentorg.com ([147.34.98.93]) by relay1.mentorg.com with esmtp id 1RM1i0-0006be-QU from wade_farnsworth@mentor.com for systemtap@sourceware.org; Thu, 03 Nov 2011 11:08:12 -0700 Received: from SVR-ORW-FEM-05.mgc.mentorg.com ([147.34.97.43]) by svr-orw-fem-01.mgc.mentorg.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Thu, 3 Nov 2011 11:08:12 -0700 Received: from [172.30.5.135] (147.34.91.1) by svr-orw-fem-05.mgc.mentorg.com (147.34.97.43) with Microsoft SMTP Server id 14.1.289.1; Thu, 3 Nov 2011 11:08:11 -0700 Message-ID: <4EB2D88B.8020301@mentor.com> Date: Thu, 03 Nov 2011 18:08:00 -0000 From: Wade Farnsworth User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110424 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: Subject: [PATCH 1/2] Userspace tap support for ARM References: <4EB2D832.60402@mentor.com> In-Reply-To: <4EB2D832.60402@mentor.com> Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact systemtap-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org X-SW-Source: 2011-q4/txt/msg00135.txt.bz2 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 --- runtime/syscall.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 38 insertions(+), 0 deletions(-) diff --git a/runtime/syscall.h b/runtime/syscall.h index 786965f..2adcd3b 100644 --- a/runtime/syscall.h +++ b/runtime/syscall.h @@ -85,6 +85,14 @@ #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, ®s->uregs[i], n * sizeof(args[0])); +} +#endif + #endif /* !STAPCONF_ASM_SYSCALL_H */ #endif /* _SYSCALL_H_ */ -- 1.7.0.4