On Tue, 7 May 2024 23:08:35 +0900 "Masami Hiramatsu (Google)" <mhiramat@xxxxxxxxxx> wrote: > From: Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx> > > Add ftrace_regs definition for x86_64 in the ftrace header to > clarify what register will be accessible from ftrace_regs. > > Signed-off-by: Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx> > --- > Changes in v3: > - Add rip to be saved. > Changes in v2: > - Newly added. > --- > arch/x86/include/asm/ftrace.h | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/arch/x86/include/asm/ftrace.h b/arch/x86/include/asm/ftrace.h > index cf88cc8cc74d..c88bf47f46da 100644 > --- a/arch/x86/include/asm/ftrace.h > +++ b/arch/x86/include/asm/ftrace.h > @@ -36,6 +36,12 @@ static inline unsigned long ftrace_call_adjust(unsigned long addr) > > #ifdef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS > struct ftrace_regs { > + /* > + * On the x86_64, the ftrace_regs saves; > + * rax, rcx, rdx, rdi, rsi, r8, r9, rbp, rip and rsp. > + * Also orig_ax is used for passing direct trampoline address. > + * x86_32 doesn't support ftrace_regs. Should add a comment that if fregs->regs.cs is set, then all of the pt_regs is valid. And x86_32 does support ftrace_regs, it just doesn't support having a subset of it. -- Steve > + */ > struct pt_regs regs; > }; >