Merge tag 'dmaengine-5.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul...
[linux-2.6-microblaze.git] / tools / testing / radix-tree / bitmap.c
1 /* lib/bitmap.c pulls in at least two other files. */
2
3 #include <linux/bitmap.h>
4
5 void bitmap_clear(unsigned long *map, unsigned int start, int len)
6 {
7         unsigned long *p = map + BIT_WORD(start);
8         const unsigned int size = start + len;
9         int bits_to_clear = BITS_PER_LONG - (start % BITS_PER_LONG);
10         unsigned long mask_to_clear = BITMAP_FIRST_WORD_MASK(start);
11
12         while (len - bits_to_clear >= 0) {
13                 *p &= ~mask_to_clear;
14                 len -= bits_to_clear;
15                 bits_to_clear = BITS_PER_LONG;
16                 mask_to_clear = ~0UL;
17                 p++;
18         }
19         if (len) {
20                 mask_to_clear &= BITMAP_LAST_WORD_MASK(size);
21                 *p &= ~mask_to_clear;
22         }
23 }