Rev. 1.50, 10/04, page 362 of 448
void check_double_exception(double *dst,result)
{
union {
double d;
int l[2];
} tmp;
double abs;
if(result < 0.0) tmp.l[0] = 0xfff00000; /*
– infinity
*/
else tmp.l[0] = 0x7ff00000; /*
+ infinity
*/
tmp.l[1] = 0x00000000;
if(result == tmp.d)
set_O(); set_I();
if(FPSCR_RM == 1) {
tmp.l[0] -= 1;
tmp.l[1] = 0xffffffff;
result = tmp.d; /*
Maximum value of normalized number
*/
}
}
if(result < 0.0) abs = -result;
else abs = result;
tmp.l[0] = 0x00100000; /*
Minimum value of normalized number
*/
tmp.l[1] = 0x00000000;
if(abs < tmp.d) {
if((FPSCR_DN == 1) && (abs != 0.0)) {
set_I();
if(result < 0.0) result = -0.0;
/*
Zeroize denormalized number
*/
else result = 0.0;
}
if(FPSCR_I == 1) set_U();
}
if(FPSCR & ENABLE_OUI) fpu_exception_trap();
else *dst = result;
}
Summary of Contents for SuperH SH-4A
Page 2: ...Rev 1 50 10 04 page ii of xx ...
Page 8: ...Rev 1 50 10 04 page viii of xx ...
Page 116: ...Rev 1 50 10 04 page 96 of 448 ...
Page 178: ...Rev 1 50 10 04 page 158 of 448 ...
Page 206: ...Rev 1 50 10 04 page 186 of 448 ...
Page 231: ...Rev 1 50 10 04 page 211 of 448 Possible Exceptions Slot illegal instruction exception ...
Page 235: ...Rev 1 50 10 04 page 215 of 448 Possible Exceptions Slot illegal instruction exception ...
Page 238: ...Rev 1 50 10 04 page 218 of 448 Possible Exceptions Slot illegal instruction exception ...
Page 408: ...Rev 1 50 10 04 page 388 of 448 Possible Exceptions Inexact Not generated when FPSCR PR 1 ...
Page 446: ...Rev 1 50 10 04 page 426 of 448 ...
Page 468: ...Rev 1 50 10 04 page 448 of 448 ...
Page 471: ......
Page 472: ...SH 4A Software Manual ...