Hi, SH2A, SH4 and SH4A FPU targets support mode switching i.e. switching between single precision and double precision. Double-precision FPU is also available for the above mentioned targets.
The option "-mfmovd" is enabled by default for SH2A which generates "fmov.d" instruction by default. However, SH4 and SH4A targets generates "fmov.d" instruction only after passing the option "-mfmovd". Can somebody clarify the reason behind above implementation? The instruction "fmov.d" may generate "address error" exception in some cases as the address involved in "fmov.d" instruction is not always 8 byte aligned. This problem can be easily resolved by passing option "-mdalign"(aligns double on 8 byte boundary). The option "-mfmovd" is enabled by default for SH2A but option "-mdalign" is not enabled by default. In case of SH4, SH4A neither of the options are enabled by default. Can we enable option "-mdalign" by default for SH2A target? The following testcase results in address error at "fmov.d" instruction. ======================================================================== void a (void); void a() { double b; b = b + 526; } int main(void) { a(); return 0; } ======================================================================== Regards, Naveen.H.S. KPIT Cummins Infosystems Ltd, Pune (INDIA) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Free download of GNU based tool-chains for Renesas' SH, H8, R8C, M16C and M32C Series. The following site also offers free technical support to its users. Visit http://www.kpitgnutools.com for details. Latest versions of KPIT GNU tools were released on February 4, 2008. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~