xref: /openbmc/linux/arch/openrisc/include/asm/bitops/fls.h (revision 3fc2579e6f162fcff964f5aa01c8a29438ca5c05)
158e0166aSJonas Bonn /*
258e0166aSJonas Bonn  * OpenRISC Linux
358e0166aSJonas Bonn  *
458e0166aSJonas Bonn  * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
558e0166aSJonas Bonn  *
658e0166aSJonas Bonn  * This program is free software; you can redistribute it and/or modify
758e0166aSJonas Bonn  * it under the terms of the GNU General Public License as published by
858e0166aSJonas Bonn  * the Free Software Foundation; either version 2 of the License, or
958e0166aSJonas Bonn  * (at your option) any later version.
1058e0166aSJonas Bonn  */
1158e0166aSJonas Bonn 
1258e0166aSJonas Bonn #ifndef __ASM_OPENRISC_FLS_H
1358e0166aSJonas Bonn #define __ASM_OPENRISC_FLS_H
1458e0166aSJonas Bonn 
1558e0166aSJonas Bonn 
1658e0166aSJonas Bonn #ifdef CONFIG_OPENRISC_HAVE_INST_FL1
1758e0166aSJonas Bonn 
18*3fc2579eSMatthew Wilcox static inline int fls(unsigned int x)
1958e0166aSJonas Bonn {
2058e0166aSJonas Bonn 	int ret;
2158e0166aSJonas Bonn 
2258e0166aSJonas Bonn 	__asm__ ("l.fl1 %0,%1"
2358e0166aSJonas Bonn 		 : "=r" (ret)
2458e0166aSJonas Bonn 		 : "r" (x));
2558e0166aSJonas Bonn 
2658e0166aSJonas Bonn 	return ret;
2758e0166aSJonas Bonn }
2858e0166aSJonas Bonn 
2958e0166aSJonas Bonn #else
3058e0166aSJonas Bonn #include <asm-generic/bitops/fls.h>
3158e0166aSJonas Bonn #endif
3258e0166aSJonas Bonn 
3358e0166aSJonas Bonn #endif /* __ASM_OPENRISC_FLS_H */
34