18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci#include <linux/types.h> 38c2ecf20Sopenharmony_ci#include <linux/errno.h> 48c2ecf20Sopenharmony_ci#include <linux/uaccess.h> 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#include <asm/sfp-machine.h> 78c2ecf20Sopenharmony_ci#include <math-emu/soft-fp.h> 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ciint 108c2ecf20Sopenharmony_cimtfsfi(unsigned int crfD, unsigned int IMM) 118c2ecf20Sopenharmony_ci{ 128c2ecf20Sopenharmony_ci u32 mask = 0xf; 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci if (!crfD) 158c2ecf20Sopenharmony_ci mask = 9; 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci __FPU_FPSCR &= ~(mask << ((7 - crfD) << 2)); 188c2ecf20Sopenharmony_ci __FPU_FPSCR |= (IMM & 0xf) << ((7 - crfD) << 2); 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci#ifdef DEBUG 218c2ecf20Sopenharmony_ci printk("%s: %d %x: %08lx\n", __func__, crfD, IMM, __FPU_FPSCR); 228c2ecf20Sopenharmony_ci#endif 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci return 0; 258c2ecf20Sopenharmony_ci} 26