RBP save and restore on x86-64 system calls

From: Hanson, Jonathan M
Date: Mon Aug 28 2006 - 13:35:01 EST


This may not be a kernel question per se but I was hoping someone on
this list might be able to shed some light into where RBP is saved to on an
x86-64 system when a non-tracing system call is made.
An ioctl() triggers my kernel module and I need to have a way to
reliably retrieve what RBP was immediately before the system call. RBP is
not saved on the process' stack on kernel entry. The code in entry.S says
that it's up to the C code (which I'm taking to mean glibc) to deal with
these non-saved registers. I have a statically compiled application and I
can't see the glibc code doing anything to save or restore RBP in the
assembly. It has to be saved somewhere or these would be all kinds of
problems after control returned to the user application from the system
call.
Please reply directly to me as well as the list as I'm not a current
subscriber. Thanks for your time.

Attachment: smime.p7s
Description: S/MIME cryptographic signature