summaryrefslogtreecommitdiff
path: root/net/batman-adv/soft-interface.h
diff options
context:
space:
mode:
authorKevin Hao <haokexin@gmail.com>2016-07-23 14:42:41 +0530
committerMichael Ellerman <mpe@ellerman.id.au>2016-08-01 11:15:05 +1000
commit4db7327194dba0cb91f274b0f606785a9ee5108d (patch)
tree82498aa2772fa1b786e46d4a451c6b0bab037774 /net/batman-adv/soft-interface.h
parentbfbfc8a43c028fe3c77c00c4368890e004ca268e (diff)
powerpc: Add option to use jump label for cpu_has_feature()
We do binary patching of asm code using CPU features, which is a one-time operation, done during early boot. However checks of CPU features in C code are currently done at run time, even though the set of CPU features can never change after boot. We can optimise this by using jump labels to implement cpu_has_feature(), meaning checks in C code are binary patched into a single nop or branch. For a C sequence along the lines of: if (cpu_has_feature(FOO)) return 2; The generated code before is roughly: ld r9,-27640(r2) ld r9,0(r9) lwz r9,32(r9) cmpwi cr7,r9,0 bge cr7, 1f li r3,2 blr 1: ... After (true): nop li r3,2 blr After (false): b 1f li r3,2 blr 1: ... mpe: Rename MAX_CPU_FEATURES as we already have a #define with that name, and define it simply as a constant, rather than doing tricks with sizeof and NULL pointers. Rename the array to cpu_feature_keys. Use the kconfig we added to guard it. Add BUILD_BUG_ON() if the feature is not a compile time constant. Rewrite the change log. Signed-off-by: Kevin Hao <haokexin@gmail.com> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'net/batman-adv/soft-interface.h')
0 files changed, 0 insertions, 0 deletions