[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 1/3] bitops: fix types
From: |
blauwirbel |
Subject: |
[Qemu-devel] [PATCH v2 1/3] bitops: fix types |
Date: |
Sun, 8 Jul 2012 19:22:31 +0000 |
From: Blue Swirl <address@hidden>
Use 'unsigned int' for bit numbers instead of 'unsigned long' or
'int'. Adjust asserts.
Signed-off-by: Blue Swirl <address@hidden>
---
bitops.h | 46 ++++++++++++++++++++++++++--------------------
1 files changed, 26 insertions(+), 20 deletions(-)
diff --git a/bitops.h b/bitops.h
index b967ef3..f6ac721 100644
--- a/bitops.h
+++ b/bitops.h
@@ -28,7 +28,7 @@
*
* Undefined if no bit exists, so code should check against 0 first.
*/
-static unsigned long bitops_ffsl(unsigned long word)
+static unsigned int bitops_ffsl(unsigned long word)
{
int num = 0;
@@ -66,7 +66,7 @@ static unsigned long bitops_ffsl(unsigned long word)
*
* Undefined if no set bit exists, so code should check against 0 first.
*/
-static inline unsigned long bitops_flsl(unsigned long word)
+static inline unsigned int bitops_flsl(unsigned long word)
{
int num = BITS_PER_LONG - 1;
@@ -104,7 +104,7 @@ static inline unsigned long bitops_flsl(unsigned long word)
*
* Undefined if no zero exists, so code should check against ~0UL first.
*/
-static inline unsigned long ffz(unsigned long word)
+static inline unsigned int ffz(unsigned long word)
{
return bitops_ffsl(~word);
}
@@ -114,7 +114,7 @@ static inline unsigned long ffz(unsigned long word)
* @nr: the bit to set
* @addr: the address to start counting from
*/
-static inline void set_bit(int nr, volatile unsigned long *addr)
+static inline void set_bit(unsigned int nr, volatile unsigned long *addr)
{
unsigned long mask = BIT_MASK(nr);
unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr);
@@ -127,7 +127,7 @@ static inline void set_bit(int nr, volatile unsigned long
*addr)
* @nr: Bit to clear
* @addr: Address to start counting from
*/
-static inline void clear_bit(int nr, volatile unsigned long *addr)
+static inline void clear_bit(unsigned int nr, volatile unsigned long *addr)
{
unsigned long mask = BIT_MASK(nr);
unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr);
@@ -140,7 +140,7 @@ static inline void clear_bit(int nr, volatile unsigned long
*addr)
* @nr: Bit to change
* @addr: Address to start counting from
*/
-static inline void change_bit(int nr, volatile unsigned long *addr)
+static inline void change_bit(unsigned int nr, volatile unsigned long *addr)
{
unsigned long mask = BIT_MASK(nr);
unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr);
@@ -153,7 +153,8 @@ static inline void change_bit(int nr, volatile unsigned
long *addr)
* @nr: Bit to set
* @addr: Address to count from
*/
-static inline int test_and_set_bit(int nr, volatile unsigned long *addr)
+static inline int test_and_set_bit(unsigned int nr,
+ volatile unsigned long *addr)
{
unsigned long mask = BIT_MASK(nr);
unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr);
@@ -168,7 +169,8 @@ static inline int test_and_set_bit(int nr, volatile
unsigned long *addr)
* @nr: Bit to clear
* @addr: Address to count from
*/
-static inline int test_and_clear_bit(int nr, volatile unsigned long *addr)
+static inline int test_and_clear_bit(unsigned int nr,
+ volatile unsigned long *addr)
{
unsigned long mask = BIT_MASK(nr);
unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr);
@@ -183,7 +185,8 @@ static inline int test_and_clear_bit(int nr, volatile
unsigned long *addr)
* @nr: Bit to change
* @addr: Address to count from
*/
-static inline int test_and_change_bit(int nr, volatile unsigned long *addr)
+static inline int test_and_change_bit(unsigned int nr,
+ volatile unsigned long *addr)
{
unsigned long mask = BIT_MASK(nr);
unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr);
@@ -198,7 +201,8 @@ static inline int test_and_change_bit(int nr, volatile
unsigned long *addr)
* @nr: bit number to test
* @addr: Address to start counting from
*/
-static inline int test_bit(int nr, const volatile unsigned long *addr)
+static inline int test_bit(unsigned int nr,
+ const volatile unsigned long *addr)
{
return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
}
@@ -282,9 +286,10 @@ static inline unsigned long hweight_long(unsigned long w)
*
* Returns: the value of the bit field extracted from the input value.
*/
-static inline uint32_t extract32(uint32_t value, int start, int length)
+static inline uint32_t extract32(uint32_t value, unsigned int start,
+ unsigned int length)
{
- assert(start >= 0 && length > 0 && length <= 32 - start);
+ assert(start < 32 && length > 0 && length <= 32 && start + length <= 32);
return (value >> start) & (~0U >> (32 - length));
}
@@ -301,9 +306,10 @@ static inline uint32_t extract32(uint32_t value, int
start, int length)
*
* Returns: the value of the bit field extracted from the input value.
*/
-static inline uint64_t extract64(uint64_t value, int start, int length)
+static inline uint64_t extract64(uint64_t value, unsigned int start,
+ unsigned int length)
{
- assert(start >= 0 && length > 0 && length <= 64 - start);
+ assert(start < 64 && length > 0 && length <= 64 && start + length <= 64);
return (value >> start) & (~0ULL >> (64 - length));
}
@@ -324,11 +330,11 @@ static inline uint64_t extract64(uint64_t value, int
start, int length)
*
* Returns: the modified @value.
*/
-static inline uint32_t deposit32(uint32_t value, int start, int length,
- uint32_t fieldval)
+static inline uint32_t deposit32(uint32_t value, unsigned int start,
+ unsigned int length, uint32_t fieldval)
{
uint32_t mask;
- assert(start >= 0 && length > 0 && length <= 32 - start);
+ assert(start < 32 && length > 0 && length <= 32 && start + length <= 32);
mask = (~0U >> (32 - length)) << start;
return (value & ~mask) | ((fieldval << start) & mask);
}
@@ -350,11 +356,11 @@ static inline uint32_t deposit32(uint32_t value, int
start, int length,
*
* Returns: the modified @value.
*/
-static inline uint64_t deposit64(uint64_t value, int start, int length,
- uint64_t fieldval)
+static inline uint64_t deposit64(uint64_t value, unsigned int start,
+ unsigned int length, uint64_t fieldval)
{
uint64_t mask;
- assert(start >= 0 && length > 0 && length <= 64 - start);
+ assert(start < 64 && length > 0 && length <= 64 && start + length <= 64);
mask = (~0ULL >> (64 - length)) << start;
return (value & ~mask) | ((fieldval << start) & mask);
}
--
1.7.2.5
- [Qemu-devel] [PATCH v2 0/3] bitops patches, blauwirbel, 2012/07/08
- [Qemu-devel] [PATCH v2 2/3] bitops: drop volatile qualifier, blauwirbel, 2012/07/08
- [Qemu-devel] [PATCH v2 1/3] bitops: fix types,
blauwirbel <=
- Re: [Qemu-devel] [PATCH v2 1/3] bitops: fix types, Markus Armbruster, 2012/07/09
- Re: [Qemu-devel] [PATCH v2 1/3] bitops: fix types, Blue Swirl, 2012/07/10
- Re: [Qemu-devel] [PATCH v2 1/3] bitops: fix types, Peter Maydell, 2012/07/10
- Re: [Qemu-devel] [PATCH v2 1/3] bitops: fix types, Blue Swirl, 2012/07/10
- Re: [Qemu-devel] [PATCH v2 1/3] bitops: fix types, Peter Maydell, 2012/07/10
- Re: [Qemu-devel] [PATCH v2 1/3] bitops: fix types, Blue Swirl, 2012/07/12
- Re: [Qemu-devel] [PATCH v2 1/3] bitops: fix types, Peter Maydell, 2012/07/12
Re: [Qemu-devel] [PATCH v2 1/3] bitops: fix types, Kevin Wolf, 2012/07/11