diff options
author | Joseph Myers <joseph@codesourcery.com> | 2013-10-04 15:55:15 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2013-10-04 15:55:15 +0000 |
commit | cd78f7e767decd16ea8ddd5a147fa6027858882f (patch) | |
tree | 2e0c9f6cba8d8235269b8bc9f803af6ec94f49d5 /sysdeps/unix/sysv/linux/powerpc | |
parent | afee9c1a259f5e3ff56a08624df3b50b3d03f6b1 (diff) | |
download | glibc-cd78f7e767decd16ea8ddd5a147fa6027858882f.tar.gz |
e500 port: getcontext / setcontext / swapcontext.
Diffstat (limited to 'sysdeps/unix/sysv/linux/powerpc')
3 files changed, 17 insertions, 0 deletions
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) |