1/* fls64.S: SPARC default __fls definition. 2 * 3 * SPARC default __fls definition, which follows the same algorithm as 4 * in generic __fls(). This function will be boot time patched on T4 5 * and onward. 6 */ 7 8#include <linux/linkage.h> 9#include <asm/export.h> 10 11 .text 12 .register %g2, #scratch 13 .register %g3, #scratch 14ENTRY(__fls) 15 mov -1, %g2 16 sllx %g2, 32, %g2 17 and %o0, %g2, %g2 18 brnz,pt %g2, 1f 19 mov 63, %g1 20 sllx %o0, 32, %o0 21 mov 31, %g1 221: 23 mov -1, %g2 24 sllx %g2, 48, %g2 25 and %o0, %g2, %g2 26 brnz,pt %g2, 2f 27 mov -1, %g2 28 sllx %o0, 16, %o0 29 add %g1, -16, %g1 302: 31 mov -1, %g2 32 sllx %g2, 56, %g2 33 and %o0, %g2, %g2 34 brnz,pt %g2, 3f 35 mov -1, %g2 36 sllx %o0, 8, %o0 37 add %g1, -8, %g1 383: 39 sllx %g2, 60, %g2 40 and %o0, %g2, %g2 41 brnz,pt %g2, 4f 42 mov -1, %g2 43 sllx %o0, 4, %o0 44 add %g1, -4, %g1 454: 46 sllx %g2, 62, %g2 47 and %o0, %g2, %g2 48 brnz,pt %g2, 5f 49 mov -1, %g3 50 sllx %o0, 2, %o0 51 add %g1, -2, %g1 525: 53 mov 0, %g2 54 sllx %g3, 63, %g3 55 and %o0, %g3, %o0 56 movre %o0, 1, %g2 57 sub %g1, %g2, %g1 58 jmp %o7+8 59 sra %g1, 0, %o0 60ENDPROC(__fls) 61EXPORT_SYMBOL(__fls) 62