* callback.c (default_callback): Initialize target_endian.
authorHans-Peter Nilsson <hp@axis.com>
Fri, 28 Jan 2005 03:28:40 +0000 (03:28 +0000)
committerHans-Peter Nilsson <hp@axis.com>
Fri, 28 Jan 2005 03:28:40 +0000 (03:28 +0000)
(cb_store_target_endian): Renamed from store, new first parameter
host_callback *cb, drop last parameter big_p.  Take endianness
from cb.
(cb_host_to_target_stat): Change to use cb_store_target_endian.
Remove variable big_p.
* nrun.c (main): Initialize default_callback.target_endian.

sim/common/ChangeLog
sim/common/callback.c
sim/common/nrun.c

index 6bd703352b51bebfbfbefec572fb058fe3632e42..ea9e80bc16fe45ae6b8f943526b6b916ba36a862 100644 (file)
@@ -1,3 +1,13 @@
+2005-01-28  Hans-Peter Nilsson  <hp@axis.com>
+
+       * callback.c (default_callback): Initialize target_endian.
+       (cb_store_target_endian): Renamed from store, new first parameter
+       host_callback *cb, drop last parameter big_p.  Take endianness
+       from cb.
+       (cb_host_to_target_stat): Change to use cb_store_target_endian.
+       Remove variable big_p.
+       * nrun.c (main): Initialize default_callback.target_endian.
+
 2005-01-14  Andrew Cagney  <cagney@gnu.org>
 
        * configure.ac: Replace SIM_AC_COMMON with sinclude of common.m4.
index 7ba0c06fb0656fde8967e735ca3485762163e6c2..e0125c199ac0e9007e9f6a69006fc966e2b259bf 100644 (file)
@@ -626,6 +626,9 @@ host_callback default_callback =
   0, /* signal_map */
   0, /* stat_map */
        
+  /* Defaults expected to be overridden at initialization, where needed.  */
+  BFD_ENDIAN_UNKNOWN, /* target_endian */
+
   HOST_CALLBACK_MAGIC,
 };
 \f
@@ -757,17 +760,17 @@ cb_target_to_host_open (cb, target_val)
   return host_val;
 }
 
-/* Utility for cb_host_to_target_stat to store values in the target's
+/* Utility for e.g. cb_host_to_target_stat to store values in the target's
    stat struct.  */
 
-static void
-store (p, size, val, big_p)
+void
+cb_store_target_endian (cb, p, size, val)
+     host_callback *cb;
      char *p;
      int size;
      long val; /* ??? must be as big as target word size */
-     int big_p;
 {
-  if (big_p)
+  if (cb->target_endian == BFD_ENDIAN_BIG)
     {
       p += size;
       while (size-- > 0)
@@ -801,7 +804,6 @@ cb_host_to_target_stat (cb, hs, ts)
 {
   const char *m = cb->stat_map;
   char *p;
-  int big_p = 0;
 
   if (hs == NULL)
     ts = NULL;
@@ -833,7 +835,7 @@ cb_host_to_target_stat (cb, hs, ts)
 #undef ST_x
 #define ST_x(FLD)                                      \
          else if (strncmp (m, #FLD, q - m) == 0)       \
-           store (p, size, hs->FLD, big_p)
+           cb_store_target_endian (cb, p, size, hs->FLD)
 
 #ifdef HAVE_STRUCT_STAT_ST_DEV
          ST_x (st_dev);
@@ -877,7 +879,8 @@ cb_host_to_target_stat (cb, hs, ts)
 #undef ST_x
          /* FIXME:wip */
          else
-           store (p, size, 0, big_p); /* unsupported field, store 0 */
+           /* Unsupported field, store 0.  */
+           cb_store_target_endian (cb, p, size, 0);
        }
 
       p += size;
index d0c43e6ad931d903d584eb18320ce7bf9d816c52..ed1d1ea9da79740579c577a027baf866cae3e77f 100644 (file)
@@ -82,6 +82,12 @@ main (int argc, char **argv)
       abort ();
     }
 
+  /* We can't set the endianness in the callback structure until
+     sim_config is called, which happens in sim_open.  */
+  default_callback.target_endian
+    = (CURRENT_TARGET_BYTE_ORDER == BIG_ENDIAN
+       ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
+
   /* Was there a program to run?  */
   prog_argv = STATE_PROG_ARGV (sd);
   prog_bfd = STATE_PROG_BFD (sd);