sparc64: Use sparc optimized fls and __fls for T4 and above

For T4 and above, patch fls and __fls functions
at the boot time to use lzcnt instruction.

Signed-off-by: Vijay Kumar <vijay.ac.kumar@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Vijay Kumar 2017-10-11 12:50:06 -06:00 committed by David S. Miller
parent 2b41ce5df2
commit 46ad8d2d22
2 changed files with 11 additions and 0 deletions

View File

@ -640,6 +640,8 @@ niagara4_patch:
nop nop
call niagara4_patch_pageops call niagara4_patch_pageops
nop nop
call niagara4_patch_fls
nop
ba,a,pt %xcc, 80f ba,a,pt %xcc, 80f
nop nop

View File

@ -3,6 +3,8 @@
* Copyright (C) 2012 David S. Miller <davem@davemloft.net> * Copyright (C) 2012 David S. Miller <davem@davemloft.net>
*/ */
#include <linux/linkage.h>
#define BRANCH_ALWAYS 0x10680000 #define BRANCH_ALWAYS 0x10680000
#define NOP 0x01000000 #define NOP 0x01000000
#define NG_DO_PATCH(OLD, NEW) \ #define NG_DO_PATCH(OLD, NEW) \
@ -52,3 +54,10 @@ niagara4_patch_pageops:
retl retl
nop nop
.size niagara4_patch_pageops,.-niagara4_patch_pageops .size niagara4_patch_pageops,.-niagara4_patch_pageops
ENTRY(niagara4_patch_fls)
NG_DO_PATCH(fls, NG4fls)
NG_DO_PATCH(__fls, __NG4fls)
retl
nop
ENDPROC(niagara4_patch_fls)