3 int __static_cpu_has(unsigned short bit)
5 asm goto ("1: jmp %l[t_no]\n" "2:\n" ".section .altinstructions,\"a\"\n"
6 " " ".balign 4" " " "\n" " " ".long" " " "1b\n" " " ".long"
7 " " "0\n" " .word %P0\n" " .byte 2b - 1b\n" " .byte 0\n"
8 ".previous\n"::"i" (bit)::t_no);
14 unsigned int x86_capability[10];
15 } __attribute__ ((__aligned__((1 << (6)))));
16 extern struct cpuinfo_x86 boot_cpu_data;
17 struct i387_fxsave_struct {
19 } __attribute__ ((aligned(16)));
20 struct xsave_hdr_struct {
21 unsigned long long xstate_bv;
22 } __attribute__ ((packed));
24 struct xsave_hdr_struct xsave_hdr;
25 } __attribute__ ((packed, aligned(64)));
27 struct i387_fxsave_struct fxsave;
28 struct xsave_struct xsave;
31 union thread_xstate *state;
34 void (*cia_decrypt) (struct crypto_tfm * tfm, unsigned char *dst,
35 const unsigned char *src);
38 struct list_head cra_list;
40 struct cipher_alg cipher;
43 static __attribute__ ((always_inline)) __attribute__ ((pure))
46 return (__builtin_constant_p
47 ((__builtin_constant_p(154)
51 ((1 << 0) | (1 << 6) |
52 (1 << 8) | (1 << 15))))
53 || ((4) == 1 && (1UL << (26) & 0)) || ((4) == 2
55 (26) & 0)) || ((4) == 3 && (1UL << (26) & 0)) || ((4) == 4 && (1UL << (26) & 0)) || ((4) == 5 && (1UL << (26) & 0)) || ((4) == 6 && (1UL << (26) & 0)) || ((4) == 7 && (1UL << (26) & 0)) || ((4) == 8 && (1UL << (26) & 0)) || ((4) == 9 && (1UL << (26) & 0))) ? 1 : (__builtin_constant_p(154) ? constant_test_bit(154, ((unsigned long *)((&boot_cpu_data)->x86_capability))) : variable_test_bit(((154)), ((unsigned long *)((&boot_cpu_data)->x86_capability)))))) ? (__builtin_constant_p((154)) && (((4) == 0 && (1UL << (26) & ((1 << (0 & 31)) | (1 << ((6) & 31)) | (1 << ((0 * 32 + 8) & 31)) | (1 << ((15) & 31)) | 0))) || ((4) == 1 && (1UL << (26) & 0)) || ((4) == 2 && (1UL << (26) & 0)) || ((4) == 3 && (1UL << (26) & 0)) || ((4) == 4 && (1UL << (26) & 0)) || ((4) == 5 && (1UL << (26) & 0)) || ((4) == 6 && (1UL << (26) & 0)) || ((4) == 7 && (1UL << (26) & 0)) || ((4) == 8 && (1UL << (26) & 0)) || ((4) == 9 && (1UL << (26) & 0))) ? 1 : (__builtin_constant_p(((154))) ? constant_test_bit(((154)), ((unsigned long *)((&boot_cpu_data)->x86_capability))) : variable_test_bit(((154)), ((unsigned long *)((&boot_cpu_data)->x86_capability))))) : __builtin_constant_p((154)) ? __static_cpu_has((154)) : (__builtin_constant_p((154)) && (((4) == 0 && (1UL << (26) & ((1 << (0 & 31)) | (1 << ((6) & 31)) | (1 << ((8) & 31)) | (1 << ((15) & 31)) | 0))) || ((4) == 1 && (1UL << (26) & 0)) || ((4) == 2 && (1UL << (26) & 0)) || ((4) == 3 && (1UL << (26) & 0)) || ((4) == 4 && (1UL << (26) & 0)) || ((4) == 5 && (1UL << (26) & 0)) || ((4) == 6 && (1UL << (26) & 0)) || ((4) == 7 && (1UL << (26) & 0)) || ((4) == 8 && (1UL << (26) & 0)) || ((4) == 9 && (1UL << (26) & 0))) ? 1 : (__builtin_constant_p(((154))) ? constant_test_bit(((154)), ((unsigned long *)((&boot_cpu_data)->x86_capability))) : variable_test_bit(((154)), ((unsigned long *)((&boot_cpu_data)->x86_capability))))));
58 static inline __attribute__ ((always_inline)) __attribute__ ((always_inline))
59 __attribute__ ((pure))
62 return (__builtin_constant_p
64 (__builtin_constant_p(24) ?
66 ((unsigned long *)((&boot_cpu_data)->
69 ((unsigned long *)((&boot_cpu_data)->
73 __builtin_constant_p(24) ?
74 constant_test_bit(24, ((unsigned long *)((&boot_cpu_data)->x86_capability))) :
75 variable_test_bit(24, ((unsigned long *)((&boot_cpu_data)->x86_capability)))
78 __builtin_constant_p((24)) ? __static_cpu_has((24))
80 (__builtin_constant_p(24) ?
82 ((unsigned long *)((&boot_cpu_data)->
85 ((unsigned long *)((&boot_cpu_data)->
89 static inline __attribute__ ((always_inline))
90 void fpu_save_init(struct fpu *fpu)
92 if (__builtin_constant_p(use_xsave())? use_xsave() : use_xsave()) {
93 if (__builtin_constant_p
94 (((!(fpu->state->xsave.xsave_hdr.
95 xstate_bv & 0x1)))) ? ! !((!(fpu->state->xsave.
97 xstate_bv & 0x1))) : ( {
98 ! !((!(fpu->state->xsave.xsave_hdr.xstate_bv & 0x1)));}
101 } else if (use_fxsr()) {
103 if (__builtin_constant_p
104 ((((__builtin_constant_p(fpu->state->fxsave.swd & (1 << 7)) ?
105 ! !(fpu->state->fxsave.swd & (1 << 7)) : ( {
116 ! !(((__builtin_constant_p(fpu->state->fxsave.swd & (1 << 7)) ?
117 ! !(fpu->state->fxsave.swd & (1 << 7)) : ( {
131 ! !(((__builtin_constant_p(fpu->state->fxsave.swd & (1 << 7))
132 ? ! !(fpu->state->fxsave.swd & (1 << 7)) : ( {
145 asm volatile ("fnclex");
148 static __attribute__ ((always_inline))
149 void __save_init_fpu(void)
154 static __attribute__ ((always_inline))
155 void kernel_fpu_begin(void)
160 static void aes_decrypt(void)
162 if (!irq_fpu_usable())
163 crypto_aes_decrypt_x86(0);
168 static struct crypto_alg aesni_alg = {
170 &aesni_alg.cra_list, &aesni_alg.cra_list}
173 .cia_decrypt = aes_decrypt}
177 static struct crypto_alg ablk_ecb_alg = {
182 if (! !crypto_register_alg(&aesni_alg))
183 crypto_unregister_alg(&ablk_ecb_alg);