sim: cris/m68hc11: move default endian/alignment to configure [committed]

Message ID 1451527359-30209-1-git-send-email-vapier@gentoo.org
State Committed
Headers

Commit Message

Mike Frysinger Dec. 31, 2015, 2:02 a.m. UTC
  ---
 sim/cris/ChangeLog       |  6 ++++++
 sim/cris/configure       | 52 ++++++++++++++++++++++++++++++++++++++++++++++--
 sim/cris/configure.ac    |  1 +
 sim/cris/sim-if.c        |  6 ------
 sim/m68hc11/ChangeLog    |  7 +++++++
 sim/m68hc11/configure    | 52 ++++++++++++++++++++++++++++++++++++++++++++++--
 sim/m68hc11/configure.ac |  1 +
 sim/m68hc11/interp.c     |  4 ----
 8 files changed, 115 insertions(+), 14 deletions(-)
  

Patch

diff --git a/sim/cris/ChangeLog b/sim/cris/ChangeLog
index d6c6b41..9bf94f9 100644
--- a/sim/cris/ChangeLog
+++ b/sim/cris/ChangeLog
@@ -1,3 +1,9 @@ 
+2015-12-30  Mike Frysinger  <vapier@gentoo.org>
+
+	* sim-if.c (sim_open): Delete current_target_byte_order assignment.
+	* configure.ac: Call SIM_AC_OPTION_ENDIAN.
+	* configure: Regenerate.
+
 2015-12-27  Mike Frysinger  <vapier@gentoo.org>
 
 	* sim-if.c (cris_program_offset_write, sim_load): Delete.
diff --git a/sim/cris/configure b/sim/cris/configure
index eb1e7f4..be7f6fc 100755
--- a/sim/cris/configure
+++ b/sim/cris/configure
@@ -764,6 +764,7 @@  enable_sim_trace
 enable_sim_profile
 with_pkgversion
 with_bugurl
+enable_sim_endian
 enable_sim_alignment
 enable_sim_hostendian
 enable_sim_scache
@@ -1421,6 +1422,8 @@  Optional Features:
   --enable-sim-trace=opts Enable tracing of simulated programs
   --enable-sim-profile=opts
                           Enable profiling flags
+  --enable-sim-endian=endian
+                          Specify target byte endian orientation
   --enable-sim-alignment=align
                           Specify strict, nonstrict or forced alignment of
                           memory accesses
@@ -12326,7 +12329,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12329 "configure"
+#line 12332 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12432,7 +12435,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12435 "configure"
+#line 12438 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12938,6 +12941,51 @@  fi
 done
 
 
+
+wire_endian="LITTLE_ENDIAN"
+default_endian=""
+# Check whether --enable-sim-endian was given.
+if test "${enable_sim_endian+set}" = set; then :
+  enableval=$enable_sim_endian; case "${enableval}" in
+  b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
+  l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
+  yes)	 if test x"$wire_endian" != x; then
+	   sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
+	 else
+           if test x"$default_endian" != x; then
+	     sim_endian="-DWITH_TARGET_BYTE_ORDER=${default_endian}"
+	   else
+	     echo "No hard-wired endian for target $target" 1>&6
+	     sim_endian="-DWITH_TARGET_BYTE_ORDER=0"
+	   fi
+	 fi;;
+  no)	 if test x"$default_endian" != x; then
+	   sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
+	 else
+	   if test x"$wire_endian" != x; then
+	     sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${wire_endian}"
+	   else
+	     echo "No default endian for target $target" 1>&6
+	     sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=0"
+	   fi
+	 fi;;
+  *)	 as_fn_error "\"Unknown value $enableval for --enable-sim-endian\"" "$LINENO" 5; sim_endian="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
+  echo "Setting endian flags = $sim_endian" 6>&1
+fi
+else
+  if test x"$default_endian" != x; then
+  sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
+else
+  if test x"$wire_endian" != x; then
+    sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
+  else
+    sim_endian=
+  fi
+fi
+fi
+
 wire_alignment="NONSTRICT_ALIGNMENT"
 default_alignment=""
 
diff --git a/sim/cris/configure.ac b/sim/cris/configure.ac
index 4543342..4e6b1be 100644
--- a/sim/cris/configure.ac
+++ b/sim/cris/configure.ac
@@ -8,6 +8,7 @@  SIM_AC_COMMON
 # For dv-rv and rvdummy.
 AC_CHECK_HEADERS(sys/socket.h sys/select.h limits.h sys/param.h)
 
+SIM_AC_OPTION_ENDIAN(LITTLE_ENDIAN)
 SIM_AC_OPTION_ALIGNMENT(NONSTRICT_ALIGNMENT)
 SIM_AC_OPTION_HOSTENDIAN
 SIM_AC_OPTION_SCACHE(16384)
diff --git a/sim/cris/sim-if.c b/sim/cris/sim-if.c
index 142bc7b..71afbff 100644
--- a/sim/cris/sim-if.c
+++ b/sim/cris/sim-if.c
@@ -720,12 +720,6 @@  sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
       return 0;
     }
 
-  /* If we have a binary program, endianness-setting would not be taken
-     from elsewhere unfortunately, so set it here.  At the time of this
-     writing, it isn't used until sim_config, but that might change so
-     set it here before memory is defined or touched.  */
-  current_target_byte_order = LITTLE_ENDIAN;
-
   /* check for/establish the reference program image */
   if (sim_analyze_program (sd,
 			   (STATE_PROG_ARGV (sd) != NULL
diff --git a/sim/m68hc11/ChangeLog b/sim/m68hc11/ChangeLog
index ad83c37..ee8263e 100644
--- a/sim/m68hc11/ChangeLog
+++ b/sim/m68hc11/ChangeLog
@@ -1,5 +1,12 @@ 
 2015-12-30  Mike Frysinger  <vapier@gentoo.org>
 
+	* imterp.c (sim_open): Delete current_alignment and
+	current_target_byte_order assignments.
+	* configure.ac: Call SIM_AC_OPTION_ENDIAN.
+	* configure: Regenerate.
+
+2015-12-30  Mike Frysinger  <vapier@gentoo.org>
+
 	* wrapper.c (m68hc11_reg_store, m68hc11_reg_fetch): Define.
 	(sim_open): Call CPU_REG_FETCH/CPU_REG_STORE.
 	(sim_store_register): Rename to ...
diff --git a/sim/m68hc11/configure b/sim/m68hc11/configure
index 6870e8c..d7926d6 100755
--- a/sim/m68hc11/configure
+++ b/sim/m68hc11/configure
@@ -762,6 +762,7 @@  enable_sim_profile
 with_pkgversion
 with_bugurl
 enable_sim_inline
+enable_sim_endian
 enable_sim_alignment
 enable_sim_hostendian
 enable_werror
@@ -1416,6 +1417,8 @@  Optional Features:
                           Enable profiling flags
   --enable-sim-inline=inlines
                           Specify which functions should be inlined
+  --enable-sim-endian=endian
+                          Specify target byte endian orientation
   --enable-sim-alignment=align
                           Specify strict, nonstrict or forced alignment of
                           memory accesses
@@ -12311,7 +12314,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12314 "configure"
+#line 12317 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12417,7 +12420,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12420 "configure"
+#line 12423 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12951,6 +12954,51 @@  else
 fi
 fi
 
+
+wire_endian="LITTLE_ENDIAN"
+default_endian=""
+# Check whether --enable-sim-endian was given.
+if test "${enable_sim_endian+set}" = set; then :
+  enableval=$enable_sim_endian; case "${enableval}" in
+  b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
+  l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
+  yes)	 if test x"$wire_endian" != x; then
+	   sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
+	 else
+           if test x"$default_endian" != x; then
+	     sim_endian="-DWITH_TARGET_BYTE_ORDER=${default_endian}"
+	   else
+	     echo "No hard-wired endian for target $target" 1>&6
+	     sim_endian="-DWITH_TARGET_BYTE_ORDER=0"
+	   fi
+	 fi;;
+  no)	 if test x"$default_endian" != x; then
+	   sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
+	 else
+	   if test x"$wire_endian" != x; then
+	     sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${wire_endian}"
+	   else
+	     echo "No default endian for target $target" 1>&6
+	     sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=0"
+	   fi
+	 fi;;
+  *)	 as_fn_error "\"Unknown value $enableval for --enable-sim-endian\"" "$LINENO" 5; sim_endian="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
+  echo "Setting endian flags = $sim_endian" 6>&1
+fi
+else
+  if test x"$default_endian" != x; then
+  sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
+else
+  if test x"$wire_endian" != x; then
+    sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
+  else
+    sim_endian=
+  fi
+fi
+fi
+
 wire_alignment="NONSTRICT_ALIGNMENT"
 default_alignment=""
 
diff --git a/sim/m68hc11/configure.ac b/sim/m68hc11/configure.ac
index 5aefda5..a368b0c 100644
--- a/sim/m68hc11/configure.ac
+++ b/sim/m68hc11/configure.ac
@@ -7,6 +7,7 @@  SIM_AC_COMMON
 
 dnl Options available in this module
 SIM_AC_OPTION_INLINE()
+SIM_AC_OPTION_ENDIAN(LITTLE_ENDIAN)
 SIM_AC_OPTION_ALIGNMENT(NONSTRICT_ALIGNMENT)
 SIM_AC_OPTION_HOSTENDIAN
 SIM_AC_OPTION_WARNINGS
diff --git a/sim/m68hc11/interp.c b/sim/m68hc11/interp.c
index 7fb7005..f1303b4 100644
--- a/sim/m68hc11/interp.c
+++ b/sim/m68hc11/interp.c
@@ -437,10 +437,6 @@  sim_open (SIM_OPEN_KIND kind, host_callback *callback,
 
   cpu = STATE_CPU (sd, 0);
 
-  /* for compatibility */
-  current_alignment = NONSTRICT_ALIGNMENT;
-  current_target_byte_order = BIG_ENDIAN;
-
   cpu_initialize (sd, cpu);
 
   if (sim_pre_argv_init (sd, argv[0]) != SIM_RC_OK)