From cd78f7e767decd16ea8ddd5a147fa6027858882f Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Fri, 4 Oct 2013 15:55:15 +0000 Subject: e500 port: getcontext / setcontext / swapcontext. --- sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S | 5 +++++ sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S | 4 ++++ sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S | 8 ++++++++ 3 files changed, 17 insertions(+) (limited to 'sysdeps/unix/sysv/linux/powerpc') diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S index 14f39d6611..082d302e8a 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S @@ -261,6 +261,11 @@ ENTRY(__CONTEXT_FUNC_NAME) 2: /* L(no_vec): */ # endif #endif + +#ifdef __CONTEXT_ENABLE_E500 + getcontext_e500 +#endif + /* We need to set up parms and call sigprocmask which will clobber volatile registers. So before the call we need to retrieve the original ucontext ptr (parm1) from stack and store the UC_REGS_PTR diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S index f980d282ae..6525cf7429 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S @@ -243,6 +243,10 @@ ENTRY(__CONTEXT_FUNC_NAME) lfd fp31,_UC_FREGS+(31*8)(r31) #endif /* __CONTEXT_ENABLE_FPRS */ +#ifdef __CONTEXT_ENABLE_E500 + setcontext_e500 +#endif + /* Restore LR and CCR, and set CTR to the NIP value */ lwz r3,_UC_GREGS+(PT_LNK*4)(r31) lwz r4,_UC_GREGS+(PT_NIP*4)(r31) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S index 90d7d72128..caa5b8932b 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S @@ -265,6 +265,10 @@ ENTRY(__CONTEXT_FUNC_NAME) # endif /* __CONTEXT_ENABLE_VRS */ #endif /* __CONTEXT_ENABLE_FPRS */ +#ifdef __CONTEXT_ENABLE_E500 + getcontext_e500 +#endif + /* Restore ucontext (parm1) from stack. */ lwz r12,_FRAME_PARM_SAVE1(r1) li r4,0 @@ -468,6 +472,10 @@ ENTRY(__CONTEXT_FUNC_NAME) lfd fp31,_UC_FREGS+(31*8)(r31) #endif /* __CONTEXT_ENABLE_FPRS */ +#ifdef __CONTEXT_ENABLE_E500 + setcontext_e500 +#endif + /* Restore LR and CCR, and set CTR to the NIP value */ lwz r3,_UC_GREGS+(PT_LNK*4)(r31) lwz r4,_UC_GREGS+(PT_NIP*4)(r31) -- cgit 1.4.1