(EXTRACT_SIGNED,EXTRACT_UNSIGNED,HOST_LONGS_FOR_BITS): Move from
authorDavid Edelsohn <dje.gcc@gmail.com>
Thu, 1 May 1997 17:45:25 +0000 (17:45 +0000)
committerDavid Edelsohn <dje.gcc@gmail.com>
Thu, 1 May 1997 17:45:25 +0000 (17:45 +0000)
cgen-types.h to cgen-sim.h.

sim/common/cgen-sim.h

index 4cfc7d2..7df7d3f 100644 (file)
@@ -42,6 +42,20 @@ enum sim_signal_type {
 void engine_halt PARAMS ((struct _sim_cpu *, enum exec_state, int));
 void engine_signal PARAMS ((struct _sim_cpu *, enum sim_signal_type));
 \f
+/* Instruction field support macros.  */
+
+#define EXTRACT_SIGNED(val, total, start, length) \
+(((((val) >> ((total) - ((start) + (length)))) & ((1 << (length)) - 1)) \
+  ^ (1 << ((length) - 1))) \
+ - (1 << ((length) - 1)))
+
+#define EXTRACT_UNSIGNED(val, total, start, length) \
+(((val) >> ((total) - ((start) + (length)))) & ((1 << (length)) - 1))
+
+/* Compute number of longs required to hold N bits.  */
+#define HOST_LONGS_FOR_BITS(n) \
+  (((n) + sizeof (long) * 8 - 1) / sizeof (long) * 8)
+\f
 /* Decode,extract,semantics.  */
 
 typedef void (EXTRACT_FN) PARAMS ((SIM_CPU *, PCADDR, insn_t, struct argbuf *));