diff options
author | Mark Brown <broonie@kernel.org> | 2024-09-12 12:38:44 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2024-09-12 12:38:44 +0100 |
commit | f10d52087cbe85dcff2af3dc94c5b9d06e6d4b9a (patch) | |
tree | d07ff0a3767fbb6118505de85ad657f78f512c06 /include/linux/bitmap.h | |
parent | 740c1c84bfa3d8c63bd3b01fb570e7452f51fbd8 (diff) | |
parent | b787a33864121a565aeb0e88561bf6062a19f99c (diff) |
spi: Merge up fixes
A patch for Qualcomm depends on some fixes.
Diffstat (limited to 'include/linux/bitmap.h')
-rw-r--r-- | include/linux/bitmap.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h index 8c4768c44a01..d3b66d77df7a 100644 --- a/include/linux/bitmap.h +++ b/include/linux/bitmap.h @@ -270,6 +270,18 @@ static inline void bitmap_copy_clear_tail(unsigned long *dst, dst[nbits / BITS_PER_LONG] &= BITMAP_LAST_WORD_MASK(nbits); } +static inline void bitmap_copy_and_extend(unsigned long *to, + const unsigned long *from, + unsigned int count, unsigned int size) +{ + unsigned int copy = BITS_TO_LONGS(count); + + memcpy(to, from, copy * sizeof(long)); + if (count % BITS_PER_LONG) + to[copy - 1] &= BITMAP_LAST_WORD_MASK(count); + memset(to + copy, 0, bitmap_size(size) - copy * sizeof(long)); +} + /* * On 32-bit systems bitmaps are represented as u32 arrays internally. On LE64 * machines the order of hi and lo parts of numbers match the bitmap structure. |