Lines Matching refs:fpu
43 DEFINE_PER_CPU(struct fpu *, fpu_fpregs_owner_ctx);
98 struct fpu *fpu = ¤t->thread.fpu; in __kernel_fpu_begin() local
104 if (fpu->initialized) { in __kernel_fpu_begin()
109 copy_fpregs_to_fpstate(fpu); in __kernel_fpu_begin()
118 struct fpu *fpu = ¤t->thread.fpu; in __kernel_fpu_end() local
120 if (fpu->initialized) in __kernel_fpu_end()
121 copy_kernel_to_fpregs(&fpu->state); in __kernel_fpu_end()
146 void fpu__save(struct fpu *fpu) in fpu__save() argument
148 WARN_ON_FPU(fpu != ¤t->thread.fpu); in fpu__save()
151 trace_x86_fpu_before_save(fpu); in fpu__save()
152 if (fpu->initialized) { in fpu__save()
153 if (!copy_fpregs_to_fpstate(fpu)) { in fpu__save()
154 copy_kernel_to_fpregs(&fpu->state); in fpu__save()
157 trace_x86_fpu_after_save(fpu); in fpu__save()
191 int fpu__copy(struct fpu *dst_fpu, struct fpu *src_fpu) in fpu__copy()
198 WARN_ON_FPU(src_fpu != ¤t->thread.fpu); in fpu__copy()
228 void fpu__initialize(struct fpu *fpu) in fpu__initialize() argument
230 WARN_ON_FPU(fpu != ¤t->thread.fpu); in fpu__initialize()
232 if (!fpu->initialized) { in fpu__initialize()
233 fpstate_init(&fpu->state); in fpu__initialize()
234 trace_x86_fpu_init_state(fpu); in fpu__initialize()
236 trace_x86_fpu_activate_state(fpu); in fpu__initialize()
238 fpu->initialized = 1; in fpu__initialize()
258 void fpu__prepare_read(struct fpu *fpu) in fpu__prepare_read() argument
260 if (fpu == ¤t->thread.fpu) { in fpu__prepare_read()
261 fpu__save(fpu); in fpu__prepare_read()
263 if (!fpu->initialized) { in fpu__prepare_read()
264 fpstate_init(&fpu->state); in fpu__prepare_read()
265 trace_x86_fpu_init_state(fpu); in fpu__prepare_read()
267 trace_x86_fpu_activate_state(fpu); in fpu__prepare_read()
269 fpu->initialized = 1; in fpu__prepare_read()
287 void fpu__prepare_write(struct fpu *fpu) in fpu__prepare_write() argument
293 WARN_ON_FPU(fpu == ¤t->thread.fpu); in fpu__prepare_write()
295 if (fpu->initialized) { in fpu__prepare_write()
297 __fpu_invalidate_fpregs_state(fpu); in fpu__prepare_write()
299 fpstate_init(&fpu->state); in fpu__prepare_write()
300 trace_x86_fpu_init_state(fpu); in fpu__prepare_write()
302 trace_x86_fpu_activate_state(fpu); in fpu__prepare_write()
304 fpu->initialized = 1; in fpu__prepare_write()
318 void fpu__restore(struct fpu *fpu) in fpu__restore() argument
320 fpu__initialize(fpu); in fpu__restore()
324 trace_x86_fpu_before_restore(fpu); in fpu__restore()
325 fpregs_activate(fpu); in fpu__restore()
326 copy_kernel_to_fpregs(&fpu->state); in fpu__restore()
327 trace_x86_fpu_after_restore(fpu); in fpu__restore()
341 void fpu__drop(struct fpu *fpu) in fpu__drop() argument
345 if (fpu == ¤t->thread.fpu) { in fpu__drop()
346 if (fpu->initialized) { in fpu__drop()
351 fpregs_deactivate(fpu); in fpu__drop()
355 fpu->initialized = 0; in fpu__drop()
357 trace_x86_fpu_dropped(fpu); in fpu__drop()
385 void fpu__clear(struct fpu *fpu) in fpu__clear() argument
387 WARN_ON_FPU(fpu != ¤t->thread.fpu); /* Almost certainly an anomaly */ in fpu__clear()
389 fpu__drop(fpu); in fpu__clear()
396 fpu__initialize(fpu); in fpu__clear()
407 int fpu__exception_code(struct fpu *fpu, int trap_nr) in fpu__exception_code() argument
424 cwd = fpu->state.fxsave.cwd; in fpu__exception_code()
425 swd = fpu->state.fxsave.swd; in fpu__exception_code()
427 cwd = (unsigned short)fpu->state.fsave.cwd; in fpu__exception_code()
428 swd = (unsigned short)fpu->state.fsave.swd; in fpu__exception_code()
442 mxcsr = fpu->state.fxsave.mxcsr; in fpu__exception_code()