Skip to content

Commit

Permalink
[S390] find bit corner case.
Browse files Browse the repository at this point in the history
Fix [ext2_]find_first_[zero_]bit for the corner case of an all clear
or all set bit field by always handling that last word of the bit field
with __ffz_word/__ffs_word.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
  • Loading branch information
Martin Schwidefsky committed Feb 19, 2008
1 parent 03513bc commit a22fb7f
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions include/asm-s390/bitops.h
Original file line number Diff line number Diff line change
Expand Up @@ -456,16 +456,18 @@ static inline unsigned long __ffz_word_loop(const unsigned long *addr,

asm volatile(
#ifndef __s390x__
" ahi %1,31\n"
" srl %1,5\n"
" ahi %1,-1\n"
" sra %1,5\n"
" jz 1f\n"
"0: c %2,0(%0,%3)\n"
" jne 1f\n"
" la %0,4(%0)\n"
" brct %1,0b\n"
"1:\n"
#else
" aghi %1,63\n"
" srlg %1,%1,6\n"
" aghi %1,-1\n"
" srag %1,%1,6\n"
" jz 1f\n"
"0: cg %2,0(%0,%3)\n"
" jne 1f\n"
" la %0,8(%0)\n"
Expand All @@ -491,16 +493,18 @@ static inline unsigned long __ffs_word_loop(const unsigned long *addr,

asm volatile(
#ifndef __s390x__
" ahi %1,31\n"
" srl %1,5\n"
" ahi %1,-1\n"
" sra %1,5\n"
" jz 1f\n"
"0: c %2,0(%0,%3)\n"
" jne 1f\n"
" la %0,4(%0)\n"
" brct %1,0b\n"
"1:\n"
#else
" aghi %1,63\n"
" srlg %1,%1,6\n"
" aghi %1,-1\n"
" srag %1,%1,6\n"
" jz 1f\n"
"0: cg %2,0(%0,%3)\n"
" jne 1f\n"
" la %0,8(%0)\n"
Expand Down

0 comments on commit a22fb7f

Please sign in to comment.