Re: ftrace for MIPS

From: Sergei Shtylyov
Date: Wed Oct 21 2009 - 09:14:26 EST


Hello.

Steven Rostedt wrote:

Need to check which registers is missing when saving/restoring for
_mcount:

NESTED(ftrace_graph_caller, PT_SIZE, ra) MCOUNT_SAVE_REGS
PTR_S v0, PT_R2(sp)

MCOUNT_SET_ARGS
jal prepare_ftrace_return
nop

/* overwrite the parent as &return_to_handler: v0 -> $1(at) */
move $1, v0

I'm confused here? I'm not exactly sure what the above is doing. Is $1 a
register (AT)?

Yes.

And how is this register used before calling mcount?

PTR_L v0, PT_R2(sp)
MCOUNT_RESTORE_REGS
RETURN_BACK
END(ftrace_graph_caller)

.align 2
.globl return_to_handler
return_to_handler:
PTR_SUBU sp, PT_SIZE
PTR_S v0, PT_R2(sp)

BTW, is v0 the only return register? I know x86 can return two different
registers depending on what it returns. What happens if a function
returns a 64 bit value on a 32bit box? Does it use two registers for
that?

Yes, there's also v1 register.

WBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/