Skip to content
Snippets Groups Projects
Select Git revision
  • ed81f5fc3c35c22d0fc62813cfa4e11b6aea0a64
  • master default
  • android-container
  • nanopc-t4
  • for-kernelci
  • WIP-syscall
  • v4.16-rc5
  • v4.16-rc4
  • v4.16-rc3
  • v4.16-rc2
  • v4.16-rc1
  • v4.15
  • v4.15-rc9
  • v4.15-rc8
  • v4.15-rc7
  • v4.15-rc6
  • v4.15-rc5
  • v4.15-rc4
  • v4.15-rc3
  • v4.15-rc2
  • v4.15-rc1
  • v4.14
  • v4.14-rc8
  • v4.14-rc7
  • v4.14-rc6
  • v4.14-rc5
26 results

fpga-region.c

Blame
  • find_last_bit.c 1.05 KiB
    /* find_last_bit.c: fallback find next bit implementation
     *
     * Copyright (C) 2008 IBM Corporation
     * Written by Rusty Russell <rusty@rustcorp.com.au>
     * (Inspired by David Howell's find_next_bit implementation)
     *
     * Rewritten by Yury Norov <yury.norov@gmail.com> to decrease
     * size and improve performance, 2015.
     *
     * This program is free software; you can redistribute it and/or
     * modify it under the terms of the GNU General Public License
     * as published by the Free Software Foundation; either version
     * 2 of the License, or (at your option) any later version.
     */
    
    #include <linux/bitops.h>
    #include <linux/bitmap.h>
    #include <linux/export.h>
    #include <linux/kernel.h>
    
    #ifndef find_last_bit
    
    unsigned long find_last_bit(const unsigned long *addr, unsigned long size)
    {
    	if (size) {
    		unsigned long val = BITMAP_LAST_WORD_MASK(size);
    		unsigned long idx = (size-1) / BITS_PER_LONG;
    
    		do {
    			val &= addr[idx];
    			if (val)
    				return idx * BITS_PER_LONG + __fls(val);
    
    			val = ~0ul;
    		} while (idx--);
    	}
    	return size;
    }
    EXPORT_SYMBOL(find_last_bit);
    
    #endif