2.5.40 s390 (10/27): bitops bug.
PATCH 1/1 2.5.40 s390 (10/27): bitops bug.
Fix broken bitops for unaligned atomic operations on s390.
include/asm-s390/bitops.h +5 -5
@@ -59,8 +59,8 @@ addr = (unsigned long ) ptr;#if ALIGN_CS ==1 - addr ^= addr &3 ;/* align address to 4 */ nr += (addr &3 ) <<3 ;/* add alignment to bit number */ + addr ^= addr &3 ;/* align address to 4 */ #endif addr += (nr ^ (nr &31 )) >>3 ;/* calculate address for CS */ mask =1UL << (nr &31 );/* make OR mask */
@@ -84,8 +84,8 @@ addr = (unsigned long ) ptr;#if ALIGN_CS ==1 - addr ^= addr &3 ;/* align address to 4 */ nr += (addr &3 ) <<3 ;/* add alignment to bit number */ + addr ^= addr &3 ;/* align address to 4 */ #endif addr += (nr ^ (nr &31 )) >>3 ;/* calculate address for CS */ mask = ~(1UL << (nr &31 ));/* make AND mask */
@@ -109,8 +109,8 @@ addr = (unsigned long ) ptr;#if ALIGN_CS ==1 - addr ^= addr &3 ;/* align address to 4 */ nr += (addr &3 ) <<3 ;/* add alignment to bit number */ + addr ^= addr &3 ;/* align address to 4 */ #endif addr += (nr ^ (nr &31 )) >>3 ;/* calculate address for CS */ mask =1UL << (nr &31 );/* make XOR mask */
@@ -160,8 +160,8 @@ addr = (unsigned long ) ptr;#if ALIGN_CS ==1 - addr ^= addr &3 ;/* align address to 4 */ nr += (addr &3 ) <<3 ;/* add alignment to bit number */ + addr ^= addr &3 ;/* align address to 4 */ #endif addr += (nr ^ (nr &31 )) >>3 ;/* calculate address for CS */ mask = ~(1UL << (nr &31 ));/* make AND mask */
@@ -186,8 +186,8 @@ addr = (unsigned long ) ptr;#if ALIGN_CS ==1 - addr ^= addr &3 ;/* align address to 4 */ nr += (addr &3 ) <<3 ;/* add alignment to bit number */ + addr ^= addr &3 ;/* align address to 4 */ #endif addr += (nr ^ (nr &31 )) >>3 ;/* calculate address for CS */ mask =1UL << (nr &31 );/* make XOR mask */
include/asm-s390x/bitops.h +6 -6
@@ -63,8 +63,8 @@ addr = (unsigned long ) ptr;#if ALIGN_CS ==1 - addr ^= addr &7 ;/* align address to 8 */ nr += (addr &7 ) <<3 ;/* add alignment to bit number */ + addr ^= addr &7 ;/* align address to 8 */ #endif addr += (nr ^ (nr &63 )) >>3 ;/* calculate address for CS */ mask =1UL << (nr &63 );/* make OR mask */
@@ -88,8 +88,8 @@ addr = (unsigned long ) ptr;#if ALIGN_CS ==1 - addr ^= addr &7 ;/* align address to 8 */ nr += (addr &7 ) <<3 ;/* add alignment to bit number */ + addr ^= addr &7 ;/* align address to 8 */ #endif addr += (nr ^ (nr &63 )) >>3 ;/* calculate address for CS */ mask = ~(1UL << (nr &63 ));/* make AND mask */
@@ -113,8 +113,8 @@ addr = (unsigned long ) ptr;#if ALIGN_CS ==1 - addr ^= addr &7 ;/* align address to 8 */ nr += (addr &7 ) <<3 ;/* add alignment to bit number */ + addr ^= addr &7 ;/* align address to 8 */ #endif addr += (nr ^ (nr &63 )) >>3 ;/* calculate address for CS */ mask =1UL << (nr &63 );/* make XOR mask */
@@ -139,8 +139,8 @@ addr = (unsigned long ) ptr;#if ALIGN_CS ==1 - addr ^= addr &7 ;/* align address to 8 */ nr += (addr &7 ) <<3 ;/* add alignment to bit number */ + addr ^= addr &7 ;/* align address to 8 */ #endif addr += (nr ^ (nr &63 )) >>3 ;/* calculate address for CS */ mask =1UL << (nr &63 );/* make OR/test mask */
@@ -166,8 +166,8 @@ addr = (unsigned long ) ptr;#if ALIGN_CS ==1 - addr ^= addr &7 ;/* align address to 8 */ nr += (addr &7 ) <<3 ;/* add alignment to bit number */ + addr ^= addr &7 ;/* align address to 8 */ #endif addr += (nr ^ (nr &63 )) >>3 ;/* calculate address for CS */ mask = ~(1UL << (nr &63 ));/* make AND mask */
@@ -193,8 +193,8 @@ addr = (unsigned long ) ptr;#if ALIGN_CS ==1 - addr ^= addr &7 ;/* align address to 8 */ nr += (addr &7 ) <<3 ;/* add alignment to bit number */ + addr ^= addr &7 ;/* align address to 8 */ #endif addr += (nr ^ (nr &63 )) >>3 ;/* calculate address for CS */ mask =1UL << (nr &63 );/* make XOR mask */