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>
This commit is contained in:

committed by
Greentime Hu

parent
e46bf83c18
commit
1ac832509f
24
arch/nds32/math-emu/faddd.c
Normal file
24
arch/nds32/math-emu/faddd.c
Normal file
@@ -0,0 +1,24 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
// Copyright (C) 2005-2018 Andes Technology Corporation
|
||||
#include <linux/uaccess.h>
|
||||
|
||||
#include <asm/sfp-machine.h>
|
||||
#include <math-emu/soft-fp.h>
|
||||
#include <math-emu/double.h>
|
||||
void faddd(void *ft, void *fa, void *fb)
|
||||
{
|
||||
FP_DECL_D(A);
|
||||
FP_DECL_D(B);
|
||||
FP_DECL_D(R);
|
||||
FP_DECL_EX;
|
||||
|
||||
FP_UNPACK_DP(A, fa);
|
||||
FP_UNPACK_DP(B, fb);
|
||||
|
||||
FP_ADD_D(R, A, B);
|
||||
|
||||
FP_PACK_DP(ft, R);
|
||||
|
||||
__FPU_FPCSR |= FP_CUR_EXCEPTIONS;
|
||||
|
||||
}
|
Reference in New Issue
Block a user