/*
 * Copyright (c) 2021 Intel Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <kernel.h>
#include <toolchain.h>

/**
 * @file
 * @brief Provide soft float function stubs for long double operations.
 *
 * GCC soft float does not support long double so these need to be
 * stubbed out.
 *
 * The function names come from the GCC public documentation.
 */

extern void abort(void);

__weak void __addtf3(long double a, long double b)
{
	k_oops();
}

__weak void __addxf3(long double a, long double b)
{
	k_oops();
}

__weak void __subtf3(long double a, long double b)
{
	k_oops();
}

__weak void __subxf3(long double a, long double b)
{
	k_oops();
}

__weak void __multf3(long double a, long double b)
{
	k_oops();
}

__weak void __mulxf3(long double a, long double b)
{
	k_oops();
}

__weak void __divtf3(long double a, long double b)
{
	k_oops();
}

__weak void __divxf3(long double a, long double b)
{
	k_oops();
}

__weak void __negtf2(long double a)
{
	k_oops();
}

__weak void __negxf2(long double a)
{
	k_oops();
}

__weak void __extendsftf2(float a)
{
	k_oops();
}

__weak void __extendsfxf2(float a)
{
	k_oops();
}

__weak void __extenddftf2(double a)
{
	k_oops();
}

__weak void __extenddfxf2(double a)
{
	k_oops();
}

__weak void __truncxfdf2(long double a)
{
	k_oops();
}

__weak void __trunctfdf2(long double a)
{
	k_oops();
}

__weak void __truncxfsf2(long double a)
{
	k_oops();
}

__weak void __trunctfsf2(long double a)
{
	k_oops();
}

__weak void __fixtfsi(long double a)
{
	k_oops();
}

__weak void __fixxfsi(long double a)
{
	k_oops();
}

__weak void __fixtfdi(long double a)
{
	k_oops();
}

__weak void __fixxfdi(long double a)
{
	k_oops();
}

__weak void __fixtfti(long double a)
{
	k_oops();
}

__weak void __fixxfti(long double a)
{
	k_oops();
}

__weak void __fixunstfsi(long double a)
{
	k_oops();
}

__weak void __fixunsxfsi(long double a)
{
	k_oops();
}

__weak void __fixunstfdi(long double a)
{
	k_oops();
}

__weak void __fixunsxfdi(long double a)
{
	k_oops();
}

__weak void __fixunstfti(long double a)
{
	k_oops();
}

__weak void __fixunsxfti(long double a)
{
	k_oops();
}

__weak void __floatsitf(int i)
{
	k_oops();
}

__weak void __floatsixf(int i)
{
	k_oops();
}

__weak void __floatditf(long i)
{
	k_oops();
}

__weak void __floatdixf(long i)
{
	k_oops();
}

__weak void __floattitf(long long i)
{
	k_oops();
}

__weak void __floattixf(long long i)
{
	k_oops();
}

__weak void __floatunsitf(unsigned int i)
{
	k_oops();
}

__weak void __floatunsixf(unsigned int i)
{
	k_oops();
}

__weak void __floatunditf(unsigned long i)
{
	k_oops();
}

__weak void __floatundixf(unsigned long i)
{
	k_oops();
}

__weak void __floatuntitf(unsigned long long i)
{
	k_oops();
}

__weak void __floatuntixf(unsigned long long i)
{
	k_oops();
}

__weak void __cmptf2(long double a, long double b)
{
	k_oops();
}

__weak void __unordtf2(long double a, long double b)
{
	k_oops();
}

__weak void __eqtf2(long double a, long double b)
{
	k_oops();
}

__weak void __netf2(long double a, long double b)
{
	k_oops();
}

__weak void __getf2(long double a, long double b)
{
	k_oops();
}

__weak void __lttf2(long double a, long double b)
{
	k_oops();
}

__weak void __letf2(long double a, long double b)
{
	k_oops();
}

__weak void __gttf2(long double a, long double b)
{
	k_oops();
}

__weak void __powitf2(long double a, int b)
{
	k_oops();
}

__weak void __powixf2(long double a, int b)
{
	k_oops();
}
