1 /*
2  * SPDX-License-Identifier: BSD-2-Clause
3  *
4  * Copyright (c) 2020 Western Digital Corporation or its affiliates.
5  *
6  * Authors:
7  *   Anup Patel <anup.patel@wdc.com>
8  */
9 
10 #include <sbi/sbi_bitmap.h>
11 
__bitmap_and(unsigned long * dst,const unsigned long * bitmap1,const unsigned long * bitmap2,int bits)12 void __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,
13 		  const unsigned long *bitmap2, int bits)
14 {
15 	int k;
16 	int nr = BITS_TO_LONGS(bits);
17 
18 	for (k = 0; k < nr; k++)
19 		dst[k] = bitmap1[k] & bitmap2[k];
20 }
21 
__bitmap_or(unsigned long * dst,const unsigned long * bitmap1,const unsigned long * bitmap2,int bits)22 void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1,
23 		 const unsigned long *bitmap2, int bits)
24 {
25 	int k;
26 	int nr = BITS_TO_LONGS(bits);
27 
28 	for (k = 0; k < nr; k++)
29 		dst[k] = bitmap1[k] | bitmap2[k];
30 }
31 
__bitmap_xor(unsigned long * dst,const unsigned long * bitmap1,const unsigned long * bitmap2,int bits)32 void __bitmap_xor(unsigned long *dst, const unsigned long *bitmap1,
33 		  const unsigned long *bitmap2, int bits)
34 {
35 	int k;
36 	int nr = BITS_TO_LONGS(bits);
37 
38 	for (k = 0; k < nr; k++)
39 		dst[k] = bitmap1[k] ^ bitmap2[k];
40 }
41