mirror of
git://sourceware.org/git/glibc.git
synced 2025-01-24 12:25:35 +08:00
PowerPC makecontext
http://sourceware.org/ml/libc-alpha/2013-08/msg00092.html Use conditional form of branch and link to avoid destroying the cpu link stack used to predict blr return addresses. * sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S: Use conditional form of branch and link when obtaining pc. * sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S: Likewise.
This commit is contained in:
parent
02f04a6c7f
commit
0b2c2ace36
@ -1,3 +1,9 @@
|
||||
2013-10-04 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S: Use
|
||||
conditional form of branch and link when obtaining pc.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S: Likewise.
|
||||
|
||||
2013-10-04 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S: Use
|
||||
|
@ -47,7 +47,9 @@ ENTRY(__makecontext)
|
||||
#ifdef PIC
|
||||
mflr r0
|
||||
cfi_register(lr,r0)
|
||||
bl 1f
|
||||
/* Use this conditional form of branch and link to avoid destroying
|
||||
the cpu link stack used to predict blr return addresses. */
|
||||
bcl 20,31,1f
|
||||
1: mflr r6
|
||||
addi r6,r6,L(exitcode)-1b
|
||||
mtlr r0
|
||||
@ -136,7 +138,9 @@ ENTRY(__novec_makecontext)
|
||||
#ifdef PIC
|
||||
mflr r0
|
||||
cfi_register(lr,r0)
|
||||
bl 1f
|
||||
/* Use this conditional form of branch and link to avoid destroying
|
||||
the cpu link stack used to predict blr return addresses. */
|
||||
bcl 20,31,1f
|
||||
1: mflr r6
|
||||
addi r6,r6,L(novec_exitcode)-1b
|
||||
mtlr r0
|
||||
|
@ -124,8 +124,10 @@ L(noparms):
|
||||
|
||||
/* If the target function returns we need to do some cleanup. We use a
|
||||
code trick to get the address of our cleanup function into the link
|
||||
register. Do not add any code between here and L(exitcode). */
|
||||
bl L(gotexitcodeaddr);
|
||||
register. Do not add any code between here and L(exitcode).
|
||||
Use this conditional form of branch and link to avoid destroying
|
||||
the cpu link stack used to predict blr return addresses. */
|
||||
bcl 20,31,L(gotexitcodeaddr);
|
||||
|
||||
/* This is the helper code which gets called if a function which
|
||||
is registered with 'makecontext' returns. In this case we
|
||||
|
Loading…
Reference in New Issue
Block a user