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.    
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Reply via email to