diff options
-rw-r--r-- | include/ChangeLog | 6 | ||||
-rw-r--r-- | include/floatformat.h | 19 | ||||
-rw-r--r-- | libiberty/ChangeLog | 5 | ||||
-rw-r--r-- | libiberty/floatformat.c | 24 |
4 files changed, 48 insertions, 6 deletions
diff --git a/include/ChangeLog b/include/ChangeLog index cb2ca58..e2c90f8 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,9 @@ +2005-10-31 Mark Kettenis <kettenis@gnu.org> + + * floatformat.h (enum floatformat_byteorders): Add + floatformat_vax. + (floatformat_vax_aingle, floatformat_vax_double): Declare. + 2005-10-28 Dave Brolley <brolley@redhat.com> Contribute the following changes: diff --git a/include/floatformat.h b/include/floatformat.h index a244874..f1bd7f6 100644 --- a/include/floatformat.h +++ b/include/floatformat.h @@ -29,25 +29,26 @@ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. (i.e. BITS_BIG_ENDIAN type numbering), and specify which bits each field contains with the *_start and *_len fields. */ -/* What is the order of the bytes. */ +/* What is the order of the bytes? */ enum floatformat_byteorders { - /* Standard little endian byte order. EX: 1.2345678e10 => 00 00 80 c5 e0 fe 06 42 */ - floatformat_little, /* Standard big endian byte order. EX: 1.2345678e10 => 42 06 fe e0 c5 80 00 00 */ - floatformat_big, /* Little endian byte order but big endian word order. EX: 1.2345678e10 => e0 fe 06 42 00 00 80 c5 */ + floatformat_littlebyte_bigword, - floatformat_littlebyte_bigword - + /* VAX byte order. Little endian byte order with 16-bit words. The + following example is an illustration of the byte order only; VAX + doesn't have a fully IEEE compliant floating-point format. + EX: 1.2345678e10 => 80 c5 00 00 06 42 e0 fe */ + floatformat_vax }; enum floatformat_intbit { floatformat_intbit_yes, floatformat_intbit_no }; @@ -97,6 +98,12 @@ extern const struct floatformat floatformat_ieee_double_little; extern const struct floatformat floatformat_ieee_double_littlebyte_bigword; +/* floatformats for VAX. */ + +extern const struct floatformat floatformat_vax_f; +extern const struct floatformat floatformat_vax_d; +extern const struct floatformat floatformat_vax_g; + /* floatformats for various extendeds. */ extern const struct floatformat floatformat_i387_ext; diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index d2bda70..eeae1e3 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,8 @@ +2005-10-31 Mark Kettenis <kettenis@gnu.org> + + * floatformat.c (floatformat_vax_aingle, floatformat_vax_double): + New variables. + 2005-10-07 Mark Mitchell <mark@codesourcery.com> * at-file.texi: Fix typo. diff --git a/libiberty/floatformat.c b/libiberty/floatformat.c index 8f0d789..28c9fbf 100644 --- a/libiberty/floatformat.c +++ b/libiberty/floatformat.c @@ -108,6 +108,30 @@ const struct floatformat floatformat_ieee_double_littlebyte_bigword = floatformat_always_valid }; +/* floatformat for VAX. Not quite IEEE, but close enough. */ + +const struct floatformat floatformat_vax_f = +{ + floatformat_vax, 32, 0, 1, 8, 129, 0, 9, 23, + floatformat_intbit_no, + "floatformat_vax_f", + floatformat_always_valid +}; +const struct floatformat floatformat_vax_d = +{ + floatformat_vax, 64, 0, 1, 8, 129, 0, 9, 55, + floatformat_intbit_no, + "floatformat_vax_d", + floatformat_always_valid +}; +const struct floatformat floatformat_vax_g = +{ + floatformat_vax, 64, 0, 1, 11, 1025, 0, 12, 52, + floatformat_intbit_no, + "floatformat_vax_g", + floatformat_always_valid +}; + static int floatformat_i387_ext_is_valid (const struct floatformat *fmt, const void *from); |