1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun // Copyright (C) 2005-2018 Andes Technology Corporation 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #include <linux/uaccess.h> 5*4882a593Smuzhiyun #include <asm/sfp-machine.h> 6*4882a593Smuzhiyun #include <math-emu/soft-fp.h> 7*4882a593Smuzhiyun #include <math-emu/double.h> 8*4882a593Smuzhiyun fdivd(void * ft,void * fa,void * fb)9*4882a593Smuzhiyunvoid fdivd(void *ft, void *fa, void *fb) 10*4882a593Smuzhiyun { 11*4882a593Smuzhiyun FP_DECL_D(A); 12*4882a593Smuzhiyun FP_DECL_D(B); 13*4882a593Smuzhiyun FP_DECL_D(R); 14*4882a593Smuzhiyun FP_DECL_EX; 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun FP_UNPACK_DP(A, fa); 17*4882a593Smuzhiyun FP_UNPACK_DP(B, fb); 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun if (B_c == FP_CLS_ZERO && A_c != FP_CLS_ZERO) 20*4882a593Smuzhiyun FP_SET_EXCEPTION(FP_EX_DIVZERO); 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun FP_DIV_D(R, A, B); 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun FP_PACK_DP(ft, R); 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun __FPU_FPCSR |= FP_CUR_EXCEPTIONS; 27*4882a593Smuzhiyun } 28