nds32: Support FP emulation

The Andes FPU coprocessor does not support denormalized number handling.
According to the specification, FPU generates a denorm input exception
that requires the kernel to deal with this instrution operation when it
encounters denormalized operands. Hence an nds32 FPU ISA emulator in the
kernel is required to meet requirement.

Signed-off-by: Vincent Chen <vincentc@andestech.com>
Signed-off-by: Nickhu <nickhu@andestech.com>
Acked-by: Greentime Hu <greentime@andestech.com>
Signed-off-by: Greentime Hu <greentime@andestech.com>
此提交包含在:
Vincent Chen
2018-11-22 11:14:35 +08:00
提交者 Greentime Hu
父節點 e46bf83c18
當前提交 1ac832509f
共有 24 個檔案被更改,包括 1064 行新增5 行删除

24
arch/nds32/math-emu/fcmps.c 一般檔案
查看文件

@@ -0,0 +1,24 @@
// SPDX-License-Identifier: GPL-2.0
// Copyright (C) 2005-2018 Andes Technology Corporation
#include <asm/sfp-machine.h>
#include <math-emu/soft-fp.h>
#include <math-emu/single.h>
int fcmps(void *ft, void *fa, void *fb, int cmpop)
{
FP_DECL_S(A);
FP_DECL_S(B);
FP_DECL_EX;
long cmp;
FP_UNPACK_SP(A, fa);
FP_UNPACK_SP(B, fb);
FP_CMP_S(cmp, A, B, SF_CUN);
cmp += 2;
if (cmp == SF_CGT)
*(int *)ft = 0x0;
else
*(int *)ft = (cmp & cmpop) ? 0x1 : 0x0;
return 0;
}