You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[PAL/Linux-SGX] Do not clobber RBX reg in stage-1 signal handler
If the enclave is entered with CSSA=1, then the enclave starts executing
the stage-1 signal handler asssembly code. This assembly code prepares
the context for the stage-2 signal handler, which will be executed in
regular context with CSSA=0 and using C code.
This stage-1 signal handler uses the RBX register as a base pointer to
the SSA[0].GPRSGX region. Closer to the end of the stage-1 handler flow,
in particular before the `.Lcssa1_exception_eexit` label, this SSA[0]
base pointer is not needed anymore, so the RBX register is used for
other purposes. In particular, RBX is used to hold the stashed RDX value
(where-to-exit address in untrusted runtime).
However, a future commit that will introduce AEX-Notify flows inside the
enclave needs to access the SSA[0].GPRSGX region at this stage (in the
`.Lcssa1_exception_eexit` label). So the RBX register must not be
overwritten. Thus, this preparatory commit does not clobber RBX, but
instead stashes RDX into another unused register, R10.
Signed-off-by: Dmitrii Kuvaiskii <[email protected]>
0 commit comments