diff options
author | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2013-03-18 16:44:23 +0000 |
---|---|---|
committer | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2013-03-18 16:44:23 +0000 |
commit | 8751114637bcc3caaf16a4216da0afb84456558a (patch) | |
tree | f3eca66b88003bc49c309a95827d461ae5b66aed /libc/ports/sysdeps/unix/sysv/linux/arm/nptl/pt-vfork.S | |
parent | b261131fe2b94b53fe4950d9265ae10bef228455 (diff) | |
download | eglibc2-8751114637bcc3caaf16a4216da0afb84456558a.tar.gz |
Merge changes between r22552 and r22663 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@22664 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc/ports/sysdeps/unix/sysv/linux/arm/nptl/pt-vfork.S')
-rw-r--r-- | libc/ports/sysdeps/unix/sysv/linux/arm/nptl/pt-vfork.S | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/pt-vfork.S b/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/pt-vfork.S index a38d56419..ca5045707 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/pt-vfork.S +++ b/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/pt-vfork.S @@ -19,23 +19,16 @@ /* Save the PID value. */ #define SAVE_PID \ - str lr, [sp, #-4]!; /* Save LR. */ \ - cfi_adjust_cfa_offset (4); \ - cfi_rel_offset (lr, 0); \ - mov r0, #0xffff0fff; /* Point to the high page. */ \ - mov lr, pc; /* Save our return address. */ \ - sub pc, r0, #31; /* Jump to the TLS entry. */ \ - ldr lr, [sp], #4; /* Restore LR. */ \ - cfi_adjust_cfa_offset (-4); \ - cfi_restore (lr); \ - mov r2, r0; /* Save the TLS addr in r2. */ \ - ldr r3, [r2, #PID_OFFSET]; /* Load the saved PID. */ \ - rsb r0, r3, #0; /* Negate it. */ \ - str r0, [r2, #PID_OFFSET] /* Store the temporary PID. */ + GET_TLS (r2); \ + NEGOFF_ADJ_BASE2 (r2, r0, PID_OFFSET); /* Save the TLS addr in r2. */ \ + ldr r3, NEGOFF_OFF1 (r2, PID_OFFSET); /* Load the saved PID. */ \ + rsb r0, r3, #0; /* Negate it. */ \ + str r0, NEGOFF_OFF1 (r2, PID_OFFSET); /* Store the temp PID. */ /* Restore the old PID value in the parent. */ #define RESTORE_PID \ cmp r0, #0; /* If we are the parent... */ \ - strne r3, [r2, #PID_OFFSET] /* ... restore the saved PID. */ + it ne; \ + strne r3, NEGOFF_OFF1 (r2, PID_OFFSET); /* restore the saved PID. */ #include "../vfork.S" |