From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andi Kleen Subject: Re: [PATCH -tip -v10 5/7] x86: add pt_regs register and stack access APIs Date: Mon, 06 Jul 2009 16:34:53 +0200 Message-ID: <871votop6a.fsf@basil.nowhere.org> References: <20090701010838.32547.62843.stgit@localhost.localdomain> <20090701010911.32547.1313.stgit@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: In-Reply-To: <20090701010911.32547.1313.stgit@localhost.localdomain> (Masami Hiramatsu's message of "Tue, 30 Jun 2009 21:09:11 -0400") Sender: kvm-owner@vger.kernel.org To: Masami Hiramatsu Cc: Ingo Molnar , Steven Rostedt , lkml , systemtap , kvm , DLE , Christoph Hellwig , Ananth N Mavinakayanahalli , Frederic Weisbecker , Roland McGrath , Srikar Dronamraju , linux-arch@vger.kernel.org List-Id: linux-arch.vger.kernel.org Masami Hiramatsu writes: > Add following APIs for accessing registers and stack entries from pt_regs. You forgot to state who calls these functions/why are they added? Who only has strings for registers? I can see the point of having a function for nth argument though, that's useful. > +static inline unsigned long regs_get_argument_nth(struct pt_regs *regs, > + unsigned n) > +{ > + if (n < NR_REGPARMS) { > + switch (n) { > + case 0: > + return regs->ax; > + case 1: > + return regs->dx; > + case 2: > + return regs->cx; [....] That could be done shorter with a offsetof table. > + if (n < NR_REGPARMS) { > + switch (n) { > + case 0: > + return regs->di; > + case 1: > + return regs->si; > + case 2: > + return regs->dx; > + case 3: > + return regs->cx; > + case 4: > + return regs->r8; > + case 5: > + return regs->r9; and that too. -Andi -- ak@linux.intel.com -- Speaking for myself only. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from one.firstfloor.org ([213.235.205.2]:49845 "EHLO one.firstfloor.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754017AbZGFOez (ORCPT ); Mon, 6 Jul 2009 10:34:55 -0400 Subject: Re: [PATCH -tip -v10 5/7] x86: add pt_regs register and stack access APIs From: Andi Kleen References: <20090701010838.32547.62843.stgit@localhost.localdomain> <20090701010911.32547.1313.stgit@localhost.localdomain> Date: Mon, 06 Jul 2009 16:34:53 +0200 In-Reply-To: <20090701010911.32547.1313.stgit@localhost.localdomain> (Masami Hiramatsu's message of "Tue, 30 Jun 2009 21:09:11 -0400") Message-ID: <871votop6a.fsf@basil.nowhere.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: linux-arch-owner@vger.kernel.org List-ID: To: Masami Hiramatsu Cc: Ingo Molnar , Steven Rostedt , lkml , systemtap , kvm , DLE , Christoph Hellwig , Ananth N Mavinakayanahalli , Frederic Weisbecker , Roland McGrath , Srikar Dronamraju , linux-arch@vger.kernel.org Message-ID: <20090706143453.qtzBXt4MT7mqFQY8ZqOham4dxHpuGYLxD2tZ2qBHVUg@z> Masami Hiramatsu writes: > Add following APIs for accessing registers and stack entries from pt_regs. You forgot to state who calls these functions/why are they added? Who only has strings for registers? I can see the point of having a function for nth argument though, that's useful. > +static inline unsigned long regs_get_argument_nth(struct pt_regs *regs, > + unsigned n) > +{ > + if (n < NR_REGPARMS) { > + switch (n) { > + case 0: > + return regs->ax; > + case 1: > + return regs->dx; > + case 2: > + return regs->cx; [....] That could be done shorter with a offsetof table. > + if (n < NR_REGPARMS) { > + switch (n) { > + case 0: > + return regs->di; > + case 1: > + return regs->si; > + case 2: > + return regs->dx; > + case 3: > + return regs->cx; > + case 4: > + return regs->r8; > + case 5: > + return regs->r9; and that too. -Andi -- ak@linux.intel.com -- Speaking for myself only.