lkml.org 
[lkml]   [2009]   [Oct]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH -v4 4/9] tracing: add static function tracer support for MIPS
    David Daney writes:
    > Wu Zhangjin wrote:
    > > On Wed, 2009-10-21 at 11:24 -0400, Steven Rostedt wrote:
    > [...]
    > >>> +
    > >>> +NESTED(_mcount, PT_SIZE, ra)
    > >>> + RESTORE_SP_FOR_32BIT
    > >>> + PTR_LA t0, ftrace_stub
    > >>> + PTR_L t1, ftrace_trace_function /* please don't use t1 later, safe? */
    > >> Is t0 and t1 safe for mcount to use? Remember, mcount does not follow
    > >> the dynamics of C function ABI.
    > >
    > > So, perhaps we can use the saved registers(a0,a1...) instead.
    > >
    >
    > a0..a7 may not always be saved.
    >
    > You can use at, v0, v1 and all the temporary registers. Note that for
    > the 64-bit ABIs sometimes the names t0-t4 shadow a4-a7. So for a 64-bit
    > kernel, you can use: $1, $2, $3, $12, $13, $14, $15, $24, $25, noting
    > that at == $1 and contains the callers ra. For a 32-bit kernel you can
    > add $8, $9, $10, and $11
    >
    > This whole thing seems a little fragile.

    Maybe scanning the instructions should stop at the beginning of the function
    based on the kernel's symbol table. I am not sure if we can establish any
    other stopping condition without affecting performance too much.

    Speaking of performance, -pg also affects the instruction scheduling freedom
    of the compiler in the prologue. With profiling, we limit optimizations not
    to move instructions in and out of the prologue.

    Also note that for functions invoked via tail call you won't get an exit
    event. E.g. if bar is tail-called from foo:

    foo entered
    bar entered
    foo/bar exited

    However, this is not MIPS-specific and you can always disable tail calls
    with -fno-optimize-sibling-calls.

    Adam


    \
     
     \ /
      Last update: 2009-10-22 22:39    [W:0.023 / U:30.504 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site