From 3226bd93ce41ed0c815a9021f5e489cfe3e83fa3 Mon Sep 17 00:00:00 2001 From: Anup Patel Date: Wed, 4 Mar 2020 12:29:15 +0530 Subject: lib: Simple bitmap library We add simple bitmap library which will help us create and maintain bitmaps. It will also help us create a simple HART mask library. Signed-off-by: Anup Patel Reviewed-by: Bin Meng Reviewed-by: Atish Patra --- lib/sbi/objects.mk | 1 + lib/sbi/sbi_bitmap.c | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 lib/sbi/sbi_bitmap.c (limited to 'lib/sbi') diff --git a/lib/sbi/objects.mk b/lib/sbi/objects.mk index d2a3ebe..5f1bdbf 100644 --- a/lib/sbi/objects.mk +++ b/lib/sbi/objects.mk @@ -12,6 +12,7 @@ libsbi-objs-y += riscv_atomic.o libsbi-objs-y += riscv_hardfp.o libsbi-objs-y += riscv_locks.o +libsbi-objs-y += sbi_bitmap.o libsbi-objs-y += sbi_bitops.o libsbi-objs-y += sbi_console.o libsbi-objs-y += sbi_ecall.o diff --git a/lib/sbi/sbi_bitmap.c b/lib/sbi/sbi_bitmap.c new file mode 100644 index 0000000..e74b6bb --- /dev/null +++ b/lib/sbi/sbi_bitmap.c @@ -0,0 +1,40 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2020 Western Digital Corporation or its affiliates. + * + * Authors: + * Anup Patel + */ + +#include + +void __bitmap_and(unsigned long *dst, const unsigned long *bitmap1, + const unsigned long *bitmap2, int bits) +{ + int k; + int nr = BITS_TO_LONGS(bits); + + for (k = 0; k < nr; k++) + dst[k] = bitmap1[k] & bitmap2[k]; +} + +void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1, + const unsigned long *bitmap2, int bits) +{ + int k; + int nr = BITS_TO_LONGS(bits); + + for (k = 0; k < nr; k++) + dst[k] = bitmap1[k] | bitmap2[k]; +} + +void __bitmap_xor(unsigned long *dst, const unsigned long *bitmap1, + const unsigned long *bitmap2, int bits) +{ + int k; + int nr = BITS_TO_LONGS(bits); + + for (k = 0; k < nr; k++) + dst[k] = bitmap1[k] ^ bitmap2[k]; +} -- cgit v1.2.3