summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/ChangeLog6
-rw-r--r--include/floatformat.h19
-rw-r--r--libiberty/ChangeLog5
-rw-r--r--libiberty/floatformat.c24
4 files changed, 48 insertions, 6 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index cb2ca5850cb..e2c90f819a7 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 a2448743050..f1bd7f601f5 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 d2bda7022ed..eeae1e3435f 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 8f0d7894641..28c9fbf662d 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);