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