18a44513648da0c5f5551f96b329cf56b66f5b303pkanwar/* 28a44513648da0c5f5551f96b329cf56b66f5b303pkanwar * WARNING: Do *NOT* ever include this file, only for internal use! 38a44513648da0c5f5551f96b329cf56b66f5b303pkanwar */ 48a44513648da0c5f5551f96b329cf56b66f5b303pkanwar#ifndef _NFCT_BITOPS_H_ 58a44513648da0c5f5551f96b329cf56b66f5b303pkanwar#define _NFCT_BITOPS_H_ 68a44513648da0c5f5551f96b329cf56b66f5b303pkanwar 78a44513648da0c5f5551f96b329cf56b66f5b303pkanwarstatic inline void set_bit(int nr, uint32_t *addr) 88a44513648da0c5f5551f96b329cf56b66f5b303pkanwar{ 98a44513648da0c5f5551f96b329cf56b66f5b303pkanwar addr[nr >> 5] |= (1UL << (nr & 31)); 108a44513648da0c5f5551f96b329cf56b66f5b303pkanwar} 118a44513648da0c5f5551f96b329cf56b66f5b303pkanwar 128a44513648da0c5f5551f96b329cf56b66f5b303pkanwarstatic inline void unset_bit(int nr, uint32_t *addr) 138a44513648da0c5f5551f96b329cf56b66f5b303pkanwar{ 148a44513648da0c5f5551f96b329cf56b66f5b303pkanwar addr[nr >> 5] &= ~(1UL << (nr & 31)); 158a44513648da0c5f5551f96b329cf56b66f5b303pkanwar} 168a44513648da0c5f5551f96b329cf56b66f5b303pkanwar 178a44513648da0c5f5551f96b329cf56b66f5b303pkanwarstatic inline void set_bit_u16(int nr, uint16_t *addr) 188a44513648da0c5f5551f96b329cf56b66f5b303pkanwar{ 198a44513648da0c5f5551f96b329cf56b66f5b303pkanwar addr[nr >> 4] |= (1UL << (nr & 15)); 208a44513648da0c5f5551f96b329cf56b66f5b303pkanwar} 218a44513648da0c5f5551f96b329cf56b66f5b303pkanwar 228a44513648da0c5f5551f96b329cf56b66f5b303pkanwarstatic inline void unset_bit_u16(int nr, uint16_t *addr) 238a44513648da0c5f5551f96b329cf56b66f5b303pkanwar{ 248a44513648da0c5f5551f96b329cf56b66f5b303pkanwar addr[nr >> 4] &= ~(1UL << (nr & 15)); 258a44513648da0c5f5551f96b329cf56b66f5b303pkanwar} 268a44513648da0c5f5551f96b329cf56b66f5b303pkanwar 278a44513648da0c5f5551f96b329cf56b66f5b303pkanwarstatic inline void 288a44513648da0c5f5551f96b329cf56b66f5b303pkanwarset_bitmask_u32(uint32_t *buf1, const uint32_t *buf2, int len) 298a44513648da0c5f5551f96b329cf56b66f5b303pkanwar{ 308a44513648da0c5f5551f96b329cf56b66f5b303pkanwar int i; 318a44513648da0c5f5551f96b329cf56b66f5b303pkanwar 328a44513648da0c5f5551f96b329cf56b66f5b303pkanwar for (i=0; i<len; i++) 338a44513648da0c5f5551f96b329cf56b66f5b303pkanwar buf1[i] |= buf2[i]; 348a44513648da0c5f5551f96b329cf56b66f5b303pkanwar} 358a44513648da0c5f5551f96b329cf56b66f5b303pkanwar 368a44513648da0c5f5551f96b329cf56b66f5b303pkanwarstatic inline void 378a44513648da0c5f5551f96b329cf56b66f5b303pkanwarunset_bitmask_u32(uint32_t *buf1, const uint32_t *buf2, int len) 388a44513648da0c5f5551f96b329cf56b66f5b303pkanwar{ 398a44513648da0c5f5551f96b329cf56b66f5b303pkanwar int i; 408a44513648da0c5f5551f96b329cf56b66f5b303pkanwar 418a44513648da0c5f5551f96b329cf56b66f5b303pkanwar for (i=0; i<len; i++) 428a44513648da0c5f5551f96b329cf56b66f5b303pkanwar buf1[i] &= ~buf2[i]; 438a44513648da0c5f5551f96b329cf56b66f5b303pkanwar} 448a44513648da0c5f5551f96b329cf56b66f5b303pkanwar 458a44513648da0c5f5551f96b329cf56b66f5b303pkanwarstatic inline int test_bit(int nr, const uint32_t *addr) 468a44513648da0c5f5551f96b329cf56b66f5b303pkanwar{ 478a44513648da0c5f5551f96b329cf56b66f5b303pkanwar return ((1UL << (nr & 31)) & (addr[nr >> 5])) != 0; 488a44513648da0c5f5551f96b329cf56b66f5b303pkanwar} 498a44513648da0c5f5551f96b329cf56b66f5b303pkanwar 508a44513648da0c5f5551f96b329cf56b66f5b303pkanwarstatic inline int 518a44513648da0c5f5551f96b329cf56b66f5b303pkanwartest_bitmask_u32(const uint32_t *buf1, const uint32_t *buf2, int len) 528a44513648da0c5f5551f96b329cf56b66f5b303pkanwar{ 538a44513648da0c5f5551f96b329cf56b66f5b303pkanwar int i; 548a44513648da0c5f5551f96b329cf56b66f5b303pkanwar 558a44513648da0c5f5551f96b329cf56b66f5b303pkanwar for (i=0; i<len; i++) { 568a44513648da0c5f5551f96b329cf56b66f5b303pkanwar if ((buf1[i] & buf2[i]) != buf2[i]) { 578a44513648da0c5f5551f96b329cf56b66f5b303pkanwar return 0; 588a44513648da0c5f5551f96b329cf56b66f5b303pkanwar } 598a44513648da0c5f5551f96b329cf56b66f5b303pkanwar } 608a44513648da0c5f5551f96b329cf56b66f5b303pkanwar return 1; 618a44513648da0c5f5551f96b329cf56b66f5b303pkanwar} 628a44513648da0c5f5551f96b329cf56b66f5b303pkanwar 638a44513648da0c5f5551f96b329cf56b66f5b303pkanwarstatic inline int 648a44513648da0c5f5551f96b329cf56b66f5b303pkanwartest_bitmask_u32_or(const uint32_t *buf1, const uint32_t *buf2, int len) 658a44513648da0c5f5551f96b329cf56b66f5b303pkanwar{ 668a44513648da0c5f5551f96b329cf56b66f5b303pkanwar int i; 678a44513648da0c5f5551f96b329cf56b66f5b303pkanwar 688a44513648da0c5f5551f96b329cf56b66f5b303pkanwar for (i=0; i<len; i++) { 698a44513648da0c5f5551f96b329cf56b66f5b303pkanwar if (buf1[i] & buf2[i]) { 708a44513648da0c5f5551f96b329cf56b66f5b303pkanwar return 1; 718a44513648da0c5f5551f96b329cf56b66f5b303pkanwar } 728a44513648da0c5f5551f96b329cf56b66f5b303pkanwar } 738a44513648da0c5f5551f96b329cf56b66f5b303pkanwar return 0; 748a44513648da0c5f5551f96b329cf56b66f5b303pkanwar} 758a44513648da0c5f5551f96b329cf56b66f5b303pkanwar 768a44513648da0c5f5551f96b329cf56b66f5b303pkanwar#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) 778a44513648da0c5f5551f96b329cf56b66f5b303pkanwar 788a44513648da0c5f5551f96b329cf56b66f5b303pkanwar#endif 79