// SPDX-License-Identifier: GPL-2.0-only /* * Copyright (C) 2023 SiFive */ #include <linux/export.h> #include <linux/preempt.h> #include <asm/csr.h> #include <asm/fpu.h> #include <asm/processor.h> #include <asm/switch_to.h> void kernel_fpu_begin(void) { preempt_disable(); fstate_save(current, task_pt_regs(current)); csr_set(CSR_SSTATUS, SR_FS); } EXPORT_SYMBOL_GPL(kernel_fpu_begin); void kernel_fpu_end(void) { csr_clear(CSR_SSTATUS, SR_FS); fstate_restore(current, task_pt_regs(current)); preempt_enable(); } EXPORT_SYMBOL_GPL(kernel_fpu_end);