This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH -tip v5 06/10] kprobes/x86: Cleanup save/restore registers


On Tue, Nov 24, 2009 at 10:39:13AM -0500, Masami Hiramatsu wrote:
> Frederic Weisbecker wrote:
> > On Mon, Nov 23, 2009 at 06:22:04PM -0500, Masami Hiramatsu wrote:
> >> +#ifdef CONFIG_X86_64
> >> +#define SAVE_REGS_STRING		\
> >> +	/* Skip cs, ip, orig_ax. */	\
> >> +	"	subq $24, %rsp\n"	\
> >> +	"	pushq %rdi\n"		\
> >> +	"	pushq %rsi\n"		\
> >> +	"	pushq %rdx\n"		\
> >> +	"	pushq %rcx\n"		\
> >> +	"	pushq %rax\n"		\
> >> +	"	pushq %r8\n"		\
> >> +	"	pushq %r9\n"		\
> >> +	"	pushq %r10\n"		\
> >> +	"	pushq %r11\n"		\
> >> +	"	pushq %rbx\n"		\
> >> +	"	pushq %rbp\n"		\
> >> +	"	pushq %r12\n"		\
> >> +	"	pushq %r13\n"		\
> >> +	"	pushq %r14\n"		\
> >> +	"	pushq %r15\n"
> >> +#define RESTORE_REGS_STRING		\
> >> +	"	popq %r15\n"		\
> >> +	"	popq %r14\n"		\
> >> +	"	popq %r13\n"		\
> >> +	"	popq %r12\n"		\
> >> +	"	popq %rbp\n"		\
> >> +	"	popq %rbx\n"		\
> >> +	"	popq %r11\n"		\
> >> +	"	popq %r10\n"		\
> >> +	"	popq %r9\n"		\
> >> +	"	popq %r8\n"		\
> >> +	"	popq %rax\n"		\
> >> +	"	popq %rcx\n"		\
> >> +	"	popq %rdx\n"		\
> >> +	"	popq %rsi\n"		\
> >> +	"	popq %rdi\n"		\
> > 
> > 
> > BTW, do you really need to push/pop every registers
> > before/after calling a probe handler?
> 
> Yes, in both cases (kretprobe/optprpbe) it needs to
> emulate kprobes behavior. kprobes can be used as
> fault injection, it should pop pt_regs.
> 
> > Is it possible to only save/restore the scratch ones?
> 
> Hmm, what code did you mean?



Ah this chain of push/pop is there to dump a struct pt_regs for
the handler?
Sorry, I just thought it was to save the registers from the probed
function.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]