[Top] [All Lists]

Re: [RFC][PATCH] Implement perf_callchain_user for o32 ABI (on mipsel)

To: Holger Hans Peter Freyther <>, Ralf Baechle <>
Subject: Re: [RFC][PATCH] Implement perf_callchain_user for o32 ABI (on mipsel)
From: David Daney <>
Date: Wed, 10 Aug 2011 10:25:04 -0700
Cc:, "VomLehn, David" <>,
In-reply-to: <>
References: <>
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv: Gecko/20101027 Fedora/3.0.10-1.fc12 Thunderbird/3.0.10
On 08/10/2011 12:24 AM, Holger Hans Peter Freyther wrote:
Hi all,

I wanted to use perf to profile my userspace application on MIPS but I saw
that there is no solution for that. I have written some code to scan the
prologue of the function to identify the stack size and where in the stack the
return address is stored.

    0:  27bdffd8        addiu   sp,sp,-40<-- used to find prev. stack
    4:  afbf0024        sw      ra,36(sp)<-- stored return addr.
    8:  afbe0020        sw      s8,32(sp)
    c:  03a0f021        move    s8,sp
   10:  3c1c0000        lui     gp,0x0
   14:  279c0000        addiu   gp,gp,0

The code appears to work in qemu-system-mipsel (not where I am going to do my
profiling) with my simple test application.

The code is missing a S-o-b because I would like to get feedback if something
like this would ever be accepted upstream. The other question is also about
security, other ABIs, 32/64 bit...

comments more than welcome

You need to reconcile your patches with these:

We probably could use some sort of backtrace code in the kernel, but three seperate implementations are too many.

Also separating most of the unwinder into a separate file would be preferable to mixing it into the perf counter driver.

David Daney

<Prev in Thread] Current Thread [Next in Thread>