// System dependent IEEE floating-point coprocessor initialization.

// General includes.
#include "cl_sysdep.h"

CL_PROVIDE(cl_ieee)

// Specification.
#include "cl_ieee.h"


// Implementation.

#include "cl_FF.h"
#include "cl_DF.h"

#if (defined(linux) || defined(__linux)) && (defined(FAST_FLOAT) || defined(FAST_DOUBLE))

// Damit Division durch 0.0 ein NaN und kein SIGFPE liefert:
// Entweder mit -lieee linken,
// oder libc-linux/sysdeps/linux/{i386,m68k}/ieee.c kopieren:

#include <fpu_control.h>

#if 0 // Leider gibt das einen Error, wenn man zusätzlich mit -lieee linkt.
unsigned short __fpu_control = _FPU_IEEE;
#else
AT_INITIALIZATION(ieee)
{
	extern unsigned short __fpu_control;
	__fpu_control = _FPU_IEEE;
}
#endif

#endif

// This dummy links in this module whenever some module needs IEEE floats.
int cl_ieee_module;

CL_PROVIDE_END(cl_ieee)
