[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <201809112045.A5D7cAAW%fengguang.wu@intel.com>
Date: Tue, 11 Sep 2018 20:59:53 +0800
From: kbuild test robot <lkp@...el.com>
To: "Jason A. Donenfeld" <Jason@...c4.com>
Cc: kbuild-all@...org, linux-kernel@...r.kernel.org,
netdev@...r.kernel.org, davem@...emloft.net,
gregkh@...uxfoundation.org, "Jason A. Donenfeld" <Jason@...c4.com>
Subject: Re: [PATCH net-next v3 17/17] net: WireGuard secure network tunnel
Hi Jason,
I love your patch! Yet something to improve:
[auto build test ERROR on net-next/master]
url: https://github.com/0day-ci/linux/commits/Jason-A-Donenfeld/WireGuard-Secure-Network-Tunnel/20180911-185037
config: um-i386_defconfig (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
# save the attached .config to linux build tree
make ARCH=um SUBARCH=i386
All error/warnings (new ones prefixed by >>):
In file included from lib/zinc/chacha20/chacha20-x86_64-glue.h:8:0,
from <command-line>:0:
>> arch/x86/include/asm/cpufeature.h:134:34: warning: 'struct cpuinfo_x86' declared inside parameter list will not be visible outside of this definition or declaration
extern void clear_cpu_cap(struct cpuinfo_x86 *c, unsigned int bit);
^~~~~~~~~~~
In file included from include/linux/compiler_types.h:64:0,
from <command-line>:0:
arch/x86/include/asm/cpufeature.h: In function '_static_cpu_has':
>> arch/x86/include/asm/cpufeature.h:198:52: error: 'struct cpuinfo_um' has no member named 'x86_capability'
[cap_byte] "m" (((const char *)boot_cpu_data.x86_capability)[bit >> 3])
^
include/linux/compiler-gcc.h:182:47: note: in definition of macro 'asm_volatile_goto'
#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
^
In file included from lib/zinc/chacha20/chacha20-x86_64-glue.h:8:0,
from <command-line>:0:
lib/zinc/chacha20/chacha20-x86_64-glue.h: In function 'chacha20_fpu_init':
>> arch/x86/include/asm/cpufeature.h:65:28: error: 'REQUIRED_MASK0' undeclared (first use in this function); did you mean 'DISABLED_MASK0'?
( CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 0, feature_bit) || \
^
arch/x86/include/asm/cpufeature.h:62:44: note: in definition of macro 'CHECK_BIT_IN_MASK_WORD'
(((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
^~~~~~~~
>> arch/x86/include/asm/cpufeature.h:111:32: note: in expansion of macro 'REQUIRED_MASK_BIT_SET'
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:129:27: note: in expansion of macro 'cpu_has'
#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
^~~~~~~
>> lib/zinc/chacha20/chacha20-x86_64-glue.h:36:23: note: in expansion of macro 'boot_cpu_has'
chacha20_use_ssse3 = boot_cpu_has(X86_FEATURE_SSSE3);
^~~~~~~~~~~~
arch/x86/include/asm/cpufeature.h:65:28: note: each undeclared identifier is reported only once for each function it appears in
( CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 0, feature_bit) || \
^
arch/x86/include/asm/cpufeature.h:62:44: note: in definition of macro 'CHECK_BIT_IN_MASK_WORD'
(((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
^~~~~~~~
>> arch/x86/include/asm/cpufeature.h:111:32: note: in expansion of macro 'REQUIRED_MASK_BIT_SET'
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:129:27: note: in expansion of macro 'cpu_has'
#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
^~~~~~~
>> lib/zinc/chacha20/chacha20-x86_64-glue.h:36:23: note: in expansion of macro 'boot_cpu_has'
chacha20_use_ssse3 = boot_cpu_has(X86_FEATURE_SSSE3);
^~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:66:28: error: 'REQUIRED_MASK1' undeclared (first use in this function); did you mean 'REQUIRED_MASK0'?
CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 1, feature_bit) || \
^
arch/x86/include/asm/cpufeature.h:62:44: note: in definition of macro 'CHECK_BIT_IN_MASK_WORD'
(((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
^~~~~~~~
>> arch/x86/include/asm/cpufeature.h:111:32: note: in expansion of macro 'REQUIRED_MASK_BIT_SET'
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:129:27: note: in expansion of macro 'cpu_has'
#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
^~~~~~~
>> lib/zinc/chacha20/chacha20-x86_64-glue.h:36:23: note: in expansion of macro 'boot_cpu_has'
chacha20_use_ssse3 = boot_cpu_has(X86_FEATURE_SSSE3);
^~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:67:28: error: 'REQUIRED_MASK2' undeclared (first use in this function); did you mean 'REQUIRED_MASK1'?
CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 2, feature_bit) || \
^
arch/x86/include/asm/cpufeature.h:62:44: note: in definition of macro 'CHECK_BIT_IN_MASK_WORD'
(((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
^~~~~~~~
>> arch/x86/include/asm/cpufeature.h:111:32: note: in expansion of macro 'REQUIRED_MASK_BIT_SET'
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:129:27: note: in expansion of macro 'cpu_has'
#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
^~~~~~~
>> lib/zinc/chacha20/chacha20-x86_64-glue.h:36:23: note: in expansion of macro 'boot_cpu_has'
chacha20_use_ssse3 = boot_cpu_has(X86_FEATURE_SSSE3);
^~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:68:28: error: 'REQUIRED_MASK3' undeclared (first use in this function); did you mean 'REQUIRED_MASK2'?
CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 3, feature_bit) || \
^
arch/x86/include/asm/cpufeature.h:62:44: note: in definition of macro 'CHECK_BIT_IN_MASK_WORD'
(((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
^~~~~~~~
>> arch/x86/include/asm/cpufeature.h:111:32: note: in expansion of macro 'REQUIRED_MASK_BIT_SET'
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:129:27: note: in expansion of macro 'cpu_has'
#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
^~~~~~~
--
In file included from lib/zinc/poly1305/poly1305-x86_64-glue.h:7:0,
from <command-line>:0:
>> arch/x86/include/asm/cpufeature.h:134:34: warning: 'struct cpuinfo_x86' declared inside parameter list will not be visible outside of this definition or declaration
extern void clear_cpu_cap(struct cpuinfo_x86 *c, unsigned int bit);
^~~~~~~~~~~
In file included from include/linux/compiler_types.h:64:0,
from <command-line>:0:
arch/x86/include/asm/cpufeature.h: In function '_static_cpu_has':
>> arch/x86/include/asm/cpufeature.h:198:52: error: 'struct cpuinfo_um' has no member named 'x86_capability'
[cap_byte] "m" (((const char *)boot_cpu_data.x86_capability)[bit >> 3])
^
include/linux/compiler-gcc.h:182:47: note: in definition of macro 'asm_volatile_goto'
#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
^
In file included from lib/zinc/poly1305/poly1305-x86_64-glue.h:7:0,
from <command-line>:0:
lib/zinc/poly1305/poly1305-x86_64-glue.h: In function 'poly1305_fpu_init':
>> arch/x86/include/asm/cpufeature.h:65:28: error: 'REQUIRED_MASK0' undeclared (first use in this function); did you mean 'DISABLED_MASK0'?
( CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 0, feature_bit) || \
^
arch/x86/include/asm/cpufeature.h:62:44: note: in definition of macro 'CHECK_BIT_IN_MASK_WORD'
(((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
^~~~~~~~
>> arch/x86/include/asm/cpufeature.h:111:32: note: in expansion of macro 'REQUIRED_MASK_BIT_SET'
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:129:27: note: in expansion of macro 'cpu_has'
#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
^~~~~~~
>> lib/zinc/poly1305/poly1305-x86_64-glue.h:39:3: note: in expansion of macro 'boot_cpu_has'
boot_cpu_has(X86_FEATURE_AVX) &&
^~~~~~~~~~~~
arch/x86/include/asm/cpufeature.h:65:28: note: each undeclared identifier is reported only once for each function it appears in
( CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 0, feature_bit) || \
^
arch/x86/include/asm/cpufeature.h:62:44: note: in definition of macro 'CHECK_BIT_IN_MASK_WORD'
(((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
^~~~~~~~
>> arch/x86/include/asm/cpufeature.h:111:32: note: in expansion of macro 'REQUIRED_MASK_BIT_SET'
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:129:27: note: in expansion of macro 'cpu_has'
#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
^~~~~~~
>> lib/zinc/poly1305/poly1305-x86_64-glue.h:39:3: note: in expansion of macro 'boot_cpu_has'
boot_cpu_has(X86_FEATURE_AVX) &&
^~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:66:28: error: 'REQUIRED_MASK1' undeclared (first use in this function); did you mean 'REQUIRED_MASK0'?
CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 1, feature_bit) || \
^
arch/x86/include/asm/cpufeature.h:62:44: note: in definition of macro 'CHECK_BIT_IN_MASK_WORD'
(((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
^~~~~~~~
>> arch/x86/include/asm/cpufeature.h:111:32: note: in expansion of macro 'REQUIRED_MASK_BIT_SET'
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:129:27: note: in expansion of macro 'cpu_has'
#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
^~~~~~~
>> lib/zinc/poly1305/poly1305-x86_64-glue.h:39:3: note: in expansion of macro 'boot_cpu_has'
boot_cpu_has(X86_FEATURE_AVX) &&
^~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:67:28: error: 'REQUIRED_MASK2' undeclared (first use in this function); did you mean 'REQUIRED_MASK1'?
CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 2, feature_bit) || \
^
arch/x86/include/asm/cpufeature.h:62:44: note: in definition of macro 'CHECK_BIT_IN_MASK_WORD'
(((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
^~~~~~~~
>> arch/x86/include/asm/cpufeature.h:111:32: note: in expansion of macro 'REQUIRED_MASK_BIT_SET'
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:129:27: note: in expansion of macro 'cpu_has'
#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
^~~~~~~
>> lib/zinc/poly1305/poly1305-x86_64-glue.h:39:3: note: in expansion of macro 'boot_cpu_has'
boot_cpu_has(X86_FEATURE_AVX) &&
^~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:68:28: error: 'REQUIRED_MASK3' undeclared (first use in this function); did you mean 'REQUIRED_MASK2'?
CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 3, feature_bit) || \
^
arch/x86/include/asm/cpufeature.h:62:44: note: in definition of macro 'CHECK_BIT_IN_MASK_WORD'
(((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
^~~~~~~~
>> arch/x86/include/asm/cpufeature.h:111:32: note: in expansion of macro 'REQUIRED_MASK_BIT_SET'
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:129:27: note: in expansion of macro 'cpu_has'
#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
^~~~~~~
--
lib/zinc/poly1305/poly1305-x86_64.S: Assembler messages:
>> lib/zinc/poly1305/poly1305-x86_64.S:25: Error: bad register name `%rax'
lib/zinc/poly1305/poly1305-x86_64.S:26: Error: bad register name `%rax'
lib/zinc/poly1305/poly1305-x86_64.S:27: Error: bad register name `%rax'
lib/zinc/poly1305/poly1305-x86_64.S:28: Error: bad register name `%rax'
>> lib/zinc/poly1305/poly1305-x86_64.S:30: Error: bad register name `%rsi'
lib/zinc/poly1305/poly1305-x86_64.S:33: Error: bad register name `%rax'
>> lib/zinc/poly1305/poly1305-x86_64.S:34: Error: bad register name `%rcx'
>> lib/zinc/poly1305/poly1305-x86_64.S:35: Error: bad register name `%rsi)'
lib/zinc/poly1305/poly1305-x86_64.S:36: Error: bad register name `%rsi)'
lib/zinc/poly1305/poly1305-x86_64.S:37: Error: bad register name `%rax'
lib/zinc/poly1305/poly1305-x86_64.S:38: Error: bad register name `%rcx'
>> lib/zinc/poly1305/poly1305-x86_64.S:47: Error: bad register name `%rdx'
>> lib/zinc/poly1305/poly1305-x86_64.S:50: Error: bad register name `%rbx'
>> lib/zinc/poly1305/poly1305-x86_64.S:51: Error: bad register name `%r12'
>> lib/zinc/poly1305/poly1305-x86_64.S:52: Error: bad register name `%r13'
>> lib/zinc/poly1305/poly1305-x86_64.S:53: Error: bad register name `%r14'
>> lib/zinc/poly1305/poly1305-x86_64.S:54: Error: bad register name `%r15'
>> lib/zinc/poly1305/poly1305-x86_64.S:55: Error: bad register name `%rdi'
lib/zinc/poly1305/poly1305-x86_64.S:59: Error: bad register name `%rdx'
>> lib/zinc/poly1305/poly1305-x86_64.S:61: Error: bad register name `%rdi)'
lib/zinc/poly1305/poly1305-x86_64.S:62: Error: bad register name `%rdi)'
lib/zinc/poly1305/poly1305-x86_64.S:64: Error: bad register name `%rdi)'
lib/zinc/poly1305/poly1305-x86_64.S:65: Error: bad register name `%rdi)'
lib/zinc/poly1305/poly1305-x86_64.S:66: Error: bad register name `%rdi)'
lib/zinc/poly1305/poly1305-x86_64.S:68: Error: bad register name `%r13'
lib/zinc/poly1305/poly1305-x86_64.S:69: Error: bad register name `%r13'
lib/zinc/poly1305/poly1305-x86_64.S:70: Error: bad register name `%r12'
lib/zinc/poly1305/poly1305-x86_64.S:71: Error: bad register name `%r12'
lib/zinc/poly1305/poly1305-x86_64.S:77: Error: bad register name `%rsi)'
lib/zinc/poly1305/poly1305-x86_64.S:78: Error: bad register name `%rsi)'
lib/zinc/poly1305/poly1305-x86_64.S:79: Error: bad register name `%rsi)'
lib/zinc/poly1305/poly1305-x86_64.S:80: Error: bad register name `%rcx'
lib/zinc/poly1305/poly1305-x86_64.S:81: Error: bad register name `%r14'
lib/zinc/poly1305/poly1305-x86_64.S:82: Error: bad register name `%rax'
>> lib/zinc/poly1305/poly1305-x86_64.S:83: Error: bad register name `%r11'
lib/zinc/poly1305/poly1305-x86_64.S:84: Error: bad register name `%rdx'
lib/zinc/poly1305/poly1305-x86_64.S:86: Error: bad register name `%r14'
lib/zinc/poly1305/poly1305-x86_64.S:87: Error: bad register name `%rax'
lib/zinc/poly1305/poly1305-x86_64.S:88: Error: bad register name `%r11'
lib/zinc/poly1305/poly1305-x86_64.S:89: Error: bad register name `%rdx'
lib/zinc/poly1305/poly1305-x86_64.S:91: Error: bad register name `%rbx'
lib/zinc/poly1305/poly1305-x86_64.S:92: Error: bad register name `%rax'
lib/zinc/poly1305/poly1305-x86_64.S:93: Error: bad register name `%r13'
lib/zinc/poly1305/poly1305-x86_64.S:94: Error: bad register name `%rdx'
lib/zinc/poly1305/poly1305-x86_64.S:96: Error: bad register name `%rbx'
>> lib/zinc/poly1305/poly1305-x86_64.S:97: Error: bad register name `%r10'
lib/zinc/poly1305/poly1305-x86_64.S:98: Error: bad register name `%rax'
lib/zinc/poly1305/poly1305-x86_64.S:99: Error: bad register name `%rdx'
lib/zinc/poly1305/poly1305-x86_64.S:101: Error: bad register name `%r13'
lib/zinc/poly1305/poly1305-x86_64.S:102: Error: bad register name `%rbx'
>> lib/zinc/poly1305/poly1305-x86_64.S:103: Error: bad register name `%r8'
lib/zinc/poly1305/poly1305-x86_64.S:104: Error: bad register name `%rdi'
lib/zinc/poly1305/poly1305-x86_64.S:106: Error: bad register name `%r11'
>> lib/zinc/poly1305/poly1305-x86_64.S:107: Error: bad register name `%r9'
lib/zinc/poly1305/poly1305-x86_64.S:108: Error: bad register name `%rax'
lib/zinc/poly1305/poly1305-x86_64.S:109: Error: bad register name `%r10'
lib/zinc/poly1305/poly1305-x86_64.S:111: Error: bad register name `%rdi'
lib/zinc/poly1305/poly1305-x86_64.S:112: Error: bad register name `%rdi'
lib/zinc/poly1305/poly1305-x86_64.S:113: Error: bad register name `%rdi'
lib/zinc/poly1305/poly1305-x86_64.S:114: Error: bad register name `%r10'
lib/zinc/poly1305/poly1305-x86_64.S:115: Error: bad register name `%rdi'
lib/zinc/poly1305/poly1305-x86_64.S:116: Error: bad register name `%rax'
lib/zinc/poly1305/poly1305-x86_64.S:117: Error: bad register name `%rbx'
lib/zinc/poly1305/poly1305-x86_64.S:118: Error: bad register name `%r10'
lib/zinc/poly1305/poly1305-x86_64.S:120: Error: bad register name `%r12'
lib/zinc/poly1305/poly1305-x86_64.S:121: Error: bad register name `%r15'
>> lib/zinc/poly1305/poly1305-x86_64.S:124: Error: bad register name `%rsp)'
lib/zinc/poly1305/poly1305-x86_64.S:126: Error: bad register name `%r14'
lib/zinc/poly1305/poly1305-x86_64.S:127: Error: bad register name `%rbx'
lib/zinc/poly1305/poly1305-x86_64.S:128: Error: bad register name `%r10'
lib/zinc/poly1305/poly1305-x86_64.S:130: Error: bad register name `%rsp)'
lib/zinc/poly1305/poly1305-x86_64.S:131: Error: bad register name `%rsp)'
lib/zinc/poly1305/poly1305-x86_64.S:132: Error: bad register name `%rsp)'
lib/zinc/poly1305/poly1305-x86_64.S:133: Error: bad register name `%rsp)'
lib/zinc/poly1305/poly1305-x86_64.S:134: Error: bad register name `%rsp)'
lib/zinc/poly1305/poly1305-x86_64.S:135: Error: bad register name `%rsp)'
lib/zinc/poly1305/poly1305-x86_64.S:144: Error: bad register name `%rdi)'
lib/zinc/poly1305/poly1305-x86_64.S:145: Error: bad register name `%rdi)'
lib/zinc/poly1305/poly1305-x86_64.S:146: Error: bad register name `%rdi)'
lib/zinc/poly1305/poly1305-x86_64.S:148: Error: bad register name `%r8'
lib/zinc/poly1305/poly1305-x86_64.S:149: Error: bad register name `%r8'
lib/zinc/poly1305/poly1305-x86_64.S:150: Error: bad register name `%r9'
lib/zinc/poly1305/poly1305-x86_64.S:151: Error: bad register name `%r9'
lib/zinc/poly1305/poly1305-x86_64.S:152: Error: bad register name `%r10'
lib/zinc/poly1305/poly1305-x86_64.S:153: Error: bad register name `%r10'
lib/zinc/poly1305/poly1305-x86_64.S:154: Error: bad register name `%r8'
lib/zinc/poly1305/poly1305-x86_64.S:155: Error: bad register name `%r9'
>> lib/zinc/poly1305/poly1305-x86_64.S:157: Error: bad register name `%rdx)'
lib/zinc/poly1305/poly1305-x86_64.S:158: Error: bad register name `%rdx)'
lib/zinc/poly1305/poly1305-x86_64.S:159: Error: bad register name `%rax'
lib/zinc/poly1305/poly1305-x86_64.S:160: Error: bad register name `%rcx'
--
In file included from lib/zinc/curve25519/curve25519-x86_64-glue.h:8:0,
from <command-line>:0:
>> arch/x86/include/asm/cpufeature.h:134:34: warning: 'struct cpuinfo_x86' declared inside parameter list will not be visible outside of this definition or declaration
extern void clear_cpu_cap(struct cpuinfo_x86 *c, unsigned int bit);
^~~~~~~~~~~
In file included from include/linux/compiler_types.h:64:0,
from <command-line>:0:
arch/x86/include/asm/cpufeature.h: In function '_static_cpu_has':
>> arch/x86/include/asm/cpufeature.h:198:52: error: 'struct cpuinfo_um' has no member named 'x86_capability'
[cap_byte] "m" (((const char *)boot_cpu_data.x86_capability)[bit >> 3])
^
include/linux/compiler-gcc.h:182:47: note: in definition of macro 'asm_volatile_goto'
#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
^
In file included from lib/zinc/curve25519/curve25519-x86_64-glue.h:8:0,
from <command-line>:0:
lib/zinc/curve25519/curve25519-x86_64-glue.h: In function 'curve25519_fpu_init':
>> arch/x86/include/asm/cpufeature.h:65:28: error: 'REQUIRED_MASK0' undeclared (first use in this function); did you mean 'DISABLED_MASK0'?
( CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 0, feature_bit) || \
^
arch/x86/include/asm/cpufeature.h:62:44: note: in definition of macro 'CHECK_BIT_IN_MASK_WORD'
(((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
^~~~~~~~
>> arch/x86/include/asm/cpufeature.h:111:32: note: in expansion of macro 'REQUIRED_MASK_BIT_SET'
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:129:27: note: in expansion of macro 'cpu_has'
#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
^~~~~~~
>> lib/zinc/curve25519/curve25519-x86_64-glue.h:18:24: note: in expansion of macro 'boot_cpu_has'
curve25519_use_bmi2 = boot_cpu_has(X86_FEATURE_BMI2);
^~~~~~~~~~~~
arch/x86/include/asm/cpufeature.h:65:28: note: each undeclared identifier is reported only once for each function it appears in
( CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 0, feature_bit) || \
^
arch/x86/include/asm/cpufeature.h:62:44: note: in definition of macro 'CHECK_BIT_IN_MASK_WORD'
(((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
^~~~~~~~
>> arch/x86/include/asm/cpufeature.h:111:32: note: in expansion of macro 'REQUIRED_MASK_BIT_SET'
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:129:27: note: in expansion of macro 'cpu_has'
#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
^~~~~~~
>> lib/zinc/curve25519/curve25519-x86_64-glue.h:18:24: note: in expansion of macro 'boot_cpu_has'
curve25519_use_bmi2 = boot_cpu_has(X86_FEATURE_BMI2);
^~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:66:28: error: 'REQUIRED_MASK1' undeclared (first use in this function); did you mean 'REQUIRED_MASK0'?
CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 1, feature_bit) || \
^
arch/x86/include/asm/cpufeature.h:62:44: note: in definition of macro 'CHECK_BIT_IN_MASK_WORD'
(((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
^~~~~~~~
>> arch/x86/include/asm/cpufeature.h:111:32: note: in expansion of macro 'REQUIRED_MASK_BIT_SET'
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:129:27: note: in expansion of macro 'cpu_has'
#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
^~~~~~~
>> lib/zinc/curve25519/curve25519-x86_64-glue.h:18:24: note: in expansion of macro 'boot_cpu_has'
curve25519_use_bmi2 = boot_cpu_has(X86_FEATURE_BMI2);
^~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:67:28: error: 'REQUIRED_MASK2' undeclared (first use in this function); did you mean 'REQUIRED_MASK1'?
CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 2, feature_bit) || \
^
arch/x86/include/asm/cpufeature.h:62:44: note: in definition of macro 'CHECK_BIT_IN_MASK_WORD'
(((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
^~~~~~~~
>> arch/x86/include/asm/cpufeature.h:111:32: note: in expansion of macro 'REQUIRED_MASK_BIT_SET'
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:129:27: note: in expansion of macro 'cpu_has'
#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
^~~~~~~
>> lib/zinc/curve25519/curve25519-x86_64-glue.h:18:24: note: in expansion of macro 'boot_cpu_has'
curve25519_use_bmi2 = boot_cpu_has(X86_FEATURE_BMI2);
^~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:68:28: error: 'REQUIRED_MASK3' undeclared (first use in this function); did you mean 'REQUIRED_MASK2'?
CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 3, feature_bit) || \
^
arch/x86/include/asm/cpufeature.h:62:44: note: in definition of macro 'CHECK_BIT_IN_MASK_WORD'
(((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
^~~~~~~~
>> arch/x86/include/asm/cpufeature.h:111:32: note: in expansion of macro 'REQUIRED_MASK_BIT_SET'
(__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/cpufeature.h:129:27: note: in expansion of macro 'cpu_has'
#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
^~~~~~~
..
vim +198 arch/x86/include/asm/cpufeature.h
80a208bd arch/x86/include/asm/cpufeature.h Borislav Petkov 2014-06-24 50
0f8d2b92 include/asm-x86/cpufeature.h Ingo Molnar 2008-02-26 51 #define test_cpu_cap(c, bit) \
0f8d2b92 include/asm-x86/cpufeature.h Ingo Molnar 2008-02-26 @52 test_bit(bit, (unsigned long *)((c)->x86_capability))
0f8d2b92 include/asm-x86/cpufeature.h Ingo Molnar 2008-02-26 53
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 54 /*
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 55 * There are 32 bits/features in each mask word. The high bits
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 56 * (selected with (bit>>5) give us the word number and the low 5
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 57 * bits give us the bit/feature number inside the word.
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 58 * (1UL<<((bit)&31) gives us a mask for the feature_bit so we can
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 59 * see if it is set in the mask word.
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 60 */
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 61 #define CHECK_BIT_IN_MASK_WORD(maskname, word, bit) \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 62 (((bit)>>5)==(word) && (1UL<<((bit)&31) & maskname##word ))
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 63
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 64 #define REQUIRED_MASK_BIT_SET(feature_bit) \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @65 ( CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 0, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @66 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 1, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @67 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 2, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @68 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 3, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @69 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 4, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @70 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 5, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @71 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 6, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @72 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 7, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @73 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 8, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @74 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 9, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @75 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 10, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @76 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 11, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @77 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 12, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @78 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 13, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @79 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 14, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @80 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 15, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @81 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 16, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @82 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 17, feature_bit) || \
95ca0ee8 arch/x86/include/asm/cpufeature.h David Woodhouse 2018-01-25 @83 CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 18, feature_bit) || \
1e61f78b arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 @84 REQUIRED_MASK_CHECK || \
95ca0ee8 arch/x86/include/asm/cpufeature.h David Woodhouse 2018-01-25 85 BUILD_BUG_ON_ZERO(NCAPINTS != 19))
349c004e arch/x86/include/asm/cpufeature.h Christoph Lameter 2011-03-12 86
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 87 #define DISABLED_MASK_BIT_SET(feature_bit) \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 88 ( CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 0, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 89 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 1, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 90 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 2, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 91 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 3, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 92 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 4, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 93 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 5, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 94 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 6, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 95 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 7, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 96 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 8, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 97 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 9, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 98 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 10, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 99 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 11, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 100 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 12, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 101 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 13, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 102 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 14, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 103 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 15, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 104 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 16, feature_bit) || \
8eda072e arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 105 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 17, feature_bit) || \
95ca0ee8 arch/x86/include/asm/cpufeature.h David Woodhouse 2018-01-25 106 CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 18, feature_bit) || \
1e61f78b arch/x86/include/asm/cpufeature.h Dave Hansen 2016-06-29 107 DISABLED_MASK_CHECK || \
95ca0ee8 arch/x86/include/asm/cpufeature.h David Woodhouse 2018-01-25 108 BUILD_BUG_ON_ZERO(NCAPINTS != 19))
381aa07a arch/x86/include/asm/cpufeature.h Dave Hansen 2014-09-11 109
349c004e arch/x86/include/asm/cpufeature.h Christoph Lameter 2011-03-12 110 #define cpu_has(c, bit) \
349c004e arch/x86/include/asm/cpufeature.h Christoph Lameter 2011-03-12 @111 (__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
0f8d2b92 include/asm-x86/cpufeature.h Ingo Molnar 2008-02-26 @112 test_cpu_cap(c, bit))
0f8d2b92 include/asm-x86/cpufeature.h Ingo Molnar 2008-02-26 113
349c004e arch/x86/include/asm/cpufeature.h Christoph Lameter 2011-03-12 114 #define this_cpu_has(bit) \
349c004e arch/x86/include/asm/cpufeature.h Christoph Lameter 2011-03-12 115 (__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \
349c004e arch/x86/include/asm/cpufeature.h Christoph Lameter 2011-03-12 116 x86_this_cpu_test_bit(bit, (unsigned long *)&cpu_info.x86_capability))
349c004e arch/x86/include/asm/cpufeature.h Christoph Lameter 2011-03-12 117
381aa07a arch/x86/include/asm/cpufeature.h Dave Hansen 2014-09-11 118 /*
381aa07a arch/x86/include/asm/cpufeature.h Dave Hansen 2014-09-11 119 * This macro is for detection of features which need kernel
381aa07a arch/x86/include/asm/cpufeature.h Dave Hansen 2014-09-11 120 * infrastructure to be used. It may *not* directly test the CPU
381aa07a arch/x86/include/asm/cpufeature.h Dave Hansen 2014-09-11 121 * itself. Use the cpu_has() family if you want true runtime
381aa07a arch/x86/include/asm/cpufeature.h Dave Hansen 2014-09-11 122 * testing of CPU features, like in hypervisor code where you are
381aa07a arch/x86/include/asm/cpufeature.h Dave Hansen 2014-09-11 123 * supporting a possible guest feature where host support for it
381aa07a arch/x86/include/asm/cpufeature.h Dave Hansen 2014-09-11 124 * is not relevant.
381aa07a arch/x86/include/asm/cpufeature.h Dave Hansen 2014-09-11 125 */
381aa07a arch/x86/include/asm/cpufeature.h Dave Hansen 2014-09-11 126 #define cpu_feature_enabled(bit) \
f2cc8e07 arch/x86/include/asm/cpufeature.h Borislav Petkov 2016-02-16 127 (__builtin_constant_p(bit) && DISABLED_MASK_BIT_SET(bit) ? 0 : static_cpu_has(bit))
381aa07a arch/x86/include/asm/cpufeature.h Dave Hansen 2014-09-11 128
7b11fb51 include/asm-x86/cpufeature.h H. Peter Anvin 2008-01-30 @129 #define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
7b11fb51 include/asm-x86/cpufeature.h H. Peter Anvin 2008-01-30 130
53756d37 include/asm-x86/cpufeature.h Jeremy Fitzhardinge 2008-01-30 131 #define set_cpu_cap(c, bit) set_bit(bit, (unsigned long *)((c)->x86_capability))
0b00de85 arch/x86/include/asm/cpufeature.h Andi Kleen 2017-10-13 132
0b00de85 arch/x86/include/asm/cpufeature.h Andi Kleen 2017-10-13 133 extern void setup_clear_cpu_cap(unsigned int bit);
0b00de85 arch/x86/include/asm/cpufeature.h Andi Kleen 2017-10-13 @134 extern void clear_cpu_cap(struct cpuinfo_x86 *c, unsigned int bit);
0b00de85 arch/x86/include/asm/cpufeature.h Andi Kleen 2017-10-13 135
404ee5b1 include/asm-x86/cpufeature.h Andi Kleen 2008-01-30 136 #define setup_force_cpu_cap(bit) do { \
404ee5b1 include/asm-x86/cpufeature.h Andi Kleen 2008-01-30 137 set_cpu_cap(&boot_cpu_data, bit); \
3e0c3737 arch/x86/include/asm/cpufeature.h Yinghai Lu 2009-05-09 138 set_bit(bit, (unsigned long *)cpu_caps_set); \
404ee5b1 include/asm-x86/cpufeature.h Andi Kleen 2008-01-30 139 } while (0)
53756d37 include/asm-x86/cpufeature.h Jeremy Fitzhardinge 2008-01-30 140
6cbd2171 arch/x86/include/asm/cpufeature.h Thomas Gleixner 2017-12-04 141 #define setup_force_cpu_bug(bit) setup_force_cpu_cap(bit)
6cbd2171 arch/x86/include/asm/cpufeature.h Thomas Gleixner 2017-12-04 142
b1ae32db arch/x86/include/asm/cpufeature.h Alexei Starovoitov 2018-05-13 143 #if defined(__clang__) && !defined(CC_HAVE_ASM_GOTO)
b1ae32db arch/x86/include/asm/cpufeature.h Alexei Starovoitov 2018-05-13 144
b1ae32db arch/x86/include/asm/cpufeature.h Alexei Starovoitov 2018-05-13 145 /*
b1ae32db arch/x86/include/asm/cpufeature.h Alexei Starovoitov 2018-05-13 146 * Workaround for the sake of BPF compilation which utilizes kernel
b1ae32db arch/x86/include/asm/cpufeature.h Alexei Starovoitov 2018-05-13 147 * headers, but clang does not support ASM GOTO and fails the build.
b1ae32db arch/x86/include/asm/cpufeature.h Alexei Starovoitov 2018-05-13 148 */
b1ae32db arch/x86/include/asm/cpufeature.h Alexei Starovoitov 2018-05-13 149 #ifndef __BPF_TRACING__
b1ae32db arch/x86/include/asm/cpufeature.h Alexei Starovoitov 2018-05-13 150 #warning "Compiler lacks ASM_GOTO support. Add -D __BPF_TRACING__ to your compiler arguments"
b1ae32db arch/x86/include/asm/cpufeature.h Alexei Starovoitov 2018-05-13 151 #endif
b1ae32db arch/x86/include/asm/cpufeature.h Alexei Starovoitov 2018-05-13 152
b1ae32db arch/x86/include/asm/cpufeature.h Alexei Starovoitov 2018-05-13 153 #define static_cpu_has(bit) boot_cpu_has(bit)
b1ae32db arch/x86/include/asm/cpufeature.h Alexei Starovoitov 2018-05-13 154
b1ae32db arch/x86/include/asm/cpufeature.h Alexei Starovoitov 2018-05-13 155 #else
b1ae32db arch/x86/include/asm/cpufeature.h Alexei Starovoitov 2018-05-13 156
a3c8acd0 arch/x86/include/asm/cpufeature.h H. Peter Anvin 2010-05-11 157 /*
a3c8acd0 arch/x86/include/asm/cpufeature.h H. Peter Anvin 2010-05-11 158 * Static testing of CPU features. Used the same as boot_cpu_has().
a362bf9f arch/x86/include/asm/cpufeature.h Borislav Petkov 2016-01-27 159 * These will statically patch the target code for additional
a362bf9f arch/x86/include/asm/cpufeature.h Borislav Petkov 2016-01-27 160 * performance.
a3c8acd0 arch/x86/include/asm/cpufeature.h H. Peter Anvin 2010-05-11 161 */
bc696ca0 arch/x86/include/asm/cpufeature.h Borislav Petkov 2016-01-26 162 static __always_inline __pure bool _static_cpu_has(u16 bit)
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 163 {
2476f2fa arch/x86/include/asm/cpufeature.h Brian Gerst 2016-01-27 164 asm_volatile_goto("1: jmp 6f\n"
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 165 "2:\n"
4332195c arch/x86/include/asm/cpufeature.h Borislav Petkov 2014-12-27 166 ".skip -(((5f-4f) - (2b-1b)) > 0) * "
4332195c arch/x86/include/asm/cpufeature.h Borislav Petkov 2014-12-27 167 "((5f-4f) - (2b-1b)),0x90\n"
4332195c arch/x86/include/asm/cpufeature.h Borislav Petkov 2014-12-27 168 "3:\n"
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 169 ".section .altinstructions,\"a\"\n"
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 170 " .long 1b - .\n" /* src offset */
4332195c arch/x86/include/asm/cpufeature.h Borislav Petkov 2014-12-27 171 " .long 4f - .\n" /* repl offset */
3197b04b arch/x86/include/asm/cpufeature.h Peter Zijlstra 2018-01-16 172 " .word %P[always]\n" /* always replace */
4332195c arch/x86/include/asm/cpufeature.h Borislav Petkov 2014-12-27 173 " .byte 3b - 1b\n" /* src len */
4332195c arch/x86/include/asm/cpufeature.h Borislav Petkov 2014-12-27 174 " .byte 5f - 4f\n" /* repl len */
4332195c arch/x86/include/asm/cpufeature.h Borislav Petkov 2014-12-27 175 " .byte 3b - 2b\n" /* pad len */
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 176 ".previous\n"
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 177 ".section .altinstr_replacement,\"ax\"\n"
48c7a250 arch/x86/include/asm/cpufeature.h Borislav Petkov 2015-01-05 178 "4: jmp %l[t_no]\n"
4332195c arch/x86/include/asm/cpufeature.h Borislav Petkov 2014-12-27 179 "5:\n"
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 180 ".previous\n"
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 181 ".section .altinstructions,\"a\"\n"
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 182 " .long 1b - .\n" /* src offset */
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 183 " .long 0\n" /* no replacement */
3197b04b arch/x86/include/asm/cpufeature.h Peter Zijlstra 2018-01-16 184 " .word %P[feature]\n" /* feature bit */
4332195c arch/x86/include/asm/cpufeature.h Borislav Petkov 2014-12-27 185 " .byte 3b - 1b\n" /* src len */
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 186 " .byte 0\n" /* repl len */
4332195c arch/x86/include/asm/cpufeature.h Borislav Petkov 2014-12-27 187 " .byte 0\n" /* pad len */
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 188 ".previous\n"
2476f2fa arch/x86/include/asm/cpufeature.h Brian Gerst 2016-01-27 189 ".section .altinstr_aux,\"ax\"\n"
2476f2fa arch/x86/include/asm/cpufeature.h Brian Gerst 2016-01-27 190 "6:\n"
2476f2fa arch/x86/include/asm/cpufeature.h Brian Gerst 2016-01-27 191 " testb %[bitnum],%[cap_byte]\n"
2476f2fa arch/x86/include/asm/cpufeature.h Brian Gerst 2016-01-27 192 " jnz %l[t_yes]\n"
2476f2fa arch/x86/include/asm/cpufeature.h Brian Gerst 2016-01-27 193 " jmp %l[t_no]\n"
2476f2fa arch/x86/include/asm/cpufeature.h Brian Gerst 2016-01-27 194 ".previous\n"
3197b04b arch/x86/include/asm/cpufeature.h Peter Zijlstra 2018-01-16 195 : : [feature] "i" (bit),
3197b04b arch/x86/include/asm/cpufeature.h Peter Zijlstra 2018-01-16 196 [always] "i" (X86_FEATURE_ALWAYS),
2476f2fa arch/x86/include/asm/cpufeature.h Brian Gerst 2016-01-27 197 [bitnum] "i" (1 << (bit & 7)),
2476f2fa arch/x86/include/asm/cpufeature.h Brian Gerst 2016-01-27 @198 [cap_byte] "m" (((const char *)boot_cpu_data.x86_capability)[bit >> 3])
2476f2fa arch/x86/include/asm/cpufeature.h Brian Gerst 2016-01-27 199 : : t_yes, t_no);
2476f2fa arch/x86/include/asm/cpufeature.h Brian Gerst 2016-01-27 200 t_yes:
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 201 return true;
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 202 t_no:
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 203 return false;
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 204 }
4a90a99c arch/x86/include/asm/cpufeature.h Borislav Petkov 2013-06-09 205
:::::: The code at line 198 was first introduced by commit
:::::: 2476f2fa20568bd5d9e09cd35bcd73e99a6f4cc6 x86/alternatives: Discard dynamic check after init
:::::: TO: Brian Gerst <brgerst@...il.com>
:::::: CC: Ingo Molnar <mingo@...nel.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Download attachment ".config.gz" of type "application/gzip" (7940 bytes)
Powered by blists - more mailing lists