diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-19 11:04:23 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-19 11:04:23 -0500 |
commit | aa3f98037ce3bcf850bb41f7530754d27481a792 (patch) | |
tree | aa539f1e52ea35f7c9f7a3e6e2171d72863e51d4 /include | |
parent | f6c427663a158056cd8ca71c01f30653e4b313f7 (diff) | |
parent | e5fa443ea05f71b5253818890c6d32174cbab36f (diff) |
Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
[S390] qdio: FCP/SCSI write I/O stagnates on LPAR
[S390] Fix futex_atomic_cmpxchg_std inline assembly.
[S390] dcss: Fix Unlikely(x) != y
[S390] sclp: clean up send/receive naming scheme
[S390] etr: fix compile error on !SMP
[S390] qdio: fix qdio_activate timeout handling.
[S390] Initialize per cpu lowcores on cpu hotplug.
[S390] find bit corner case.
[S390] dasd: fix locking in __dasd_device_process_final_queue
[S390] Make sure enabled wait psw is loaded in default_idle.
[S390] Let NR_CPUS default to 32/64 on s390/s390x.
[S390] cio: Do timed recovery on workqueue.
[S390] cio: Remember to initialize recovery_lock.
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-s390/bitops.h | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/include/asm-s390/bitops.h b/include/asm-s390/bitops.h index ab83c844d04c..965394e69452 100644 --- a/include/asm-s390/bitops.h +++ b/include/asm-s390/bitops.h | |||
@@ -456,16 +456,18 @@ static inline unsigned long __ffz_word_loop(const unsigned long *addr, | |||
456 | 456 | ||
457 | asm volatile( | 457 | asm volatile( |
458 | #ifndef __s390x__ | 458 | #ifndef __s390x__ |
459 | " ahi %1,31\n" | 459 | " ahi %1,-1\n" |
460 | " srl %1,5\n" | 460 | " sra %1,5\n" |
461 | " jz 1f\n" | ||
461 | "0: c %2,0(%0,%3)\n" | 462 | "0: c %2,0(%0,%3)\n" |
462 | " jne 1f\n" | 463 | " jne 1f\n" |
463 | " la %0,4(%0)\n" | 464 | " la %0,4(%0)\n" |
464 | " brct %1,0b\n" | 465 | " brct %1,0b\n" |
465 | "1:\n" | 466 | "1:\n" |
466 | #else | 467 | #else |
467 | " aghi %1,63\n" | 468 | " aghi %1,-1\n" |
468 | " srlg %1,%1,6\n" | 469 | " srag %1,%1,6\n" |
470 | " jz 1f\n" | ||
469 | "0: cg %2,0(%0,%3)\n" | 471 | "0: cg %2,0(%0,%3)\n" |
470 | " jne 1f\n" | 472 | " jne 1f\n" |
471 | " la %0,8(%0)\n" | 473 | " la %0,8(%0)\n" |
@@ -491,16 +493,18 @@ static inline unsigned long __ffs_word_loop(const unsigned long *addr, | |||
491 | 493 | ||
492 | asm volatile( | 494 | asm volatile( |
493 | #ifndef __s390x__ | 495 | #ifndef __s390x__ |
494 | " ahi %1,31\n" | 496 | " ahi %1,-1\n" |
495 | " srl %1,5\n" | 497 | " sra %1,5\n" |
498 | " jz 1f\n" | ||
496 | "0: c %2,0(%0,%3)\n" | 499 | "0: c %2,0(%0,%3)\n" |
497 | " jne 1f\n" | 500 | " jne 1f\n" |
498 | " la %0,4(%0)\n" | 501 | " la %0,4(%0)\n" |
499 | " brct %1,0b\n" | 502 | " brct %1,0b\n" |
500 | "1:\n" | 503 | "1:\n" |
501 | #else | 504 | #else |
502 | " aghi %1,63\n" | 505 | " aghi %1,-1\n" |
503 | " srlg %1,%1,6\n" | 506 | " srag %1,%1,6\n" |
507 | " jz 1f\n" | ||
504 | "0: cg %2,0(%0,%3)\n" | 508 | "0: cg %2,0(%0,%3)\n" |
505 | " jne 1f\n" | 509 | " jne 1f\n" |
506 | " la %0,8(%0)\n" | 510 | " la %0,8(%0)\n" |