From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/3] perf tests: Introduce perf_regs_load function on ARM
Date: Tue, 4 Mar 2014 11:00:42 +0000 [thread overview]
Message-ID: <20140304110042.GD8766@mudshark.cambridge.arm.com> (raw)
In-Reply-To: <1393840403-26639-2-git-send-email-jean.pihet@linaro.org>
Hi Jean,
On Mon, Mar 03, 2014 at 09:53:21AM +0000, Jean Pihet wrote:
> Introducing perf_regs_load function, which is going
> to be used for dwarf unwind test in following patches.
>
> It takes single argument as a pointer to the regs dump
> buffer and populates it with current registers values.
[...]
> diff --git a/tools/perf/arch/arm/tests/regs_load.S b/tools/perf/arch/arm/tests/regs_load.S
> new file mode 100644
> index 0000000..241c6df
> --- /dev/null
> +++ b/tools/perf/arch/arm/tests/regs_load.S
> @@ -0,0 +1,51 @@
> +#include <linux/linkage.h>
> +
> +#define R0 0x00
> +#define R1 0x08
Why are you using a 64-bit stride for 32-bit registers? (which prevents you
from using stm later on).
> +.text
> +.type perf_regs_load,%function
> +ENTRY(perf_regs_load)
> + push {r1}
Do you only push r1 here so that you can do the stack arithmetic later? That
doesn't make sense to me -- can't you str sp directly?
> + str r0, [r0, #R0]
> + str r1, [r0, #R1]
> + str r2, [r0, #R2]
> + str r3, [r0, #R3]
> + str r4, [r0, #R4]
> + str r5, [r0, #R5]
> + str r6, [r0, #R6]
> + str r7, [r0, #R7]
> + str r8, [r0, #R8]
> + str r9, [r0, #R9]
> + str sl, [r0, #SL]
> + str fp, [r0, #FP]
> + str ip, [r0, #IP]
> + add r1, sp, #4 @ Retrieve and save sp at entry time
> + str r1, [r0, #SP]
> + str lr, [r0, #LR]
> + str lr, [r0, #PC] @ Save caller PC
This isn't necessarily the `caller PC' (depending on how you define it).
It's the return address, which is probably (but not always) the instruction
following the branch to this function.
Will
next prev parent reply other threads:[~2014-03-04 11:00 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-03 9:53 [PATCH 0/3] perf tools: Add libdw DWARF post unwind support for ARM Jean Pihet
2014-03-03 9:53 ` [PATCH 1/3] perf tests: Introduce perf_regs_load function on ARM Jean Pihet
2014-03-04 7:50 ` Jean Pihet
2014-03-04 7:57 ` Jean Pihet
2014-03-04 11:00 ` Will Deacon [this message]
2014-03-05 2:17 ` Jean Pihet
2014-03-06 11:33 ` Will Deacon
2014-03-06 17:22 ` Jiri Olsa
2014-03-11 18:25 ` Jean Pihet
2014-03-12 16:13 ` Will Deacon
2014-03-03 9:53 ` [PATCH 2/3] perf tests: Add dwarf unwind test " Jean Pihet
2014-03-03 9:53 ` [PATCH 3/3] perf tools: Add libdw DWARF post unwind support for ARM Jean Pihet
2014-03-04 1:24 ` [PATCH 0/3] " Jean Pihet
2014-03-04 10:37 ` Jiri Olsa
2014-03-04 11:58 ` Jiri Olsa
-- strict thread matches above, loose matches on Subject: below --
2014-05-06 15:26 Jean Pihet
2014-05-06 15:26 ` [PATCH 1/3] perf tests: Introduce perf_regs_load function on ARM Jean Pihet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140304110042.GD8766@mudshark.cambridge.arm.com \
--to=will.deacon@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).