xref: /openbmc/linux/arch/openrisc/include/asm/bitops/fls.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*2874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
258e0166aSJonas Bonn /*
358e0166aSJonas Bonn  * OpenRISC Linux
458e0166aSJonas Bonn  *
558e0166aSJonas Bonn  * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
658e0166aSJonas Bonn  */
758e0166aSJonas Bonn 
858e0166aSJonas Bonn #ifndef __ASM_OPENRISC_FLS_H
958e0166aSJonas Bonn #define __ASM_OPENRISC_FLS_H
1058e0166aSJonas Bonn 
1158e0166aSJonas Bonn 
1258e0166aSJonas Bonn #ifdef CONFIG_OPENRISC_HAVE_INST_FL1
1358e0166aSJonas Bonn 
fls(unsigned int x)143fc2579eSMatthew Wilcox static inline int fls(unsigned int x)
1558e0166aSJonas Bonn {
1658e0166aSJonas Bonn 	int ret;
1758e0166aSJonas Bonn 
1858e0166aSJonas Bonn 	__asm__ ("l.fl1 %0,%1"
1958e0166aSJonas Bonn 		 : "=r" (ret)
2058e0166aSJonas Bonn 		 : "r" (x));
2158e0166aSJonas Bonn 
2258e0166aSJonas Bonn 	return ret;
2358e0166aSJonas Bonn }
2458e0166aSJonas Bonn 
2558e0166aSJonas Bonn #else
2658e0166aSJonas Bonn #include <asm-generic/bitops/fls.h>
2758e0166aSJonas Bonn #endif
2858e0166aSJonas Bonn 
2958e0166aSJonas Bonn #endif /* __ASM_OPENRISC_FLS_H */
30