mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	[PATCH] bitops: hweight() related cleanup
By defining generic hweight*() routines - hweight64() will be defined on all architectures - hweight_long() will use architecture optimized hweight32() or hweight64() I found two possible cleanups by these reasons. Signed-off-by: Akinobu Mita <mita@miraclelinux.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
		
							parent
							
								
									e9bebd6f3a
								
							
						
					
					
						commit
						37d54111c1
					
				
					 2 changed files with 3 additions and 19 deletions
				
			
		|  | @ -306,8 +306,7 @@ u64 hpsb_allocate_and_register_addrspace(struct hpsb_highlevel *hl, | |||
| 	u64 align_mask = ~(alignment - 1); | ||||
| 
 | ||||
| 	if ((alignment & 3) || (alignment > 0x800000000000ULL) || | ||||
| 	    ((hweight32(alignment >> 32) + | ||||
| 	      hweight32(alignment & 0xffffffff) != 1))) { | ||||
| 	    (hweight64(alignment) != 1)) { | ||||
| 		HPSB_ERR("%s called with invalid alignment: 0x%048llx", | ||||
| 			 __FUNCTION__, (unsigned long long)alignment); | ||||
| 		return retval; | ||||
|  |  | |||
							
								
								
									
										19
									
								
								lib/bitmap.c
									
										
									
									
									
								
							
							
						
						
									
										19
									
								
								lib/bitmap.c
									
										
									
									
									
								
							|  | @ -253,33 +253,18 @@ int __bitmap_subset(const unsigned long *bitmap1, | |||
| } | ||||
| EXPORT_SYMBOL(__bitmap_subset); | ||||
| 
 | ||||
| #if BITS_PER_LONG == 32 | ||||
| int __bitmap_weight(const unsigned long *bitmap, int bits) | ||||
| { | ||||
| 	int k, w = 0, lim = bits/BITS_PER_LONG; | ||||
| 
 | ||||
| 	for (k = 0; k < lim; k++) | ||||
| 		w += hweight32(bitmap[k]); | ||||
| 		w += hweight_long(bitmap[k]); | ||||
| 
 | ||||
| 	if (bits % BITS_PER_LONG) | ||||
| 		w += hweight32(bitmap[k] & BITMAP_LAST_WORD_MASK(bits)); | ||||
| 		w += hweight_long(bitmap[k] & BITMAP_LAST_WORD_MASK(bits)); | ||||
| 
 | ||||
| 	return w; | ||||
| } | ||||
| #else | ||||
| int __bitmap_weight(const unsigned long *bitmap, int bits) | ||||
| { | ||||
| 	int k, w = 0, lim = bits/BITS_PER_LONG; | ||||
| 
 | ||||
| 	for (k = 0; k < lim; k++) | ||||
| 		w += hweight64(bitmap[k]); | ||||
| 
 | ||||
| 	if (bits % BITS_PER_LONG) | ||||
| 		w += hweight64(bitmap[k] & BITMAP_LAST_WORD_MASK(bits)); | ||||
| 
 | ||||
| 	return w; | ||||
| } | ||||
| #endif | ||||
| EXPORT_SYMBOL(__bitmap_weight); | ||||
| 
 | ||||
| /*
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Akinobu Mita
						Akinobu Mita