diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-06-18 04:29:42 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-06-18 04:29:42 +0000 |
commit | 7c3164bc6650ceeecd67841dfb8fcf399d12a93f (patch) | |
tree | 23a7016e21d2848ec2d3fdfa1b8dc1abcf3e85d4 /sysdeps | |
parent | 72e615009bfde798692487d04ae548d15eb423ba (diff) | |
download | glibc-7c3164bc6650ceeecd67841dfb8fcf399d12a93f.tar.gz glibc-7c3164bc6650ceeecd67841dfb8fcf399d12a93f.tar.xz glibc-7c3164bc6650ceeecd67841dfb8fcf399d12a93f.zip |
Update.
2004-06-17 Ulrich Drepper <drepper@redhat.com> * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait): Also check for negativ nanoseconds. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S (__pthread_cond_timedwait): Check for invalid nanosecond in timeout value. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise. * tst-cond19.c: New file. * Makefile: Add rules to build and run tst-cond19.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/powerpc/powerpc64/memcpy.S | 12 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sched_setaffinity.c | 9 |
2 files changed, 12 insertions, 9 deletions
diff --git a/sysdeps/powerpc/powerpc64/memcpy.S b/sysdeps/powerpc/powerpc64/memcpy.S index c6d764595e..f3448e0b31 100644 --- a/sysdeps/powerpc/powerpc64/memcpy.S +++ b/sysdeps/powerpc/powerpc64/memcpy.S @@ -79,6 +79,8 @@ EALIGN (BP_SYM (memcpy), 5, 0) rldicl. 0,12,0,61 cmpldi cr6,31,7 ble- cr6,.L2 /* less than 8 bytes left. */ + srdi 11,31,3 + andi. 10,12,7 bne- 0,.L6 /* Source is not DW aligned. */ srdi. 9,31,3 mr 10,3 @@ -164,19 +166,17 @@ EALIGN (BP_SYM (memcpy), 5, 0) ld 30,-16(1) blr + .align 4 .L6: - srdi 11,31,3 - mr 4,3 - mr 5,12 /* Copy doublewords where the destination is aligned but the source is not. Use aligned doubleword loads from the source, shifted to realign the data, to allow aligned destination stores. */ - andi. 10,5,7 + subf 5,10,12 andi. 0,11,1 - subf 5,10,5 - ld 6,0(5) sldi 10,10,3 + mr 4,3 + ld 6,0(5) ld 7,8(5) subfic 9,10,64 beq 2f diff --git a/sysdeps/unix/sysv/linux/sched_setaffinity.c b/sysdeps/unix/sysv/linux/sched_setaffinity.c index 36f73d4a59..5b1b8ee878 100644 --- a/sysdeps/unix/sysv/linux/sched_setaffinity.c +++ b/sysdeps/unix/sysv/linux/sched_setaffinity.c @@ -60,9 +60,12 @@ __sched_setaffinity_new (pid_t pid, size_t cpusetsize, const cpu_set_t *cpuset) does not request to set a bit beyond that. */ for (size_t cnt = __kernel_cpumask_size; cnt < cpusetsize; ++cnt) if (((char *) cpuset)[cnt] != '\0') - /* Found a nonzero byte. This means the user request cannot be - fulfilled. */ - return EINVAL; + { + /* Found a nonzero byte. This means the user request cannot be + fulfilled. */ + __set_errno (EINVAL); + return -1; + } return INLINE_SYSCALL (sched_setaffinity, 3, pid, cpusetsize, cpuset); } |