Hello!
I am currently evaluation the feasiblitiy to add (real) 64-doubles to the
capabilities of the avr-gcc. The current state is, that the avr-gcc supports
floats and alias them to doubles. However, a prospective project demands the
resolution (accordung to their research), and therefore the company needing it
might sponsor me to implement the support.
However, beside some trivial patches, I am not familiar with gcc hacking. Therefore it is hard for me to estimated how long this will take, but the numbers are cruicial to deside if I get the assignement.
As far as I dugg into the gcc source, there is a soft-float library which is used widely among non-FPU targets. However, I am currently missing the link, how the target has to be configured to be aware of that. As I am currently stuck with that, I'd appreciate any hint, link, documents etc which might point me into the right direction.
Add this code to avr/t-avr:
--cut here--
LIB2FUNCS_EXTRA = fp-bit.c dp-bit.c
dp-bit.c: $(srcdir)/config/fp-bit.c
cat $(srcdir)/config/fp-bit.c > dp-bit.c
fp-bit.c: $(srcdir)/config/fp-bit.c
echo '#define FLOAT' > fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
--cut here--
then update avr/avr.h with
#define FLOAT_TYPE_SIZE 32
#define DOUBLE_TYPE_SIZE 64
#define LONG_DOUBLE_TYPE_SIZE 64
If everything works as expected, then you have just added soft-fp
support to avr.
Uros.