File 0007-m6888x-auto.m4-m68k-bus-auto.m4-m68k-insns-auto.m4-m.patch of Package tme
From 90a2a354d8d694d8c53290ccc3e03c0db3d08075 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= <kkaempf@gmail.com>
Date: Thu, 3 Oct 2024 15:42:58 +0200
Subject: [PATCH 07/12]
m6888x-auto.m4,m68k-bus-auto.m4,m68k-insns-auto.m4,m68k-misc-auto.m4: Fix
$as_echo
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
---
ic/m68k/m6888x-auto.m4 | 38 +-
ic/m68k/m68k-bus-auto.m4 | 70 +-
ic/m68k/m68k-insns-auto.m4 | 2736 ++++++++++++++++++------------------
ic/m68k/m68k-misc-auto.m4 | 244 ++--
4 files changed, 1544 insertions(+), 1544 deletions(-)
diff --git a/ic/m68k/m6888x-auto.m4 b/ic/m68k/m6888x-auto.m4
index 4a65097..fa09bee 100644
--- a/ic/m68k/m6888x-auto.m4
+++ b/ic/m68k/m6888x-auto.m4
@@ -81,7 +81,7 @@ EOF
#
opmode_bitmap=0
opmode_bit=1
- $as_echo_n " "
+ AS_ECHO_N([" "])
;;
table)
@@ -104,7 +104,7 @@ EOF
# this byte:
#
if test ${what} = bitmap && test ${opmode_bit} = 256; then
- $as_echo_n "${opmode_bitmap}, "
+ AS_ECHO_N(["${opmode_bitmap}, "])
opmode_bitmap=0
opmode_bit=1
fi
@@ -225,42 +225,42 @@ EOF
table)
- $as_echo ""
- $as_echo " /* opmode ${opmode}: */"
- $as_echo_n " { "
+ AS_ECHO([""])
+ AS_ECHO([" /* opmode ${opmode}: */"])
+ AS_ECHO_N([" { "])
# the function:
#
if test "x${name}" = x; then
- $as_echo_n "NULL"
- $as_echo_n ", 0"
+ AS_ECHO_N(["NULL"])
+ AS_ECHO_N([", 0"])
fpu_types=TME_M68K_FPU_NONE
elif test "x${name_ieee754}" != x; then
- $as_echo_n "NULL"
- $as_echo_n ", TME_M6888X_IEEE754_OP(tme_ieee754_ops_extended80_${name_ieee754})"
+ AS_ECHO_N(["NULL"])
+ AS_ECHO_N([", TME_M6888X_IEEE754_OP(tme_ieee754_ops_extended80_${name_ieee754})"])
else
- $as_echo_n "_tme_m6888x_f${name}"
- $as_echo_n ", 0"
+ AS_ECHO_N(["_tme_m6888x_f${name}"])
+ AS_ECHO_N([", 0"])
fi
# the m6888x types:
#
- $as_echo_n ", ${fpu_types}"
+ AS_ECHO_N([", ${fpu_types}"])
# the operation type:
#
if test ${optype} != MONADIC; then optype="DYADIC_${optype}"; fi
- $as_echo_n ", TME_M6888X_OPTYPE_${optype}"
+ AS_ECHO_N([", TME_M6888X_OPTYPE_${optype}"])
# the rounding mode:
#
- $as_echo_n ", TME_FLOAT_ROUND_${rounding_mode}"
+ AS_ECHO_N([", TME_FLOAT_ROUND_${rounding_mode}"])
# the rounding precision:
#
- $as_echo_n ", TME_M6888X_ROUNDING_PRECISION_${rounding_precision}"
+ AS_ECHO_N([", TME_M6888X_ROUNDING_PRECISION_${rounding_precision}"])
- $as_echo " },"
+ AS_ECHO([" },"])
;;
esac
done
@@ -270,12 +270,12 @@ EOF
case ${what} in
bitmap)
- $as_echo "${opmode_bitmap}"
- $as_echo "};"
+ AS_ECHO(["${opmode_bitmap}"])
+ AS_ECHO(["};"])
;;
table)
- $as_echo "};"
+ AS_ECHO(["};"])
;;
esac
diff --git a/ic/m68k/m68k-bus-auto.m4 b/ic/m68k/m68k-bus-auto.m4
index a31abf6..b3f3b46 100644
--- a/ic/m68k/m68k-bus-auto.m4
+++ b/ic/m68k/m68k-bus-auto.m4
@@ -75,9 +75,9 @@ EOF
# emit the 16-bit bus router:
if $header; then :; else
- $as_echo ""
- $as_echo "/* the 16-bit bus router used on the 68000 and 68010: */"
- $as_echo "const tme_bus_lane_t tme_m68k_router_16[[TME_M68K_BUS_ROUTER_SIZE(TME_BUS16_LOG2)]] = {"
+ AS_ECHO([""])
+ AS_ECHO(["/* the 16-bit bus router used on the 68000 and 68010: */"])
+ AS_ECHO(["const tme_bus_lane_t tme_m68k_router_16[[TME_M68K_BUS_ROUTER_SIZE(TME_BUS16_LOG2)]] = {"])
# permute over maximum cycle size:
for transfer in 1 2; do
@@ -109,12 +109,12 @@ if $header; then :; else
port_lanes="${port_lanes} - incorrect for 16-bit m68k"
fi
- $as_echo ""
- $as_echo " /* [[m68k]] initiator maximum cycle size: "`expr ${transfer} \* 8`" bits"
- $as_echo " [[m68k]] initiator A0: ${address_bits}"
- $as_echo " [[gen]] responding port size: "`expr ${port_size} \* 8`" bits"
- $as_echo " [[gen]] responding port least lane: ${port_pos} (lanes${port_lanes})"
- $as_echo " (code ${transfer}.${address}.${port_size}.${port_pos}): */"
+ AS_ECHO([""])
+ AS_ECHO([" /* [[m68k]] initiator maximum cycle size: "`expr ${transfer} \* 8`" bits"])
+ AS_ECHO([" [[m68k]] initiator A0: ${address_bits}"])
+ AS_ECHO([" [[gen]] responding port size: "`expr ${port_size} \* 8`" bits"])
+ AS_ECHO([" [[gen]] responding port least lane: ${port_pos} (lanes${port_lanes})"])
+ AS_ECHO([" (code ${transfer}.${address}.${port_size}.${port_pos}): */"])
# emit the bus router information for each lane:
for lane in 0 1; do
@@ -147,46 +147,46 @@ if $header; then :; else
fi
;;
*)
- $as_echo "$PROG internal error: unhandled 16-bit bus case ${transfer}:${address}:${lane}" 1>&2
+ AS_ECHO(["$PROG internal error: unhandled 16-bit bus case ${transfer}:${address}:${lane}"]) 1>&2
exit 1
;;
esac
# emit the comment for this lane:
- $as_echo_n " /* D"`expr \( \( ${lane} + 1 \) \* 8 \) - 1`"-D"`expr ${lane} \* 8`" */ "
+ AS_ECHO_N([" /* D"`expr \( \( ${lane} + 1 \) \* 8 \) - 1`"-D"`expr ${lane} \* 8`" */ "])
# if this port size/position combination is
# invalid, override everything and abort if
# this router entry is ever touched:
if test `expr ${port_pos_end} \> 2` = 1; then
- $as_echo "TME_BUS_LANE_ABORT,"
+ AS_ECHO(["TME_BUS_LANE_ABORT,"])
else
if test $lane_read = "ABORT"; then
- $as_echo_n "TME_BUS_LANE_ABORT"
+ AS_ECHO_N(["TME_BUS_LANE_ABORT"])
elif test $lane_read != "IGNORE"; then
if test $lane_read != $lane_write; then
- $as_echo "$PROG internal error: code ${transfer}:${address}:${lane}, reading $lane_read but writing $lane_write" 1>&2
+ AS_ECHO(["$PROG internal error: code ${transfer}:${address}:${lane}, reading $lane_read but writing $lane_write"]) 1>&2
exit 1
fi
- $as_echo_n "TME_BUS_LANE_ROUTE(SIZ"`expr ${transfer} \* 8`"_$lane_read)"
+ AS_ECHO_N(["TME_BUS_LANE_ROUTE(SIZ"`expr ${transfer} \* 8`"_$lane_read)"])
else
- $as_echo_n "TME_BUS_LANE_ROUTE(SIZ"`expr ${transfer} \* 8`"_$lane_write) | TME_BUS_LANE_ROUTE_WRITE_IGNORE"
+ AS_ECHO_N(["TME_BUS_LANE_ROUTE(SIZ"`expr ${transfer} \* 8`"_$lane_write) | TME_BUS_LANE_ROUTE_WRITE_IGNORE"])
fi
- $as_echo "${lane_warn},"
+ AS_ECHO(["${lane_warn},"])
fi
done
done
done
done
done
- $as_echo "};"
+ AS_ECHO(["};"])
fi
# emit the 32-bit bus router:
if $header; then :; else
- $as_echo ""
- $as_echo "/* the 32-bit bus router used on the 68020 and 68030: */"
- $as_echo "const tme_bus_lane_t tme_m68k_router_32[[TME_M68K_BUS_ROUTER_SIZE(TME_BUS32_LOG2)]] = {"
+ AS_ECHO([""])
+ AS_ECHO(["/* the 32-bit bus router used on the 68020 and 68030: */"])
+ AS_ECHO(["const tme_bus_lane_t tme_m68k_router_32[[TME_M68K_BUS_ROUTER_SIZE(TME_BUS32_LOG2)]] = {"])
# permute over maximum cycle size:
for transfer in 1 2 3 4; do
@@ -241,12 +241,12 @@ if $header; then :; else
opn_lane=`expr 3 - \( ${address} % ${port_size} \)`
op3_lane=`expr \( ${opn_lane} \) - \( 3 - ${opn} \)`
- $as_echo ""
- $as_echo " /* [[m68k]] initiator maximum cycle size: "`expr ${transfer} \* 8`" bits"
- $as_echo " [[m68k]] initiator A1,A0: ${address_bits}"
- $as_echo " [[gen]] responder port size: "`expr ${port_size} \* 8`" bits"
- $as_echo " [[gen]] responder port least lane: ${port_pos} (lanes${port_lanes})"
- $as_echo " (code ${transfer}.${address}.${port_size}.${port_pos}, OP3 lane ${op3_lane}): */"
+ AS_ECHO([""])
+ AS_ECHO([" /* [[m68k]] initiator maximum cycle size: "`expr ${transfer} \* 8`" bits"])
+ AS_ECHO([" [[m68k]] initiator A1,A0: ${address_bits}"])
+ AS_ECHO([" [[gen]] responder port size: "`expr ${port_size} \* 8`" bits"])
+ AS_ECHO([" [[gen]] responder port least lane: ${port_pos} (lanes${port_lanes})"])
+ AS_ECHO([" (code ${transfer}.${address}.${port_size}.${port_pos}, OP3 lane ${op3_lane}): */"])
# emit the bus router information for each lane:
for lane in 0 1 2 3; do
@@ -347,33 +347,33 @@ if $header; then :; else
esac
# emit the comment for this lane:
- $as_echo_n " /* D"`expr \( \( ${lane} + 1 \) \* 8 \) - 1`"-D"`expr ${lane} \* 8`" */ "
+ AS_ECHO_N([" /* D"`expr \( \( ${lane} + 1 \) \* 8 \) - 1`"-D"`expr ${lane} \* 8`" */ "])
# if this port size/position combination is
# invalid, override everything and abort if
# this router entry is ever touched:
if test `expr ${port_pos_end} \> 4` = 1; then
- $as_echo "TME_BUS_LANE_ABORT,"
+ AS_ECHO(["TME_BUS_LANE_ABORT,"])
else
if test $lane_read != "IGNORE"; then
if test $lane_read != $lane_write; then
- $as_echo "$PROG internal error: code ${transfer}.${address}.${port_size}.${port_pos}, reading $lane_read but writing $lane_write" 1>&2
+ AS_ECHO(["$PROG internal error: code ${transfer}.${address}.${port_size}.${port_pos}, reading $lane_read but writing $lane_write"]) 1>&2
exit 1
fi
- $as_echo_n "TME_BUS_LANE_ROUTE(SIZ"`expr ${transfer} \* 8`"_$lane_read)"
+ AS_ECHO_N(["TME_BUS_LANE_ROUTE(SIZ"`expr ${transfer} \* 8`"_$lane_read)"])
elif test $lane_write = "UNDEF"; then
- $as_echo_n "TME_BUS_LANE_UNDEF"
+ AS_ECHO_N(["TME_BUS_LANE_UNDEF"])
else
- $as_echo_n "TME_BUS_LANE_ROUTE(SIZ"`expr ${transfer} \* 8`"_$lane_write) | TME_BUS_LANE_ROUTE_WRITE_IGNORE"
+ AS_ECHO_N(["TME_BUS_LANE_ROUTE(SIZ"`expr ${transfer} \* 8`"_$lane_write) | TME_BUS_LANE_ROUTE_WRITE_IGNORE"])
fi
- $as_echo "${lane_warn},"
+ AS_ECHO(["${lane_warn},"])
fi
done
done
done
done
done
- $as_echo "};"
+ AS_ECHO(["};"])
fi
cat <<EOF
diff --git a/ic/m68k/m68k-insns-auto.m4 b/ic/m68k/m68k-insns-auto.m4
index ccf61e7..707f609 100644
--- a/ic/m68k/m68k-insns-auto.m4
+++ b/ic/m68k/m68k-insns-auto.m4
@@ -92,7 +92,7 @@ for size in 8 16 32; do
addx) op=' + ' ; arith=add ; optype=mathx ; with_x=true ;;
subx) op=' - ' ; arith=sub ; optype=mathx ; with_x=true ;;
cmpm) op=' - ' ; arith=sub ; optype=mathx ; store_res=false ;;
- *) $as_echo "$0 internal error: unknown ALU function $name" 1>&2 ; exit 1 ;;
+ *) AS_ECHO(["$0 internal error: unknown ALU function $name"]) 1>&2 ; exit 1 ;;
esac
# placeholder for another permutation:
@@ -100,32 +100,32 @@ for size in 8 16 32; do
# if we're making the header, just emit a declaration:
if $header; then
- $as_echo "TME_M68K_INSN_DECL(tme_m68k_${name}${size});"
+ AS_ECHO(["TME_M68K_INSN_DECL(tme_m68k_${name}${size});"])
continue
fi
# open the function:
- $as_echo ""
- $as_echo_n "/* this does a ${size}-bit \"$name "
- case "${src}/${dst}" in *op0*) $as_echo_n "SRC, " ;; esac
- $as_echo "DST\": */"
- $as_echo "TME_M68K_INSN(tme_m68k_${name}${size})"
- $as_echo "{"
+ AS_ECHO([""])
+ AS_ECHO_N(["/* this does a ${size}-bit \"$name "])
+ case "${src}/${dst}" in *op0*) AS_ECHO_N(["SRC, "]) ;; esac
+ AS_ECHO(["DST\": */"])
+ AS_ECHO(["TME_M68K_INSN(tme_m68k_${name}${size})"])
+ AS_ECHO(["{"])
# declare our locals:
if test $name = cmpa; then size=32; fi
- $as_echo_n " tme_uint${size}_t res"
- case "${src}/${dst}" in *op0*) $as_echo_n ", op0" ;; esac
- case "${src}/${dst}" in *op1*) $as_echo_n ", op1" ;; esac
- $as_echo ";"
- $as_echo " tme_uint8_t flags;"
+ AS_ECHO_N([" tme_uint${size}_t res"])
+ case "${src}/${dst}" in *op0*) AS_ECHO_N([", op0"]) ;; esac
+ case "${src}/${dst}" in *op1*) AS_ECHO_N([", op1"]) ;; esac
+ AS_ECHO([";"])
+ AS_ECHO([" tme_uint8_t flags;"])
# load the operand(s):
- $as_echo ""
- $as_echo " /* load the operand(s): */"
+ AS_ECHO([""])
+ AS_ECHO([" /* load the operand(s): */"])
case ${optype} in
mathx)
- $as_echo " unsigned int function_code = TME_M68K_FUNCTION_CODE_DATA(ic);"
+ AS_ECHO([" unsigned int function_code = TME_M68K_FUNCTION_CODE_DATA(ic);"])
# NB: in my 68000 Programmer's Manual, the description
# of subx is a little backwards from addx and cmpm. in
@@ -137,74 +137,74 @@ for size in 8 16 32; do
# 0-2 always identifies the source operand, and the
# reg field at bits 9-11 always identifies the
# destination operand:
- $as_echo " int ireg_src = TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 0, 3);"
- $as_echo " int ireg_dst = TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 9, 3);"
+ AS_ECHO([" int ireg_src = TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 0, 3);"])
+ AS_ECHO([" int ireg_dst = TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 9, 3);"])
# the stack pointer must always be adjusted by a multiple of two.
# assuming ireg < 8, ((ireg + 1) >> 3) == 1 iff ireg == 7, meaning %a7:
- $as_echo_n " tme_uint32_t ireg_src_adjust = sizeof(tme_uint${size}_t)";
+ AS_ECHO_N([" tme_uint32_t ireg_src_adjust = sizeof(tme_uint${size}_t)"]);
if test ${size} = 8; then
- $as_echo_n " + ((ireg_src + 1) >> 3)"
+ AS_ECHO_N([" + ((ireg_src + 1) >> 3)"])
fi
- $as_echo ";"
- $as_echo_n " tme_uint32_t ireg_dst_adjust = sizeof(tme_uint${size}_t)";
+ AS_ECHO([";"])
+ AS_ECHO_N([" tme_uint32_t ireg_dst_adjust = sizeof(tme_uint${size}_t)"]);
if test ${size} = 8; then
- $as_echo_n " + ((ireg_dst + 1) >> 3)"
+ AS_ECHO_N([" + ((ireg_dst + 1) >> 3)"])
fi
- $as_echo ";"
+ AS_ECHO([";"])
case ${name} in
# cmpm always uses memory and is always postincrement:
cmpm)
- $as_echo ""
- $as_echo " TME_M68K_INSN_CANFAULT;"
- $as_echo ""
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo " ic->_tme_m68k_ea_function_code = function_code;"
- $as_echo " ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_src);"
- $as_echo " ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_src) += ireg_src_adjust;"
- $as_echo " }"
- $as_echo " tme_m68k_read_mem${size}(ic, TME_M68K_IREG_MEMY${size});"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo " ic->_tme_m68k_ea_function_code = function_code;"
- $as_echo " ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_dst);"
- $as_echo " ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_dst) += ireg_dst_adjust;"
- $as_echo " }"
- $as_echo " tme_m68k_read_memx${size}(ic);"
- $as_echo " ${dst} = ic->tme_m68k_ireg_memx${size};"
- $as_echo " ${src} = ic->tme_m68k_ireg_memy${size};"
+ AS_ECHO([""])
+ AS_ECHO([" TME_M68K_INSN_CANFAULT;"])
+ AS_ECHO([""])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([" ic->_tme_m68k_ea_function_code = function_code;"])
+ AS_ECHO([" ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_src);"])
+ AS_ECHO([" ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_src) += ireg_src_adjust;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" tme_m68k_read_mem${size}(ic, TME_M68K_IREG_MEMY${size});"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([" ic->_tme_m68k_ea_function_code = function_code;"])
+ AS_ECHO([" ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_dst);"])
+ AS_ECHO([" ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_dst) += ireg_dst_adjust;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" tme_m68k_read_memx${size}(ic);"])
+ AS_ECHO([" ${dst} = ic->tme_m68k_ireg_memx${size};"])
+ AS_ECHO([" ${src} = ic->tme_m68k_ireg_memy${size};"])
;;
# addx and subx use either registers or memory. if they use memory,
# they always predecrement:
addx|subx)
- $as_echo " tme_uint16_t memory;"
- $as_echo ""
- $as_echo " memory = (TME_M68K_INSN_OPCODE & TME_BIT(3));"
- $as_echo " if (memory) {"
- $as_echo " TME_M68K_INSN_CANFAULT;"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo " ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_src) -= ireg_src_adjust;"
- $as_echo " ic->_tme_m68k_ea_function_code = function_code;"
- $as_echo " ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_src);"
- $as_echo " }"
- $as_echo " tme_m68k_read_mem${size}(ic, TME_M68K_IREG_MEMY${size});"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo " ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_dst) -= ireg_dst_adjust;"
- $as_echo " ic->_tme_m68k_ea_function_code = function_code;"
- $as_echo " ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_dst);"
- $as_echo " }"
- $as_echo " tme_m68k_read_memx${size}(ic);"
- $as_echo " ${dst} = ic->tme_m68k_ireg_memx${size};"
- $as_echo " ${src} = ic->tme_m68k_ireg_memy${size};"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " ${src} = ic->tme_m68k_ireg_uint${size}((TME_M68K_IREG_D0 + ireg_src)${reg_size_shift});"
- $as_echo " ${dst} = ic->tme_m68k_ireg_uint${size}((TME_M68K_IREG_D0 + ireg_dst)${reg_size_shift});"
- $as_echo " }"
+ AS_ECHO([" tme_uint16_t memory;"])
+ AS_ECHO([""])
+ AS_ECHO([" memory = (TME_M68K_INSN_OPCODE & TME_BIT(3));"])
+ AS_ECHO([" if (memory) {"])
+ AS_ECHO([" TME_M68K_INSN_CANFAULT;"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_src) -= ireg_src_adjust;"])
+ AS_ECHO([" ic->_tme_m68k_ea_function_code = function_code;"])
+ AS_ECHO([" ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_src);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" tme_m68k_read_mem${size}(ic, TME_M68K_IREG_MEMY${size});"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_dst) -= ireg_dst_adjust;"])
+ AS_ECHO([" ic->_tme_m68k_ea_function_code = function_code;"])
+ AS_ECHO([" ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_dst);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" tme_m68k_read_memx${size}(ic);"])
+ AS_ECHO([" ${dst} = ic->tme_m68k_ireg_memx${size};"])
+ AS_ECHO([" ${src} = ic->tme_m68k_ireg_memy${size};"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" ${src} = ic->tme_m68k_ireg_uint${size}((TME_M68K_IREG_D0 + ireg_src)${reg_size_shift});"])
+ AS_ECHO([" ${dst} = ic->tme_m68k_ireg_uint${size}((TME_M68K_IREG_D0 + ireg_dst)${reg_size_shift});"])
+ AS_ECHO([" }"])
;;
- *) $as_echo "$0 internal error: unknown mathx ${name}" 1>&2 ; exit 1 ;;
+ *) AS_ECHO(["$0 internal error: unknown mathx ${name}"]) 1>&2 ; exit 1 ;;
esac
;;
normal)
@@ -213,60 +213,60 @@ for size in 8 16 32; do
case "x${what}" in
x|x0) ;;
xop[[01]].16s32)
- what=`$as_echo ${what} | sed -e 's/\..*//'`
+ what=`AS_ECHO([${what}]) | sed -e 's/\..*//'`
eval ${which}"=${what}"
- $as_echo " ${what} = (tme_uint32_t) ((tme_int32_t) *((tme_int16_t *) _${what}));"
+ AS_ECHO([" ${what} = (tme_uint32_t) ((tme_int32_t) *((tme_int16_t *) _${what}));"])
;;
xop[[01]])
- $as_echo " ${what} = *((tme_uint${size}_t *) _${what});"
+ AS_ECHO([" ${what} = *((tme_uint${size}_t *) _${what});"])
;;
xopc8)
eval ${which}"='TME_EXT_S8_U${size}((tme_int8_t) (TME_M68K_INSN_OPCODE & 0xff))'"
;;
- *) $as_echo "$0 internal error: unknown what ${what}" 1>&2 ; exit 1 ;;
+ *) AS_ECHO(["$0 internal error: unknown what ${what}"]) 1>&2 ; exit 1 ;;
esac
done
;;
- *) $as_echo "$0 internal error: unknown optype ${optype}" 1>&2 ; exit 1 ;;
+ *) AS_ECHO(["$0 internal error: unknown optype ${optype}"]) 1>&2 ; exit 1 ;;
esac
# perform the operation:
- $as_echo ""
- $as_echo " /* perform the operation: */"
- $as_echo_n " res = ${dst}${op}${src}"
+ AS_ECHO([""])
+ AS_ECHO([" /* perform the operation: */"])
+ AS_ECHO_N([" res = ${dst}${op}${src}"])
if $with_x; then
- $as_echo_n "${op}((ic->tme_m68k_ireg_ccr / TME_M68K_FLAG_X) & 1)"
+ AS_ECHO_N(["${op}((ic->tme_m68k_ireg_ccr / TME_M68K_FLAG_X) & 1)"])
fi
- $as_echo ";"
+ AS_ECHO([";"])
# store the result:
if $store_res; then
- $as_echo ""
- $as_echo " /* store the result: */"
+ AS_ECHO([""])
+ AS_ECHO([" /* store the result: */"])
case ${optype} in
mathx)
- $as_echo " if (memory) {"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo " ic->tme_m68k_ireg_memx${size} = res;"
- $as_echo " ic->_tme_m68k_ea_function_code = function_code;"
- $as_echo " ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_dst);"
- $as_echo " }"
- $as_echo " tme_m68k_write_memx${size}(ic);"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " ic->tme_m68k_ireg_uint${size}((TME_M68K_IREG_D0 + ireg_dst)${reg_size_shift}) = res;"
- $as_echo " }"
+ AS_ECHO([" if (memory) {"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_memx${size} = res;"])
+ AS_ECHO([" ic->_tme_m68k_ea_function_code = function_code;"])
+ AS_ECHO([" ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ireg_dst);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" tme_m68k_write_memx${size}(ic);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" ic->tme_m68k_ireg_uint${size}((TME_M68K_IREG_D0 + ireg_dst)${reg_size_shift}) = res;"])
+ AS_ECHO([" }"])
;;
normal)
- $as_echo " *((tme_uint${size}_t *) _${res}) = res;"
+ AS_ECHO([" *((tme_uint${size}_t *) _${res}) = res;"])
;;
- *) $as_echo "$0 internal error: unknown optype ${optype}" 1>&2 ; exit 1 ;;
+ *) AS_ECHO(["$0 internal error: unknown optype ${optype}"]) 1>&2 ; exit 1 ;;
esac
fi
# start the status flags, maybe preserving X:
- $as_echo ""
- $as_echo " /* set the flags: */"
+ AS_ECHO([""])
+ AS_ECHO([" /* set the flags: */"])
case "${name}:${arith}" in
cmp*|*:no)
flag_x=
@@ -279,13 +279,13 @@ for size in 8 16 32; do
# set N. we cast to tme_uint8_t as soon as we know the
# bit we want is within the range of the type, to try
# to affect the generated assembly:
- $as_echo " flags = ((tme_uint8_t) (((tme_uint${size}_t) res) >> (${size} - 1))) * TME_M68K_FLAG_N;"
+ AS_ECHO([" flags = ((tme_uint8_t) (((tme_uint${size}_t) res) >> (${size} - 1))) * TME_M68K_FLAG_N;"])
# set Z:
if $with_x; then
- $as_echo " if (res == 0) flags |= (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_Z);"
+ AS_ECHO([" if (res == 0) flags |= (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_Z);"])
else
- $as_echo " if (res == 0) flags |= TME_M68K_FLAG_Z;"
+ AS_ECHO([" if (res == 0) flags |= TME_M68K_FLAG_Z;"])
fi
# set V and C and maybe X:
@@ -300,13 +300,13 @@ for size in 8 16 32; do
# a different sign, set V. we cast to tme_uint8_t as
# soon as we know the bit we want is within the range
# of the type, to try to affect the generated assembly:
- $as_echo " flags |= ((tme_uint8_t) (((${src} ^ ${dst} ^ ${ones}) & (${dst} ^ res)) >> (${size} - 1))) * TME_M68K_FLAG_V;"
+ AS_ECHO([" flags |= ((tme_uint8_t) (((${src} ^ ${dst} ^ ${ones}) & (${dst} ^ res)) >> (${size} - 1))) * TME_M68K_FLAG_V;"])
# if src is greater than the logical inverse of dst, set C:
- $as_echo_n " if (${src} > (${dst} ^ ${ones})"
+ AS_ECHO_N([" if (${src} > (${dst} ^ ${ones})"])
if $with_x; then
- $as_echo_n " || (${src} == (${dst} ^ ${ones}) && (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_X))"
+ AS_ECHO_N([" || (${src} == (${dst} ^ ${ones}) && (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_X))"])
fi
- $as_echo ") flags |= TME_M68K_FLAG_C${flag_x};"
+ AS_ECHO([") flags |= TME_M68K_FLAG_C${flag_x};"])
;;
sub)
# if the operands are different signs, and the result has
@@ -314,29 +314,29 @@ for size in 8 16 32; do
# cast to tme_uint8_t as soon as we know the bit we want
# is within the range of the type, to try to affect the
# generated assembly:
- $as_echo " flags |= ((tme_uint8_t) (((${src} ^ ${dst}) & (${dst} ^ res)) >> (${size} - 1))) * TME_M68K_FLAG_V;"
+ AS_ECHO([" flags |= ((tme_uint8_t) (((${src} ^ ${dst}) & (${dst} ^ res)) >> (${size} - 1))) * TME_M68K_FLAG_V;"])
# if src is greater than dst, set C:
- $as_echo_n " if (${src} > ${dst}"
+ AS_ECHO_N([" if (${src} > ${dst}"])
if $with_x; then
- $as_echo_n " || (${src} == ${dst} && (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_X))"
+ AS_ECHO_N([" || (${src} == ${dst} && (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_X))"])
fi
- $as_echo ") flags |= TME_M68K_FLAG_C${flag_x};"
+ AS_ECHO([") flags |= TME_M68K_FLAG_C${flag_x};"])
;;
no) ;;
esac
# preserve X:
if test "x${flag_x}" = x; then
- $as_echo " flags |= (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_X);"
+ AS_ECHO([" flags |= (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_X);"])
fi
# set the flags:
- $as_echo " ic->tme_m68k_ireg_ccr = flags;"
+ AS_ECHO([" ic->tme_m68k_ireg_ccr = flags;"])
# done:
- $as_echo ""
- $as_echo " TME_M68K_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" TME_M68K_INSN_OK;"])
+ AS_ECHO(["}"])
if test $name = cmpa; then size=16; fi
done
@@ -351,31 +351,31 @@ for size in 8 16 32; do
# if we're making the header, just emit a declaration:
if $header; then
- $as_echo "TME_M68K_INSN_DECL(tme_m68k_move_sr${name}${size});"
+ AS_ECHO(["TME_M68K_INSN_DECL(tme_m68k_move_sr${name}${size});"])
continue
fi
- $as_echo ""
- $as_echo "/* a move of an address register to a predecrement or"
- $as_echo " postincrement EA with that same address register, must"
- $as_echo " store the original value of the address register. since the"
- $as_echo " predecrement and postincrement code in the executer updates"
- $as_echo " the address register before the move has happened, we wrap"
- $as_echo " the normal move function in this one, that gives an op1"
- $as_echo " argument that is the original value of the address register: */"
- $as_echo "TME_M68K_INSN(tme_m68k_move_sr${name}${size})"
- $as_echo "{"
+ AS_ECHO([""])
+ AS_ECHO(["/* a move of an address register to a predecrement or"])
+ AS_ECHO([" postincrement EA with that same address register, must"])
+ AS_ECHO([" store the original value of the address register. since the"])
+ AS_ECHO([" predecrement and postincrement code in the executer updates"])
+ AS_ECHO([" the address register before the move has happened, we wrap"])
+ AS_ECHO([" the normal move function in this one, that gives an op1"])
+ AS_ECHO([" argument that is the original value of the address register: */"])
+ AS_ECHO(["TME_M68K_INSN(tme_m68k_move_sr${name}${size})"])
+ AS_ECHO(["{"])
if test ${name} = pd; then op='+'; else op='-'; fi
- $as_echo " /* NB: both this function and tme_m68k_move${size}()"
- $as_echo " get the source operand as _op1, and the destination"
- $as_echo " operand as _op0: */"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo " *((tme_uint${size}_t *) _op0)"
- $as_echo " = (*((tme_uint${size}_t *) _op1)"
- $as_echo " ${op} sizeof(tme_uint${size}_t));"
- $as_echo " }"
- $as_echo " tme_m68k_move${size}(ic, _op0, _op0);"
- $as_echo "}"
+ AS_ECHO([" /* NB: both this function and tme_m68k_move${size}()"])
+ AS_ECHO([" get the source operand as _op1, and the destination"])
+ AS_ECHO([" operand as _op0: */"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([" *((tme_uint${size}_t *) _op0)"])
+ AS_ECHO([" = (*((tme_uint${size}_t *) _op1)"])
+ AS_ECHO([" ${op} sizeof(tme_uint${size}_t));"])
+ AS_ECHO([" }"])
+ AS_ECHO([" tme_m68k_move${size}(ic, _op0, _op0);"])
+ AS_ECHO(["}"])
done
# generate the address math functions:
@@ -386,22 +386,22 @@ for size in 8 16 32; do
# if we're making the header, just emit a declaration:
if $header; then
- $as_echo "TME_M68K_INSN_DECL(tme_m68k_${name}${size});"
+ AS_ECHO(["TME_M68K_INSN_DECL(tme_m68k_${name}${size});"])
continue
fi
- $as_echo ""
- $as_echo "/* the ${name} function on a ${size}-byte EA: */"
- $as_echo "TME_M68K_INSN(tme_m68k_${name}${size})"
- $as_echo "{"
+ AS_ECHO([""])
+ AS_ECHO(["/* the ${name} function on a ${size}-byte EA: */"])
+ AS_ECHO(["TME_M68K_INSN(tme_m68k_${name}${size})"])
+ AS_ECHO(["{"])
case $name in
suba) op='-' ; src="_op0" ; dst="_op1" ;;
adda) op='+' ; src="_op0" ; dst="_op1" ;;
movea) op='' ; src="_op1" ; dst="_op0" ;;
esac
- $as_echo " *((tme_int32_t *) ${dst}) ${op}= *((tme_int${size}_t *) ${src});"
- $as_echo " TME_M68K_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([" *((tme_int32_t *) ${dst}) ${op}= *((tme_int${size}_t *) ${src});"])
+ AS_ECHO([" TME_M68K_INSN_OK;"])
+ AS_ECHO(["}"])
done
# generate the bit functions:
@@ -412,31 +412,31 @@ for size in 8 16 32; do
# if we're making the header, just emit a declaration:
if $header; then
- $as_echo "TME_M68K_INSN_DECL(tme_m68k_${name}${size});"
+ AS_ECHO(["TME_M68K_INSN_DECL(tme_m68k_${name}${size});"])
continue
fi
- $as_echo ""
- $as_echo "/* the ${name} function on a ${size}-byte EA: */"
- $as_echo "TME_M68K_INSN(tme_m68k_${name}${size})"
- $as_echo "{"
- $as_echo " tme_uint${size}_t value, bit;"
- $as_echo " bit = _TME_BIT(tme_uint${size}_t, TME_M68K_INSN_OP0(tme_uint8_t) & (${size} - 1));"
- $as_echo " value = TME_M68K_INSN_OP1(tme_uint${size}_t);"
- $as_echo " if (value & bit) {"
- $as_echo " ic->tme_m68k_ireg_ccr &= ~TME_M68K_FLAG_Z;"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " ic->tme_m68k_ireg_ccr |= TME_M68K_FLAG_Z;"
- $as_echo " }"
+ AS_ECHO([""])
+ AS_ECHO(["/* the ${name} function on a ${size}-byte EA: */"])
+ AS_ECHO(["TME_M68K_INSN(tme_m68k_${name}${size})"])
+ AS_ECHO(["{"])
+ AS_ECHO([" tme_uint${size}_t value, bit;"])
+ AS_ECHO([" bit = _TME_BIT(tme_uint${size}_t, TME_M68K_INSN_OP0(tme_uint8_t) & (${size} - 1));"])
+ AS_ECHO([" value = TME_M68K_INSN_OP1(tme_uint${size}_t);"])
+ AS_ECHO([" if (value & bit) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_ccr &= ~TME_M68K_FLAG_Z;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" ic->tme_m68k_ireg_ccr |= TME_M68K_FLAG_Z;"])
+ AS_ECHO([" }"])
case ${name} in
btst) ;;
- bchg) $as_echo " TME_M68K_INSN_OP1(tme_uint${size}_t) = value ^ bit;" ;;
- bclr) $as_echo " TME_M68K_INSN_OP1(tme_uint${size}_t) = value & ~bit;" ;;
- bset) $as_echo " TME_M68K_INSN_OP1(tme_uint${size}_t) = value | bit;" ;;
+ bchg) AS_ECHO([" TME_M68K_INSN_OP1(tme_uint${size}_t) = value ^ bit;"]) ;;
+ bclr) AS_ECHO([" TME_M68K_INSN_OP1(tme_uint${size}_t) = value & ~bit;"]) ;;
+ bset) AS_ECHO([" TME_M68K_INSN_OP1(tme_uint${size}_t) = value | bit;"]) ;;
esac
- $as_echo " TME_M68K_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([" TME_M68K_INSN_OK;"])
+ AS_ECHO(["}"])
done
# generate the shift/rotate functions:
@@ -446,199 +446,199 @@ for size in 8 16 32; do
# if we're making the header, just emit a declaration:
if $header; then
- $as_echo "TME_M68K_INSN_DECL(tme_m68k_${name}${size});"
+ AS_ECHO(["TME_M68K_INSN_DECL(tme_m68k_${name}${size});"])
continue
fi
- $as_echo ""
- $as_echo "/* the ${name} function on a ${size}-byte EA: */"
- $as_echo "TME_M68K_INSN(tme_m68k_${name}${size})"
- $as_echo "{"
- $as_echo " unsigned int count;"
+ AS_ECHO([""])
+ AS_ECHO(["/* the ${name} function on a ${size}-byte EA: */"])
+ AS_ECHO(["TME_M68K_INSN(tme_m68k_${name}${size})"])
+ AS_ECHO(["{"])
+ AS_ECHO([" unsigned int count;"])
sign=u
case "${name}" in
asr) sign= ;;
- asl) $as_echo " tme_uint${size}_t sign_bits, sign_bits_mask;" ;;
- rox[[lr]]) $as_echo " tme_uint8_t xbit;" ;;
+ asl) AS_ECHO([" tme_uint${size}_t sign_bits, sign_bits_mask;"]) ;;
+ rox[[lr]]) AS_ECHO([" tme_uint8_t xbit;"]) ;;
*) ;;
esac
- $as_echo " tme_${sign}int${size}_t res;"
- $as_echo " tme_uint8_t flags;"
- $as_echo ""
- $as_echo " /* get the count and operand: */"
- $as_echo " count = TME_M68K_INSN_OP0(tme_uint8_t) & 63;"
- $as_echo " res = TME_M68K_INSN_OP1(tme_${sign}int${size}_t);"
-
- $as_echo ""
- $as_echo " /* generate the X, V, and C flags assuming the count is zero: */"
- $as_echo " flags = ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_X;"
+ AS_ECHO([" tme_${sign}int${size}_t res;"])
+ AS_ECHO([" tme_uint8_t flags;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the count and operand: */"])
+ AS_ECHO([" count = TME_M68K_INSN_OP0(tme_uint8_t) & 63;"])
+ AS_ECHO([" res = TME_M68K_INSN_OP1(tme_${sign}int${size}_t);"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* generate the X, V, and C flags assuming the count is zero: */"])
+ AS_ECHO([" flags = ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_X;"])
case "${name}" in
rox[[lr]])
- $as_echo " xbit = (flags / TME_M68K_FLAG_X);"
- $as_echo " flags |= (xbit * TME_M68K_FLAG_C);"
+ AS_ECHO([" xbit = (flags / TME_M68K_FLAG_X);"])
+ AS_ECHO([" flags |= (xbit * TME_M68K_FLAG_C);"])
;;
esac
- $as_echo ""
- $as_echo " /* if the count is nonzero, update the result and"
- $as_echo " generate the X, V, and C flags: */"
- $as_echo " if (count > 0) {"
+ AS_ECHO([""])
+ AS_ECHO([" /* if the count is nonzero, update the result and"])
+ AS_ECHO([" generate the X, V, and C flags: */"])
+ AS_ECHO([" if (count > 0) {"])
case "${name}" in
lsr)
- $as_echo " if (63 > SHIFTMAX_INT${size}_T"
- $as_echo " && count > ${size}) {"
- $as_echo " res = 0;"
- $as_echo " }"
- $as_echo " res >>= (count - 1);"
- $as_echo " flags = (res & 1);"
- $as_echo " flags *= TME_M68K_FLAG_C;"
- $as_echo " flags |= (flags * TME_M68K_FLAG_X);"
- $as_echo " res >>= 1;"
+ AS_ECHO([" if (63 > SHIFTMAX_INT${size}_T"])
+ AS_ECHO([" && count > ${size}) {"])
+ AS_ECHO([" res = 0;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" res >>= (count - 1);"])
+ AS_ECHO([" flags = (res & 1);"])
+ AS_ECHO([" flags *= TME_M68K_FLAG_C;"])
+ AS_ECHO([" flags |= (flags * TME_M68K_FLAG_X);"])
+ AS_ECHO([" res >>= 1;"])
;;
asr)
- $as_echo " if (63 > SHIFTMAX_INT${size}_T"
- $as_echo " && count > ${size}) {"
- $as_echo " res = 0 - (res < 0);"
- $as_echo " }"
- $as_echo "#ifdef SHIFTSIGNED_INT${size}_T"
- $as_echo " res >>= (count - 1);"
- $as_echo "#else /* !SHIFTSIGNED_INT${size}_T */"
- $as_echo " for (; --count > 0; ) {"
- $as_echo " res = (res & ~((tme_${sign}int${size}_t) 1)) / 2;"
- $as_echo " }"
- $as_echo "#endif /* !SHIFTSIGNED_INT${size}_T */"
- $as_echo " flags = (res & 1);"
- $as_echo " flags *= TME_M68K_FLAG_C;"
- $as_echo " flags |= (flags * TME_M68K_FLAG_X);"
- $as_echo "#ifdef SHIFTSIGNED_INT${size}_T"
- $as_echo " res >>= 1;"
- $as_echo "#else /* !SHIFTSIGNED_INT${size}_T */"
- $as_echo " res = (res & ~((tme_${sign}int${size}_t) 1)) / 2;"
- $as_echo "#endif /* !SHIFTSIGNED_INT${size}_T */"
+ AS_ECHO([" if (63 > SHIFTMAX_INT${size}_T"])
+ AS_ECHO([" && count > ${size}) {"])
+ AS_ECHO([" res = 0 - (res < 0);"])
+ AS_ECHO([" }"])
+ AS_ECHO(["#ifdef SHIFTSIGNED_INT${size}_T"])
+ AS_ECHO([" res >>= (count - 1);"])
+ AS_ECHO(["#else /* !SHIFTSIGNED_INT${size}_T */"])
+ AS_ECHO([" for (; --count > 0; ) {"])
+ AS_ECHO([" res = (res & ~((tme_${sign}int${size}_t) 1)) / 2;"])
+ AS_ECHO([" }"])
+ AS_ECHO(["#endif /* !SHIFTSIGNED_INT${size}_T */"])
+ AS_ECHO([" flags = (res & 1);"])
+ AS_ECHO([" flags *= TME_M68K_FLAG_C;"])
+ AS_ECHO([" flags |= (flags * TME_M68K_FLAG_X);"])
+ AS_ECHO(["#ifdef SHIFTSIGNED_INT${size}_T"])
+ AS_ECHO([" res >>= 1;"])
+ AS_ECHO(["#else /* !SHIFTSIGNED_INT${size}_T */"])
+ AS_ECHO([" res = (res & ~((tme_${sign}int${size}_t) 1)) / 2;"])
+ AS_ECHO(["#endif /* !SHIFTSIGNED_INT${size}_T */"])
;;
[[al]]sl)
if test ${name} = asl; then
- $as_echo ""
- $as_echo " /* we need to see how the sign of the result will change during"
- $as_echo " shifting in order to generate V."
- $as_echo ""
- $as_echo " in general, the idea is to get all of the bits that will ever"
- $as_echo " appear in the sign position into sign_bits, with a mask in"
- $as_echo " sign_bits_mask. if (sign_bits & sign_bits_mask) is zero or"
- $as_echo " sign_bits_mask, clear V, else set V."
- $as_echo ""
- $as_echo " start by loading the operand into sign_bits and setting"
- $as_echo " sign_bits_mask to all-bits-one."
- $as_echo ""
- $as_echo " if the shift count is exactly ${size} - 1, then all of the bits"
- $as_echo " of the operand will appear in the sign position."
- $as_echo ""
- $as_echo " if the shift count is less than ${size} - 1, then some of the"
- $as_echo " less significant bits of the operand will never appear in the"
- $as_echo " sign position, so we can shift sign_bits_mask to ignore them."
- $as_echo ""
- $as_echo " if the shift count is greater than ${size} - 1, then all of the"
- $as_echo " bits in the operand, plus at least one zero bit, will appear in"
- $as_echo " the sign position. the only way that the sign bit will never"
- $as_echo " change during the shift is if the operand was zero to begin with."
- $as_echo " without any changes to sign_bits or sign_bits_mask, the final"
- $as_echo " test will always work, except when sign_bits is all-bits-one."
- $as_echo " the magic below clears the least-significant bit of sign_bits"
- $as_echo " iff sign_bits is all-bits-one: */"
- $as_echo " sign_bits = res;"
+ AS_ECHO([""])
+ AS_ECHO([" /* we need to see how the sign of the result will change during"])
+ AS_ECHO([" shifting in order to generate V."])
+ AS_ECHO([""])
+ AS_ECHO([" in general, the idea is to get all of the bits that will ever"])
+ AS_ECHO([" appear in the sign position into sign_bits, with a mask in"])
+ AS_ECHO([" sign_bits_mask. if (sign_bits & sign_bits_mask) is zero or"])
+ AS_ECHO([" sign_bits_mask, clear V, else set V."])
+ AS_ECHO([""])
+ AS_ECHO([" start by loading the operand into sign_bits and setting"])
+ AS_ECHO([" sign_bits_mask to all-bits-one."])
+ AS_ECHO([""])
+ AS_ECHO([" if the shift count is exactly ${size} - 1, then all of the bits"])
+ AS_ECHO([" of the operand will appear in the sign position."])
+ AS_ECHO([""])
+ AS_ECHO([" if the shift count is less than ${size} - 1, then some of the"])
+ AS_ECHO([" less significant bits of the operand will never appear in the"])
+ AS_ECHO([" sign position, so we can shift sign_bits_mask to ignore them."])
+ AS_ECHO([""])
+ AS_ECHO([" if the shift count is greater than ${size} - 1, then all of the"])
+ AS_ECHO([" bits in the operand, plus at least one zero bit, will appear in"])
+ AS_ECHO([" the sign position. the only way that the sign bit will never"])
+ AS_ECHO([" change during the shift is if the operand was zero to begin with."])
+ AS_ECHO([" without any changes to sign_bits or sign_bits_mask, the final"])
+ AS_ECHO([" test will always work, except when sign_bits is all-bits-one."])
+ AS_ECHO([" the magic below clears the least-significant bit of sign_bits"])
+ AS_ECHO([" iff sign_bits is all-bits-one: */"])
+ AS_ECHO([" sign_bits = res;"])
fi
- $as_echo " if (63 > SHIFTMAX_INT${size}_T"
- $as_echo " && count > ${size}) {"
- $as_echo " res = 0;"
- $as_echo " }"
- $as_echo " res <<= (count - 1);"
- $as_echo " flags = (res >> (${size} - 1));"
- $as_echo " flags *= TME_M68K_FLAG_C;"
- $as_echo " flags |= (flags * TME_M68K_FLAG_X);"
- $as_echo " res <<= 1;"
+ AS_ECHO([" if (63 > SHIFTMAX_INT${size}_T"])
+ AS_ECHO([" && count > ${size}) {"])
+ AS_ECHO([" res = 0;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" res <<= (count - 1);"])
+ AS_ECHO([" flags = (res >> (${size} - 1));"])
+ AS_ECHO([" flags *= TME_M68K_FLAG_C;"])
+ AS_ECHO([" flags |= (flags * TME_M68K_FLAG_X);"])
+ AS_ECHO([" res <<= 1;"])
if test ${name} = asl; then
- $as_echo " sign_bits_mask = (tme_uint${size}_t) -1;"
- $as_echo " if (count != ${size} - 1) {"
- $as_echo " if (count < ${size}) {"
- $as_echo " sign_bits_mask <<= ((${size} - 1) - count);"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " sign_bits ^= !(sign_bits + 1);"
- $as_echo " }"
- $as_echo " }"
- $as_echo " sign_bits &= sign_bits_mask;"
- $as_echo " if (sign_bits != 0 && sign_bits != sign_bits_mask) {"
- $as_echo " flags |= TME_M68K_FLAG_V;"
- $as_echo " }"
+ AS_ECHO([" sign_bits_mask = (tme_uint${size}_t) -1;"])
+ AS_ECHO([" if (count != ${size} - 1) {"])
+ AS_ECHO([" if (count < ${size}) {"])
+ AS_ECHO([" sign_bits_mask <<= ((${size} - 1) - count);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" sign_bits ^= !(sign_bits + 1);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
+ AS_ECHO([" sign_bits &= sign_bits_mask;"])
+ AS_ECHO([" if (sign_bits != 0 && sign_bits != sign_bits_mask) {"])
+ AS_ECHO([" flags |= TME_M68K_FLAG_V;"])
+ AS_ECHO([" }"])
fi
;;
ro[[lr]])
- $as_echo " count &= (${size} - 1);"
+ AS_ECHO([" count &= (${size} - 1);"])
if test $dir = l; then
- $as_echo " res = (res << count) | (res >> (${size} - count));"
- $as_echo " flags |= ((res & 1) * TME_M68K_FLAG_C);"
+ AS_ECHO([" res = (res << count) | (res >> (${size} - count));"])
+ AS_ECHO([" flags |= ((res & 1) * TME_M68K_FLAG_C);"])
else
- $as_echo " res = (res << (${size} - count)) | (res >> count);"
- $as_echo " flags |= ((res >> (${size} - 1)) * TME_M68K_FLAG_C);"
+ AS_ECHO([" res = (res << (${size} - count)) | (res >> count);"])
+ AS_ECHO([" flags |= ((res >> (${size} - 1)) * TME_M68K_FLAG_C);"])
fi
;;
rox[[lr]])
- $as_echo " count %= (${size} + 1);"
- $as_echo " flags = xbit;"
- $as_echo " if (count > 0) {"
+ AS_ECHO([" count %= (${size} + 1);"])
+ AS_ECHO([" flags = xbit;"])
+ AS_ECHO([" if (count > 0) {"])
if test $dir = l; then
- $as_echo " flags = (res >> (${size} - count)) & 1;"
- $as_echo " if (${size} > SHIFTMAX_INT${size}_T"
- $as_echo " && count == ${size}) {"
- $as_echo " res = 0 | (xbit << (${size} - 1)) | (res >> ((${size} + 1) - ${size}));"
- $as_echo " }"
- $as_echo " else if (${size} > SHIFTMAX_INT${size}_T"
- $as_echo " && count == 1) {"
- $as_echo " res = (res << 1) | (xbit << (1 - 1)) | 0;"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " res = (res << count) | (xbit << (count - 1)) | (res >> ((${size} + 1) - count));"
- $as_echo " }"
+ AS_ECHO([" flags = (res >> (${size} - count)) & 1;"])
+ AS_ECHO([" if (${size} > SHIFTMAX_INT${size}_T"])
+ AS_ECHO([" && count == ${size}) {"])
+ AS_ECHO([" res = 0 | (xbit << (${size} - 1)) | (res >> ((${size} + 1) - ${size}));"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else if (${size} > SHIFTMAX_INT${size}_T"])
+ AS_ECHO([" && count == 1) {"])
+ AS_ECHO([" res = (res << 1) | (xbit << (1 - 1)) | 0;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" res = (res << count) | (xbit << (count - 1)) | (res >> ((${size} + 1) - count));"])
+ AS_ECHO([" }"])
else
- $as_echo " flags = (res >> (count - 1)) & 1;"
- $as_echo " if (${size} > SHIFTMAX_INT${size}_T"
- $as_echo " && count == ${size}) {"
- $as_echo " res = (res << ((${size} + 1) - ${size})) | (xbit << (${size} - ${size})) | 0;"
- $as_echo " }"
- $as_echo " else if (${size} > SHIFTMAX_INT${size}_T"
- $as_echo " && count == 1) {"
- $as_echo " res = 0 | (xbit << (${size} - 1)) | (res >> 1);"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " res = (res << ((${size} + 1) - count)) | (xbit << (${size} - count)) | (res >> count);"
- $as_echo " }"
+ AS_ECHO([" flags = (res >> (count - 1)) & 1;"])
+ AS_ECHO([" if (${size} > SHIFTMAX_INT${size}_T"])
+ AS_ECHO([" && count == ${size}) {"])
+ AS_ECHO([" res = (res << ((${size} + 1) - ${size})) | (xbit << (${size} - ${size})) | 0;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else if (${size} > SHIFTMAX_INT${size}_T"])
+ AS_ECHO([" && count == 1) {"])
+ AS_ECHO([" res = 0 | (xbit << (${size} - 1)) | (res >> 1);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" res = (res << ((${size} + 1) - count)) | (xbit << (${size} - count)) | (res >> count);"])
+ AS_ECHO([" }"])
fi
- $as_echo " }"
- $as_echo " flags *= TME_M68K_FLAG_C;"
- $as_echo " flags |= (flags * TME_M68K_FLAG_X);"
+ AS_ECHO([" }"])
+ AS_ECHO([" flags *= TME_M68K_FLAG_C;"])
+ AS_ECHO([" flags |= (flags * TME_M68K_FLAG_X);"])
;;
esac
- $as_echo " }"
+ AS_ECHO([" }"])
- $as_echo ""
- $as_echo " /* store the result: */"
- $as_echo " TME_M68K_INSN_OP1(tme_${sign}int${size}_t) = res;"
+ AS_ECHO([""])
+ AS_ECHO([" /* store the result: */"])
+ AS_ECHO([" TME_M68K_INSN_OP1(tme_${sign}int${size}_t) = res;"])
- $as_echo ""
- $as_echo " /* generate the N flag. we cast to tme_uint8_t as soon as we"
- $as_echo " know the bit we want is within the range of the type, to try"
- $as_echo " to affect the generated assembly: */"
- $as_echo " flags |= ((tme_uint8_t) (((tme_uint${size}_t) res) >> (${size} - 1))) * TME_M68K_FLAG_N;"
+ AS_ECHO([""])
+ AS_ECHO([" /* generate the N flag. we cast to tme_uint8_t as soon as we"])
+ AS_ECHO([" know the bit we want is within the range of the type, to try"])
+ AS_ECHO([" to affect the generated assembly: */"])
+ AS_ECHO([" flags |= ((tme_uint8_t) (((tme_uint${size}_t) res) >> (${size} - 1))) * TME_M68K_FLAG_N;"])
- $as_echo ""
- $as_echo " /* generate the Z flag: */"
- $as_echo " if (res == 0) flags |= TME_M68K_FLAG_Z;"
-
- $as_echo ""
- $as_echo " /* store the flags: */"
- $as_echo " ic->tme_m68k_ireg_ccr = flags;"
- $as_echo " TME_M68K_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" /* generate the Z flag: */"])
+ AS_ECHO([" if (res == 0) flags |= TME_M68K_FLAG_Z;"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* store the flags: */"])
+ AS_ECHO([" ic->tme_m68k_ireg_ccr = flags;"])
+ AS_ECHO([" TME_M68K_INSN_OK;"])
+ AS_ECHO(["}"])
done
done
@@ -650,33 +650,33 @@ for size in 8 16 32; do
# if we're making the header, just emit declarations:
if $header; then
- $as_echo "TME_M68K_INSN_DECL(tme_m68k_movep_${name}${size});"
- $as_echo "TME_M68K_INSN_DECL(tme_m68k_movem_${name}${size});"
+ AS_ECHO(["TME_M68K_INSN_DECL(tme_m68k_movep_${name}${size});"])
+ AS_ECHO(["TME_M68K_INSN_DECL(tme_m68k_movem_${name}${size});"])
continue
fi
# emit the movep function:
- $as_echo ""
- $as_echo "/* the movep_${name} function on a ${size}-bit dreg: */"
- $as_echo "TME_M68K_INSN(tme_m68k_movep_${name}${size})"
- $as_echo "{"
- $as_echo " unsigned int function_code;"
- $as_echo " tme_uint32_t linear_address;"
+ AS_ECHO([""])
+ AS_ECHO(["/* the movep_${name} function on a ${size}-bit dreg: */"])
+ AS_ECHO(["TME_M68K_INSN(tme_m68k_movep_${name}${size})"])
+ AS_ECHO(["{"])
+ AS_ECHO([" unsigned int function_code;"])
+ AS_ECHO([" tme_uint32_t linear_address;"])
if test $name = rm; then
- $as_echo " tme_uint${size}_t value;"
+ AS_ECHO([" tme_uint${size}_t value;"])
fi
- $as_echo " int dreg;"
- $as_echo ""
- $as_echo " TME_M68K_INSN_CANFAULT;"
- $as_echo ""
- $as_echo " function_code = TME_M68K_FUNCTION_CODE_DATA(ic);"
- $as_echo " linear_address = TME_M68K_INSN_OP1(tme_uint32_t);"
- $as_echo " linear_address += (tme_int32_t) ((tme_int16_t) TME_M68K_INSN_SPECOP);"
- $as_echo " dreg = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 9, 3);"
+ AS_ECHO([" int dreg;"])
+ AS_ECHO([""])
+ AS_ECHO([" TME_M68K_INSN_CANFAULT;"])
+ AS_ECHO([""])
+ AS_ECHO([" function_code = TME_M68K_FUNCTION_CODE_DATA(ic);"])
+ AS_ECHO([" linear_address = TME_M68K_INSN_OP1(tme_uint32_t);"])
+ AS_ECHO([" linear_address += (tme_int32_t) ((tme_int16_t) TME_M68K_INSN_SPECOP);"])
+ AS_ECHO([" dreg = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 9, 3);"])
# set value:
if test $name = rm; then
- $as_echo " value = ic->tme_m68k_ireg_uint${size}(dreg${reg_size_shift});"
+ AS_ECHO([" value = ic->tme_m68k_ireg_uint${size}(dreg${reg_size_shift});"])
value="value"
else
value="ic->tme_m68k_ireg_uint${size}(dreg${reg_size_shift})"
@@ -686,132 +686,132 @@ for size in 8 16 32; do
pos=${size}
while test $pos != 0; do
pos=`expr ${pos} - 8`
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo " ic->_tme_m68k_ea_function_code = function_code;"
- $as_echo " ic->_tme_m68k_ea_address = linear_address;"
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([" ic->_tme_m68k_ea_function_code = function_code;"])
+ AS_ECHO([" ic->_tme_m68k_ea_address = linear_address;"])
if test $name = rm; then
- $as_echo " ic->tme_m68k_ireg_memx8 = TME_FIELD_EXTRACTU(${value}, ${pos}, 8);"
- $as_echo " }"
- $as_echo " tme_m68k_write_memx8(ic);"
+ AS_ECHO([" ic->tme_m68k_ireg_memx8 = TME_FIELD_EXTRACTU(${value}, ${pos}, 8);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" tme_m68k_write_memx8(ic);"])
else
- $as_echo " }"
- $as_echo " tme_m68k_read_memx8(ic);"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo " TME_FIELD_DEPOSIT${size}(${value}, ${pos}, 8, ic->tme_m68k_ireg_memx8);"
- $as_echo " }"
+ AS_ECHO([" }"])
+ AS_ECHO([" tme_m68k_read_memx8(ic);"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([" TME_FIELD_DEPOSIT${size}(${value}, ${pos}, 8, ic->tme_m68k_ireg_memx8);"])
+ AS_ECHO([" }"])
fi
- $as_echo " linear_address += 2;"
+ AS_ECHO([" linear_address += 2;"])
done
- $as_echo " TME_M68K_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([" TME_M68K_INSN_OK;"])
+ AS_ECHO(["}"])
# emit the movem function:
- $as_echo ""
- $as_echo "/* the movem_${name} function on ${size}-bit registers: */"
- $as_echo "TME_M68K_INSN(tme_m68k_movem_${name}${size})"
- $as_echo "{"
- $as_echo " int ireg, direction;"
- $as_echo " tme_uint16_t mask, bit;"
- $as_echo " unsigned int ea_mode;"
- $as_echo " tme_uint32_t addend;"
- $as_echo " tme_uint32_t total_size;"
-
- $as_echo " /* get the register mask, and figure out the total size"
- $as_echo " of the transfer: */"
- $as_echo " mask = TME_M68K_INSN_SPECOP;"
- $as_echo " total_size = 0;"
- $as_echo " if (mask != 0) {"
- $as_echo " TME_M68K_INSN_CANFAULT;"
- $as_echo " bit = mask;"
- $as_echo " do {"
- $as_echo " total_size += sizeof(tme_uint${size}_t);"
- $as_echo " bit &= (bit - 1);"
- $as_echo " } while (bit != 0);"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* figure out what direction to move in, and where to start from: */"
- $as_echo " ea_mode = TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 3, 3);"
- $as_echo " direction = 1;"
- $as_echo " ireg = TME_M68K_IREG_D0;"
+ AS_ECHO([""])
+ AS_ECHO(["/* the movem_${name} function on ${size}-bit registers: */"])
+ AS_ECHO(["TME_M68K_INSN(tme_m68k_movem_${name}${size})"])
+ AS_ECHO(["{"])
+ AS_ECHO([" int ireg, direction;"])
+ AS_ECHO([" tme_uint16_t mask, bit;"])
+ AS_ECHO([" unsigned int ea_mode;"])
+ AS_ECHO([" tme_uint32_t addend;"])
+ AS_ECHO([" tme_uint32_t total_size;"])
+
+ AS_ECHO([" /* get the register mask, and figure out the total size"])
+ AS_ECHO([" of the transfer: */"])
+ AS_ECHO([" mask = TME_M68K_INSN_SPECOP;"])
+ AS_ECHO([" total_size = 0;"])
+ AS_ECHO([" if (mask != 0) {"])
+ AS_ECHO([" TME_M68K_INSN_CANFAULT;"])
+ AS_ECHO([" bit = mask;"])
+ AS_ECHO([" do {"])
+ AS_ECHO([" total_size += sizeof(tme_uint${size}_t);"])
+ AS_ECHO([" bit &= (bit - 1);"])
+ AS_ECHO([" } while (bit != 0);"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* figure out what direction to move in, and where to start from: */"])
+ AS_ECHO([" ea_mode = TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 3, 3);"])
+ AS_ECHO([" direction = 1;"])
+ AS_ECHO([" ireg = TME_M68K_IREG_D0;"])
if test $name = rm; then
- $as_echo " if (ea_mode == 4) {"
- $as_echo " direction = -1;"
- $as_echo " ireg = TME_M68K_IREG_A7;"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo ""
- $as_echo " /* \"For the MC68020, MC68030, MC68040, and CPU32, if"
- $as_echo " the addressing register is also moved to memory, the"
- $as_echo " value written is the initial register value decremented "
- $as_echo " by the size of the operation. The MC68000 and MC68010 "
- $as_echo " write the initial register value (not decremented).\" */"
- $as_echo " if (ic->tme_m68k_type >= TME_M68K_M68020) {"
- $as_echo " ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0"
- $as_echo " + TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 0, 3))"
- $as_echo " = (ic->_tme_m68k_ea_address - total_size);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* predecrement the effective address for the first transfer: */"
- $as_echo " ic->_tme_m68k_ea_address -= sizeof(tme_uint${size}_t);"
- $as_echo " }"
- $as_echo " }"
+ AS_ECHO([" if (ea_mode == 4) {"])
+ AS_ECHO([" direction = -1;"])
+ AS_ECHO([" ireg = TME_M68K_IREG_A7;"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* \"For the MC68020, MC68030, MC68040, and CPU32, if"])
+ AS_ECHO([" the addressing register is also moved to memory, the"])
+ AS_ECHO([" value written is the initial register value decremented "])
+ AS_ECHO([" by the size of the operation. The MC68000 and MC68010 "])
+ AS_ECHO([" write the initial register value (not decremented).\" */"])
+ AS_ECHO([" if (ic->tme_m68k_type >= TME_M68K_M68020) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0"])
+ AS_ECHO([" + TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 0, 3))"])
+ AS_ECHO([" = (ic->_tme_m68k_ea_address - total_size);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* predecrement the effective address for the first transfer: */"])
+ AS_ECHO([" ic->_tme_m68k_ea_address -= sizeof(tme_uint${size}_t);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
fi
- $as_echo " addend = (tme_uint32_t) (direction * sizeof(tme_uint${size}_t));"
+ AS_ECHO([" addend = (tme_uint32_t) (direction * sizeof(tme_uint${size}_t));"])
- $as_echo ""
- $as_echo " /* do the transfer: */"
- $as_echo " for (bit = 1; bit != 0; bit <<= 1) {"
- $as_echo " if (mask & bit) {"
+ AS_ECHO([""])
+ AS_ECHO([" /* do the transfer: */"])
+ AS_ECHO([" for (bit = 1; bit != 0; bit <<= 1) {"])
+ AS_ECHO([" if (mask & bit) {"])
if test $name = rm; then
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo " ic->tme_m68k_ireg_memx${size} = ic->tme_m68k_ireg_uint${size}(ireg${reg_size_shift});"
- $as_echo " }"
- $as_echo " tme_m68k_write_memx${size}(ic);"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_memx${size} = ic->tme_m68k_ireg_uint${size}(ireg${reg_size_shift});"])
+ AS_ECHO([" }"])
+ AS_ECHO([" tme_m68k_write_memx${size}(ic);"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
else
- $as_echo " tme_m68k_read_memx${size}(ic);"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo_n " ic->tme_m68k_ireg_uint32(ireg) = "
+ AS_ECHO([" tme_m68k_read_memx${size}(ic);"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO_N([" ic->tme_m68k_ireg_uint32(ireg) = "])
if test $size = 32; then
- $as_echo "ic->tme_m68k_ireg_memx${size};"
+ AS_ECHO(["ic->tme_m68k_ireg_memx${size};"])
else
- $as_echo "TME_EXT_S${size}_U32((tme_int${size}_t) ic->tme_m68k_ireg_memx${size});"
+ AS_ECHO(["TME_EXT_S${size}_U32((tme_int${size}_t) ic->tme_m68k_ireg_memx${size});"])
fi
fi
- $as_echo " ic->_tme_m68k_ea_address += addend;"
- $as_echo " }"
- $as_echo " }"
- $as_echo " ireg += direction;"
- $as_echo " }"
- $as_echo ""
+ AS_ECHO([" ic->_tme_m68k_ea_address += addend;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
+ AS_ECHO([" ireg += direction;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
# for the predecrement and postincrement modes, update the
# address register:
if test $name = rm; then
- $as_echo " /* if this is the predecrement mode, update the address register: */"
- $as_echo " /* \"For the MC68020, MC68030, MC68040, and CPU32, if"
- $as_echo " the addressing register is also moved to memory, the"
- $as_echo " value written is the initial register value decremented "
- $as_echo " by the size of the operation. The MC68000 and MC68010 "
- $as_echo " write the initial register value (not decremented).\" */"
- $as_echo " if (ea_mode == 4"
- $as_echo " && ic->tme_m68k_type < TME_M68K_M68020) {"
- $as_echo " ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0"
- $as_echo " + TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 0, 3))"
- $as_echo " = (ic->_tme_m68k_ea_address + sizeof(tme_uint${size}_t));"
- $as_echo " }"
+ AS_ECHO([" /* if this is the predecrement mode, update the address register: */"])
+ AS_ECHO([" /* \"For the MC68020, MC68030, MC68040, and CPU32, if"])
+ AS_ECHO([" the addressing register is also moved to memory, the"])
+ AS_ECHO([" value written is the initial register value decremented "])
+ AS_ECHO([" by the size of the operation. The MC68000 and MC68010 "])
+ AS_ECHO([" write the initial register value (not decremented).\" */"])
+ AS_ECHO([" if (ea_mode == 4"])
+ AS_ECHO([" && ic->tme_m68k_type < TME_M68K_M68020) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0"])
+ AS_ECHO([" + TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 0, 3))"])
+ AS_ECHO([" = (ic->_tme_m68k_ea_address + sizeof(tme_uint${size}_t));"])
+ AS_ECHO([" }"])
else
- $as_echo " /* if this is the postincrement mode, update the address register: */"
- $as_echo " if (ea_mode == 3) {"
- $as_echo " ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0"
- $as_echo " + TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 0, 3))"
- $as_echo " = ic->_tme_m68k_ea_address;"
- $as_echo " }"
+ AS_ECHO([" /* if this is the postincrement mode, update the address register: */"])
+ AS_ECHO([" if (ea_mode == 3) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0"])
+ AS_ECHO([" + TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 0, 3))"])
+ AS_ECHO([" = ic->_tme_m68k_ea_address;"])
+ AS_ECHO([" }"])
fi
- $as_echo " TME_M68K_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([" TME_M68K_INSN_OK;"])
+ AS_ECHO(["}"])
done
# chk32 and chk16:
@@ -819,116 +819,116 @@ for size in 8 16 32; do
# if we're making the header, just emit a declaration:
if $header; then
- $as_echo "TME_M68K_INSN_DECL(tme_m68k_chk${size});"
+ AS_ECHO(["TME_M68K_INSN_DECL(tme_m68k_chk${size});"])
else
- $as_echo ""
- $as_echo "/* chk${size}: */"
- $as_echo "TME_M68K_INSN(tme_m68k_chk${size})"
- $as_echo "{"
- $as_echo " if (*((tme_int${size}_t *) _op0) < 0) {"
- $as_echo " ic->tme_m68k_ireg_ccr |= TME_M68K_FLAG_N;"
- $as_echo " ic->tme_m68k_ireg_pc_last = ic->tme_m68k_ireg_pc;"
- $as_echo " ic->tme_m68k_ireg_pc = ic->tme_m68k_ireg_pc_next;"
- $as_echo " TME_M68K_INSN_EXCEPTION(TME_M68K_EXCEPTION_INST(TME_M68K_VECTOR_CHK));"
- $as_echo " }"
- $as_echo " if (*((tme_int${size}_t *) _op0) > *((tme_int${size}_t *) _op1)) {"
- $as_echo " ic->tme_m68k_ireg_ccr &= ~TME_M68K_FLAG_N;"
- $as_echo " ic->tme_m68k_ireg_pc_last = ic->tme_m68k_ireg_pc;"
- $as_echo " ic->tme_m68k_ireg_pc = ic->tme_m68k_ireg_pc_next;"
- $as_echo " TME_M68K_INSN_EXCEPTION(TME_M68K_EXCEPTION_INST(TME_M68K_VECTOR_CHK));"
- $as_echo " }"
- $as_echo " TME_M68K_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO(["/* chk${size}: */"])
+ AS_ECHO(["TME_M68K_INSN(tme_m68k_chk${size})"])
+ AS_ECHO(["{"])
+ AS_ECHO([" if (*((tme_int${size}_t *) _op0) < 0) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_ccr |= TME_M68K_FLAG_N;"])
+ AS_ECHO([" ic->tme_m68k_ireg_pc_last = ic->tme_m68k_ireg_pc;"])
+ AS_ECHO([" ic->tme_m68k_ireg_pc = ic->tme_m68k_ireg_pc_next;"])
+ AS_ECHO([" TME_M68K_INSN_EXCEPTION(TME_M68K_EXCEPTION_INST(TME_M68K_VECTOR_CHK));"])
+ AS_ECHO([" }"])
+ AS_ECHO([" if (*((tme_int${size}_t *) _op0) > *((tme_int${size}_t *) _op1)) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_ccr &= ~TME_M68K_FLAG_N;"])
+ AS_ECHO([" ic->tme_m68k_ireg_pc_last = ic->tme_m68k_ireg_pc;"])
+ AS_ECHO([" ic->tme_m68k_ireg_pc = ic->tme_m68k_ireg_pc_next;"])
+ AS_ECHO([" TME_M68K_INSN_EXCEPTION(TME_M68K_EXCEPTION_INST(TME_M68K_VECTOR_CHK));"])
+ AS_ECHO([" }"])
+ AS_ECHO([" TME_M68K_INSN_OK;"])
+ AS_ECHO(["}"])
fi
fi
# cas:
name=cas
if $header; then
- $as_echo "TME_M68K_INSN_DECL(tme_m68k_${name}${size});"
+ AS_ECHO(["TME_M68K_INSN_DECL(tme_m68k_${name}${size});"])
else
- $as_echo ""
- $as_echo "/* ${name}${size}: */"
- $as_echo "TME_M68K_INSN(tme_m68k_${name}${size})"
- $as_echo "{"
- $as_echo " struct tme_m68k_rmw rmw;"
- $as_echo " struct tme_m68k_tlb *tlb;"
- $as_echo " int ireg_dc, ireg_du;"
- $as_echo " tme_uint${size}_t value_dc, value_du, value_mem;"
- $as_echo ""
- $as_echo " /* start the read/modify/write cycle: */"
- $as_echo " rmw.tme_m68k_rmw_addresses[[0]] = ic->_tme_m68k_ea_address;"
- $as_echo " rmw.tme_m68k_rmw_address_count = 1;"
- $as_echo " rmw.tme_m68k_rmw_size = sizeof(tme_uint${size}_t);"
- $as_echo " if (tme_m68k_rmw_start(ic,"
- $as_echo " &rmw)) {"
- $as_echo " TME_M68K_INSN_OK;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* get the compare and update registers: */"
- $as_echo " ireg_dc = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(TME_M68K_INSN_SPECOP, 0, 3);"
- $as_echo " ireg_du = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(TME_M68K_INSN_SPECOP, 6, 3);"
- $as_echo ""
- $as_echo " /* if we can do the fast compare-and-exchange: */"
- $as_echo " if (!rmw.tme_m68k_rmw_slow_reads[[0]]) {"
- $as_echo ""
- $as_echo " /* get the compare and update values in big-endian byte order: */"
- $as_echo " value_dc = ic->tme_m68k_ireg_uint${size}(ireg_dc${reg_size_shift});"
- $as_echo " value_du = ic->tme_m68k_ireg_uint${size}(ireg_du${reg_size_shift});"
+ AS_ECHO([""])
+ AS_ECHO(["/* ${name}${size}: */"])
+ AS_ECHO(["TME_M68K_INSN(tme_m68k_${name}${size})"])
+ AS_ECHO(["{"])
+ AS_ECHO([" struct tme_m68k_rmw rmw;"])
+ AS_ECHO([" struct tme_m68k_tlb *tlb;"])
+ AS_ECHO([" int ireg_dc, ireg_du;"])
+ AS_ECHO([" tme_uint${size}_t value_dc, value_du, value_mem;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* start the read/modify/write cycle: */"])
+ AS_ECHO([" rmw.tme_m68k_rmw_addresses[[0]] = ic->_tme_m68k_ea_address;"])
+ AS_ECHO([" rmw.tme_m68k_rmw_address_count = 1;"])
+ AS_ECHO([" rmw.tme_m68k_rmw_size = sizeof(tme_uint${size}_t);"])
+ AS_ECHO([" if (tme_m68k_rmw_start(ic,"])
+ AS_ECHO([" &rmw)) {"])
+ AS_ECHO([" TME_M68K_INSN_OK;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the compare and update registers: */"])
+ AS_ECHO([" ireg_dc = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(TME_M68K_INSN_SPECOP, 0, 3);"])
+ AS_ECHO([" ireg_du = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(TME_M68K_INSN_SPECOP, 6, 3);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if we can do the fast compare-and-exchange: */"])
+ AS_ECHO([" if (!rmw.tme_m68k_rmw_slow_reads[[0]]) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the compare and update values in big-endian byte order: */"])
+ AS_ECHO([" value_dc = ic->tme_m68k_ireg_uint${size}(ireg_dc${reg_size_shift});"])
+ AS_ECHO([" value_du = ic->tme_m68k_ireg_uint${size}(ireg_du${reg_size_shift});"])
if test ${size} != 8; then
- $as_echo " value_dc = tme_htobe_u${size}(value_dc);"
- $as_echo " value_du = tme_htobe_u${size}(value_du);"
+ AS_ECHO([" value_dc = tme_htobe_u${size}(value_dc);"])
+ AS_ECHO([" value_du = tme_htobe_u${size}(value_du);"])
fi
- $as_echo ""
- $as_echo " /* get this TLB entry: */"
- $as_echo " tlb = rmw.tme_m68k_rmw_tlbs[[0]];"
- $as_echo ""
- $as_echo " /* this TLB entry must allow fast reading and fast writing"
- $as_echo " to the same memory: */"
- $as_echo " assert (tlb->tme_m68k_tlb_emulator_off_read != TME_EMULATOR_OFF_UNDEF"
- $as_echo " && tlb->tme_m68k_tlb_emulator_off_write == tlb->tme_m68k_tlb_emulator_off_read);"
- $as_echo ""
- $as_echo " /* do the compare-and-exchange: */"
- $as_echo " value_mem ="
- $as_echo " tme_memory_atomic_cx${size}(((tme_shared tme_uint${size}_t *)"
- $as_echo " (tlb->tme_m68k_tlb_emulator_off_read"
- $as_echo " + ic->_tme_m68k_ea_address)),"
- $as_echo " value_dc,"
- $as_echo " value_du,"
- $as_echo " tlb->tme_m68k_tlb_bus_rwlock,"
- $as_echo " sizeof(tme_uint8_t));"
- $as_echo_n " ic->tme_m68k_ireg_memx${size} = "
- if test ${size} != 8; then $as_echo_n "tme_betoh_u${size}"; fi
- $as_echo "(value_mem);"
- $as_echo ""
- $as_echo " /* step the transfer count once for the read, and once for the write: */"
- $as_echo " TME_M68K_SEQUENCE_TRANSFER_STEP;"
- $as_echo " TME_M68K_SEQUENCE_TRANSFER_STEP;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* compare the compare operand to the effective address operand: */"
- $as_echo " tme_m68k_cmp${size}(ic, &ic->tme_m68k_ireg_uint${size}(ireg_dc${reg_size_shift}), &ic->tme_m68k_ireg_memx${size});"
- $as_echo ""
- $as_echo " /* if the comparison succeeded: */"
- $as_echo " if (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_Z) {"
- $as_echo ""
- $as_echo " /* write the update operand to the effective address operand: */"
- $as_echo " ic->tme_m68k_ireg_memx${size} = ic->tme_m68k_ireg_uint${size}(ireg_du${reg_size_shift});"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, the comparison failed: */"
- $as_echo " else {"
- $as_echo ""
- $as_echo " /* write the effective address operand to the compare operand: */"
- $as_echo " ic->tme_m68k_ireg_uint${size}(ireg_dc${reg_size_shift}) = ic->tme_m68k_ireg_memx${size};"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* finish the read/modify/write cycle: */"
- $as_echo " tme_m68k_rmw_finish(ic,"
- $as_echo " &rmw,"
- $as_echo " (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_Z) != 0);"
- $as_echo " TME_M68K_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" /* get this TLB entry: */"])
+ AS_ECHO([" tlb = rmw.tme_m68k_rmw_tlbs[[0]];"])
+ AS_ECHO([""])
+ AS_ECHO([" /* this TLB entry must allow fast reading and fast writing"])
+ AS_ECHO([" to the same memory: */"])
+ AS_ECHO([" assert (tlb->tme_m68k_tlb_emulator_off_read != TME_EMULATOR_OFF_UNDEF"])
+ AS_ECHO([" && tlb->tme_m68k_tlb_emulator_off_write == tlb->tme_m68k_tlb_emulator_off_read);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do the compare-and-exchange: */"])
+ AS_ECHO([" value_mem ="])
+ AS_ECHO([" tme_memory_atomic_cx${size}(((tme_shared tme_uint${size}_t *)"])
+ AS_ECHO([" (tlb->tme_m68k_tlb_emulator_off_read"])
+ AS_ECHO([" + ic->_tme_m68k_ea_address)),"])
+ AS_ECHO([" value_dc,"])
+ AS_ECHO([" value_du,"])
+ AS_ECHO([" tlb->tme_m68k_tlb_bus_rwlock,"])
+ AS_ECHO([" sizeof(tme_uint8_t));"])
+ AS_ECHO_N([" ic->tme_m68k_ireg_memx${size} = "])
+ if test ${size} != 8; then AS_ECHO_N(["tme_betoh_u${size}"]); fi
+ AS_ECHO(["(value_mem);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* step the transfer count once for the read, and once for the write: */"])
+ AS_ECHO([" TME_M68K_SEQUENCE_TRANSFER_STEP;"])
+ AS_ECHO([" TME_M68K_SEQUENCE_TRANSFER_STEP;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* compare the compare operand to the effective address operand: */"])
+ AS_ECHO([" tme_m68k_cmp${size}(ic, &ic->tme_m68k_ireg_uint${size}(ireg_dc${reg_size_shift}), &ic->tme_m68k_ireg_memx${size});"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the comparison succeeded: */"])
+ AS_ECHO([" if (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_Z) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* write the update operand to the effective address operand: */"])
+ AS_ECHO([" ic->tme_m68k_ireg_memx${size} = ic->tme_m68k_ireg_uint${size}(ireg_du${reg_size_shift});"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, the comparison failed: */"])
+ AS_ECHO([" else {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* write the effective address operand to the compare operand: */"])
+ AS_ECHO([" ic->tme_m68k_ireg_uint${size}(ireg_dc${reg_size_shift}) = ic->tme_m68k_ireg_memx${size};"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* finish the read/modify/write cycle: */"])
+ AS_ECHO([" tme_m68k_rmw_finish(ic,"])
+ AS_ECHO([" &rmw,"])
+ AS_ECHO([" (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_Z) != 0);"])
+ AS_ECHO([" TME_M68K_INSN_OK;"])
+ AS_ECHO(["}"])
fi
# cas2:
@@ -936,131 +936,131 @@ for size in 8 16 32; do
if test $size != 8; then
if $header; then
- $as_echo "TME_M68K_INSN_DECL(tme_m68k_${name}${size});"
+ AS_ECHO(["TME_M68K_INSN_DECL(tme_m68k_${name}${size});"])
else
- $as_echo ""
- $as_echo "/* ${name}${size}: */"
- $as_echo "TME_M68K_INSN(tme_m68k_${name}${size})"
- $as_echo "{"
- $as_echo " struct tme_m68k_rmw rmw;"
- $as_echo " int ireg_dcx, ireg_dux;"
- $as_echo " int ireg_dcy, ireg_duy;"
- $as_echo " const tme_uint16_t specopx = TME_M68K_INSN_SPECOP;"
- $as_echo " const tme_uint16_t specopy = TME_M68K_INSN_OP0(tme_uint16_t);"
- $as_echo ""
- $as_echo " /* start the read/modify/write cycle: */"
- $as_echo " ic->_tme_m68k_ea_function_code = TME_M68K_FUNCTION_CODE_DATA(ic);"
- $as_echo " rmw.tme_m68k_rmw_addresses[[0]] = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_D0"
- $as_echo " + TME_FIELD_EXTRACTU(specopx, 12, 4));"
- $as_echo " rmw.tme_m68k_rmw_addresses[[1]] = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_D0"
- $as_echo " + TME_FIELD_EXTRACTU(specopy, 12, 4));"
- $as_echo " rmw.tme_m68k_rmw_address_count = 2;"
- $as_echo " rmw.tme_m68k_rmw_size = sizeof(tme_uint${size}_t);"
- $as_echo " if (tme_m68k_rmw_start(ic,"
- $as_echo " &rmw)) {"
- $as_echo " TME_M68K_INSN_OK;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* do the comparisons: */"
- $as_echo " ireg_dcx = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(specopx, 0, 3);"
- $as_echo " ireg_dcy = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(specopy, 0, 3);"
- $as_echo " tme_m68k_cmp${size}(ic,"
- $as_echo " &ic->tme_m68k_ireg_uint${size}(ireg_dcx${reg_size_shift}),"
- $as_echo " &ic->tme_m68k_ireg_memx${size});"
- $as_echo " if (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_Z) {"
- $as_echo " tme_m68k_cmp${size}(ic,"
- $as_echo " &ic->tme_m68k_ireg_uint${size}(ireg_dcy${reg_size_shift}),"
- $as_echo " &ic->tme_m68k_ireg_memy${size});"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* if the comparisons succeeded: */"
- $as_echo " if (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_Z) {"
- $as_echo ""
- $as_echo " /* write the update operands to the effective address operands: */"
- $as_echo " ireg_dux = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(specopx, 6, 3);"
- $as_echo " ireg_duy = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(specopy, 6, 3);"
- $as_echo " ic->tme_m68k_ireg_memx${size} = ic->tme_m68k_ireg_uint${size}(ireg_dux${reg_size_shift});"
- $as_echo " ic->tme_m68k_ireg_memy${size} = ic->tme_m68k_ireg_uint${size}(ireg_duy${reg_size_shift});"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, the comparisons failed: */"
- $as_echo " else {"
- $as_echo ""
- $as_echo " /* write the effective address operands to the compare operands."
- $as_echo " \"If Dc1 and Dc2 specify the same data register and the comparison"
- $as_echo " fails, memory operand 1 is stored in the data register.\" */"
- $as_echo " ic->tme_m68k_ireg_uint${size}(ireg_dcy${reg_size_shift}) = ic->tme_m68k_ireg_memy${size};"
- $as_echo " ic->tme_m68k_ireg_uint${size}(ireg_dcx${reg_size_shift}) = ic->tme_m68k_ireg_memx${size};"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* finish the read/modify/write cycle: */"
- $as_echo " tme_m68k_rmw_finish(ic,"
- $as_echo " &rmw,"
- $as_echo " (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_Z) != 0);"
- $as_echo " TME_M68K_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO(["/* ${name}${size}: */"])
+ AS_ECHO(["TME_M68K_INSN(tme_m68k_${name}${size})"])
+ AS_ECHO(["{"])
+ AS_ECHO([" struct tme_m68k_rmw rmw;"])
+ AS_ECHO([" int ireg_dcx, ireg_dux;"])
+ AS_ECHO([" int ireg_dcy, ireg_duy;"])
+ AS_ECHO([" const tme_uint16_t specopx = TME_M68K_INSN_SPECOP;"])
+ AS_ECHO([" const tme_uint16_t specopy = TME_M68K_INSN_OP0(tme_uint16_t);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* start the read/modify/write cycle: */"])
+ AS_ECHO([" ic->_tme_m68k_ea_function_code = TME_M68K_FUNCTION_CODE_DATA(ic);"])
+ AS_ECHO([" rmw.tme_m68k_rmw_addresses[[0]] = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_D0"])
+ AS_ECHO([" + TME_FIELD_EXTRACTU(specopx, 12, 4));"])
+ AS_ECHO([" rmw.tme_m68k_rmw_addresses[[1]] = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_D0"])
+ AS_ECHO([" + TME_FIELD_EXTRACTU(specopy, 12, 4));"])
+ AS_ECHO([" rmw.tme_m68k_rmw_address_count = 2;"])
+ AS_ECHO([" rmw.tme_m68k_rmw_size = sizeof(tme_uint${size}_t);"])
+ AS_ECHO([" if (tme_m68k_rmw_start(ic,"])
+ AS_ECHO([" &rmw)) {"])
+ AS_ECHO([" TME_M68K_INSN_OK;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do the comparisons: */"])
+ AS_ECHO([" ireg_dcx = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(specopx, 0, 3);"])
+ AS_ECHO([" ireg_dcy = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(specopy, 0, 3);"])
+ AS_ECHO([" tme_m68k_cmp${size}(ic,"])
+ AS_ECHO([" &ic->tme_m68k_ireg_uint${size}(ireg_dcx${reg_size_shift}),"])
+ AS_ECHO([" &ic->tme_m68k_ireg_memx${size});"])
+ AS_ECHO([" if (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_Z) {"])
+ AS_ECHO([" tme_m68k_cmp${size}(ic,"])
+ AS_ECHO([" &ic->tme_m68k_ireg_uint${size}(ireg_dcy${reg_size_shift}),"])
+ AS_ECHO([" &ic->tme_m68k_ireg_memy${size});"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the comparisons succeeded: */"])
+ AS_ECHO([" if (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_Z) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* write the update operands to the effective address operands: */"])
+ AS_ECHO([" ireg_dux = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(specopx, 6, 3);"])
+ AS_ECHO([" ireg_duy = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(specopy, 6, 3);"])
+ AS_ECHO([" ic->tme_m68k_ireg_memx${size} = ic->tme_m68k_ireg_uint${size}(ireg_dux${reg_size_shift});"])
+ AS_ECHO([" ic->tme_m68k_ireg_memy${size} = ic->tme_m68k_ireg_uint${size}(ireg_duy${reg_size_shift});"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, the comparisons failed: */"])
+ AS_ECHO([" else {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* write the effective address operands to the compare operands."])
+ AS_ECHO([" \"If Dc1 and Dc2 specify the same data register and the comparison"])
+ AS_ECHO([" fails, memory operand 1 is stored in the data register.\" */"])
+ AS_ECHO([" ic->tme_m68k_ireg_uint${size}(ireg_dcy${reg_size_shift}) = ic->tme_m68k_ireg_memy${size};"])
+ AS_ECHO([" ic->tme_m68k_ireg_uint${size}(ireg_dcx${reg_size_shift}) = ic->tme_m68k_ireg_memx${size};"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* finish the read/modify/write cycle: */"])
+ AS_ECHO([" tme_m68k_rmw_finish(ic,"])
+ AS_ECHO([" &rmw,"])
+ AS_ECHO([" (ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_Z) != 0);"])
+ AS_ECHO([" TME_M68K_INSN_OK;"])
+ AS_ECHO(["}"])
fi
fi
# moves:
if $header; then
- $as_echo "TME_M68K_INSN_DECL(tme_m68k_moves${size});"
+ AS_ECHO(["TME_M68K_INSN_DECL(tme_m68k_moves${size});"])
else
- $as_echo ""
- $as_echo "/* moves${size}: */"
- $as_echo "TME_M68K_INSN(tme_m68k_moves${size})"
- $as_echo "{"
- $as_echo " int ireg;"
- $as_echo " tme_uint${size}_t ireg_value;"
- $as_echo " unsigned int ea_reg;"
- $as_echo " unsigned int increment;"
- $as_echo " TME_M68K_INSN_PRIV;"
- $as_echo " TME_M68K_INSN_CANFAULT;"
- $as_echo " ireg = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(TME_M68K_INSN_SPECOP, 12, 4);"
- $as_echo ""
- $as_echo " /* in case we're storing the same address register used in a"
- $as_echo " postincrement or predecrement EA, save the current value"
- $as_echo " of the register now: */"
- $as_echo " ireg_value = ic->tme_m68k_ireg_uint${size}(ireg${reg_size_shift});"
- $as_echo ""
- $as_echo " /* we have to handle postincrement and predecrement ourselves: */"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo " ea_reg = TME_M68K_IREG_A0 + TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 0, 3);"
- $as_echo " increment = TME_M68K_SIZE_${size};"
- $as_echo " if (increment == TME_M68K_SIZE_8 && ea_reg == TME_M68K_IREG_A7) {"
- $as_echo " increment = TME_M68K_SIZE_16;"
- $as_echo " }"
- $as_echo " switch (TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 3, 3)) {"
- $as_echo " case 3: ic->tme_m68k_ireg_uint32(ea_reg) += increment; break;"
- $as_echo " case 4: ic->_tme_m68k_ea_address = (ic->tme_m68k_ireg_uint32(ea_reg) -= increment); break;"
- $as_echo " default: break;"
- $as_echo " }"
- $as_echo " }"
- $as_echo ""
- $as_echo " if (TME_M68K_INSN_SPECOP & TME_BIT(11)) {"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo " ic->tme_m68k_ireg_memx${size} = ireg_value;"
- $as_echo " ic->_tme_m68k_ea_function_code = ic->tme_m68k_ireg_dfc;"
- $as_echo " }"
- $as_echo " tme_m68k_write_memx${size}(ic);"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo " ic->_tme_m68k_ea_function_code = ic->tme_m68k_ireg_sfc;"
- $as_echo " }"
- $as_echo " tme_m68k_read_memx${size}(ic);"
+ AS_ECHO([""])
+ AS_ECHO(["/* moves${size}: */"])
+ AS_ECHO(["TME_M68K_INSN(tme_m68k_moves${size})"])
+ AS_ECHO(["{"])
+ AS_ECHO([" int ireg;"])
+ AS_ECHO([" tme_uint${size}_t ireg_value;"])
+ AS_ECHO([" unsigned int ea_reg;"])
+ AS_ECHO([" unsigned int increment;"])
+ AS_ECHO([" TME_M68K_INSN_PRIV;"])
+ AS_ECHO([" TME_M68K_INSN_CANFAULT;"])
+ AS_ECHO([" ireg = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(TME_M68K_INSN_SPECOP, 12, 4);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* in case we're storing the same address register used in a"])
+ AS_ECHO([" postincrement or predecrement EA, save the current value"])
+ AS_ECHO([" of the register now: */"])
+ AS_ECHO([" ireg_value = ic->tme_m68k_ireg_uint${size}(ireg${reg_size_shift});"])
+ AS_ECHO([""])
+ AS_ECHO([" /* we have to handle postincrement and predecrement ourselves: */"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([" ea_reg = TME_M68K_IREG_A0 + TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 0, 3);"])
+ AS_ECHO([" increment = TME_M68K_SIZE_${size};"])
+ AS_ECHO([" if (increment == TME_M68K_SIZE_8 && ea_reg == TME_M68K_IREG_A7) {"])
+ AS_ECHO([" increment = TME_M68K_SIZE_16;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" switch (TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 3, 3)) {"])
+ AS_ECHO([" case 3: ic->tme_m68k_ireg_uint32(ea_reg) += increment; break;"])
+ AS_ECHO([" case 4: ic->_tme_m68k_ea_address = (ic->tme_m68k_ireg_uint32(ea_reg) -= increment); break;"])
+ AS_ECHO([" default: break;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" if (TME_M68K_INSN_SPECOP & TME_BIT(11)) {"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_memx${size} = ireg_value;"])
+ AS_ECHO([" ic->_tme_m68k_ea_function_code = ic->tme_m68k_ireg_dfc;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" tme_m68k_write_memx${size}(ic);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([" ic->_tme_m68k_ea_function_code = ic->tme_m68k_ireg_sfc;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" tme_m68k_read_memx${size}(ic);"])
if test ${size} != 32; then
- $as_echo " if (ireg >= TME_M68K_IREG_A0) {"
- $as_echo " ic->tme_m68k_ireg_uint32(ireg) = "
- $as_echo " TME_EXT_S${size}_U32((tme_int${size}_t) ic->tme_m68k_ireg_memx${size});"
- $as_echo " }"
- $as_echo " else"
- $as_echo_n " "
+ AS_ECHO([" if (ireg >= TME_M68K_IREG_A0) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_uint32(ireg) = "])
+ AS_ECHO([" TME_EXT_S${size}_U32((tme_int${size}_t) ic->tme_m68k_ireg_memx${size});"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else"])
+ AS_ECHO_N([" "])
fi
- $as_echo " ic->tme_m68k_ireg_uint${size}(ireg${reg_size_shift}) = ic->tme_m68k_ireg_memx${size};"
- $as_echo " }"
- $as_echo " TME_M68K_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([" ic->tme_m68k_ireg_uint${size}(ireg${reg_size_shift}) = ic->tme_m68k_ireg_memx${size};"])
+ AS_ECHO([" }"])
+ AS_ECHO([" TME_M68K_INSN_OK;"])
+ AS_ECHO(["}"])
fi
done
@@ -1071,7 +1071,7 @@ for size in 8 16 32 any; do
# permute on read or write:
for name in read write; do
- capname=`$as_echo $name | tr a-z A-Z`
+ capname=`AS_ECHO([$name]) | tr a-z A-Z`
if test $name = read; then
from="from"
else
@@ -1161,103 +1161,103 @@ for size in 8 16 32 any; do
# if we're making the header, just emit a declaration:
if $header; then
- $as_echo "${rval} tme_m68k_${action} _TME_P((struct tme_m68k *${args_proto}));"
+ AS_ECHO(["${rval} tme_m68k_${action} _TME_P((struct tme_m68k *${args_proto}));"])
continue
fi
# start the function:
- $as_echo ""
- $as_echo "/* this ${name}s a ${size}-bit ${what} value: */"
- $as_echo "${rval}"
- $as_echo "tme_m68k_${action}(struct tme_m68k *ic${args}) "
- $as_echo "{"
+ AS_ECHO([""])
+ AS_ECHO(["/* this ${name}s a ${size}-bit ${what} value: */"])
+ AS_ECHO(["${rval}"])
+ AS_ECHO(["tme_m68k_${action}(struct tme_m68k *ic${args}) "])
+ AS_ECHO(["{"])
# our locals:
- $as_echo " tme_bus_context_t bus_context = ic->_tme_m68k_bus_context;"
- $as_echo_n " unsigned int function_code = "
+ AS_ECHO([" tme_bus_context_t bus_context = ic->_tme_m68k_bus_context;"])
+ AS_ECHO_N([" unsigned int function_code = "])
if test "x${fc}" != x; then
- $as_echo "${fc};"
+ AS_ECHO(["${fc};"])
fc="function_code"
fcptr="&function_code"
else
- fc=`$as_echo ${fcptr} | sed -e 's,^&,,'`
- $as_echo "${fc};"
+ fc=`AS_ECHO([${fcptr}]) | sed -e 's,^&,,'`
+ AS_ECHO(["${fc};"])
fi
- $as_echo_n " tme_uint32_t linear_address${_first} = "
+ AS_ECHO_N([" tme_uint32_t linear_address${_first} = "])
if test "x${addr}" != x; then
- $as_echo "${addr};"
+ AS_ECHO(["${addr};"])
addr="linear_address${_first}"
addrptr="&linear_address${_first}"
else
- addr=`$as_echo ${addrptr} | sed -e 's,^&,,'`
- $as_echo "${addr};"
+ addr=`AS_ECHO([${addrptr}]) | sed -e 's,^&,,'`
+ AS_ECHO(["${addr};"])
fi
if test "x${count}" = x; then
if test $size = any; then count=count; else count="sizeof(tme_uint${size}_t)"; fi
fi
if test x$_last != x; then
- $as_echo " tme_uint32_t linear_address${_last} = linear_address_first + ${count} - 1;";
+ AS_ECHO([" tme_uint32_t linear_address${_last} = linear_address_first + ${count} - 1;"]);
fi
- $as_echo " struct tme_m68k_tlb *tlb = ${tlb};"
+ AS_ECHO([" struct tme_m68k_tlb *tlb = ${tlb};"])
if test $size != any; then
memtype="tme_uint${size}_t"
- $as_echo " ${memtype} mem_value;"
+ AS_ECHO([" ${memtype} mem_value;"])
memtype="tme_shared ${memtype} *"
if test $name = read; then memtype="const ${memtype}"; fi
- $as_echo " ${memtype}mem;"
+ AS_ECHO([" ${memtype}mem;"])
fi
case "$what" in
inst)
- $as_echo " unsigned int fetch_slow_next = ic->_tme_m68k_insn_fetch_slow_next;"
+ AS_ECHO([" unsigned int fetch_slow_next = ic->_tme_m68k_insn_fetch_slow_next;"])
regptr="((tme_uint${size}_t *) (((tme_uint8_t *) &ic->_tme_m68k_insn_fetch_buffer[[0]]) + fetch_slow_next))"
reg="*${regptr}"
;;
esac
# track statistics:
- $as_echo ""
- $as_echo "#ifdef _TME_M68K_STATS"
- $as_echo " ic->tme_m68k_stats.tme_m68k_stats_memory_total++;"
- $as_echo "#endif /* _TME_M68K_STATS */"
+ AS_ECHO([""])
+ AS_ECHO(["#ifdef _TME_M68K_STATS"])
+ AS_ECHO([" ic->tme_m68k_stats.tme_m68k_stats_memory_total++;"])
+ AS_ECHO(["#endif /* _TME_M68K_STATS */"])
# if this is a write, log the value written:
if test $name = write; then
- $as_echo ""
- $as_echo " /* log the value written: */"
+ AS_ECHO([""])
+ AS_ECHO([" /* log the value written: */"])
if test $size != any; then
- $as_echo " tme_m68k_verify_mem${size}(ic, ${fc}, ${addr}, ${reg}, TME_BUS_CYCLE_WRITE);"
- $as_echo " tme_m68k_log(ic, 1000, TME_OK, "
- $as_echo " (TME_M68K_LOG_HANDLE(ic),"
- $as_echo " _(\"${action}\t%d:0x%08x:\t0x%0"`expr ${size} / 4`"x\"),"
- $as_echo " ${fc},"
- $as_echo " ${addr},"
- $as_echo " ${reg}));"
+ AS_ECHO([" tme_m68k_verify_mem${size}(ic, ${fc}, ${addr}, ${reg}, TME_BUS_CYCLE_WRITE);"])
+ AS_ECHO([" tme_m68k_log(ic, 1000, TME_OK, "])
+ AS_ECHO([" (TME_M68K_LOG_HANDLE(ic),"])
+ AS_ECHO([" _(\"${action}\t%d:0x%08x:\t0x%0"`expr ${size} / 4`"x\"),"])
+ AS_ECHO([" ${fc},"])
+ AS_ECHO([" ${addr},"])
+ AS_ECHO([" ${reg}));"])
else
- $as_echo " tme_m68k_verify_mem_any(ic, ${fc}, ${addr}, ${regptr}, ${count}, TME_BUS_CYCLE_WRITE);"
- $as_echo " tme_m68k_log_start(ic, 1000, TME_OK) {"
- $as_echo " unsigned int byte_i;"
- $as_echo " tme_log_part(TME_M68K_LOG_HANDLE(ic),"
- $as_echo " _(\"${action} %d:0x%08x count %d:\"),"
- $as_echo " ${fc},"
- $as_echo " ${addr},"
- $as_echo " ${count});"
- $as_echo " for (byte_i = 0; byte_i < count ; byte_i++) {"
- $as_echo " tme_log_part(TME_M68K_LOG_HANDLE(ic), \" 0x%02x\", (${regptr})[[byte_i]]);"
- $as_echo " }"
- $as_echo " } tme_m68k_log_finish(ic);"
+ AS_ECHO([" tme_m68k_verify_mem_any(ic, ${fc}, ${addr}, ${regptr}, ${count}, TME_BUS_CYCLE_WRITE);"])
+ AS_ECHO([" tme_m68k_log_start(ic, 1000, TME_OK) {"])
+ AS_ECHO([" unsigned int byte_i;"])
+ AS_ECHO([" tme_log_part(TME_M68K_LOG_HANDLE(ic),"])
+ AS_ECHO([" _(\"${action} %d:0x%08x count %d:\"),"])
+ AS_ECHO([" ${fc},"])
+ AS_ECHO([" ${addr},"])
+ AS_ECHO([" ${count});"])
+ AS_ECHO([" for (byte_i = 0; byte_i < count ; byte_i++) {"])
+ AS_ECHO([" tme_log_part(TME_M68K_LOG_HANDLE(ic), \" 0x%02x\", (${regptr})[[byte_i]]);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" } tme_m68k_log_finish(ic);"])
fi
fi
- $as_echo ""
- $as_echo " /* busy this TLB entry: */"
- $as_echo " tme_m68k_tlb_busy(tlb);"
+ AS_ECHO([""])
+ AS_ECHO([" /* busy this TLB entry: */"])
+ AS_ECHO([" tme_m68k_tlb_busy(tlb);"])
# if this is an any-transfer:
#
if test $size = any; then
- $as_echo ""
- $as_echo " /* call the full ${name} function: */"
- $as_echo " tme_m68k_${name}(ic, tlb, ${fcptr}, ${addrptr}, ${regptr}, ${count}, TME_M68K_BUS_CYCLE_RAW);"
+ AS_ECHO([""])
+ AS_ECHO([" /* call the full ${name} function: */"])
+ AS_ECHO([" tme_m68k_${name}(ic, tlb, ${fcptr}, ${addrptr}, ${regptr}, ${count}, TME_M68K_BUS_CYCLE_RAW);"])
# otherwise, this is not an any-transfer:
#
@@ -1268,175 +1268,175 @@ for size in 8 16 32 any; do
i=
case "$what" in
inst)
- $as_echo ""
- $as_echo " /* if this fetch was done by the fast executor: */"
- $as_echo " if (__tme_predict_true(fetch_slow_next < ic->_tme_m68k_insn_fetch_slow_count_fast)) {"
- $as_echo ""
- $as_echo " /* the entire fetch must be in the instruction buffer, and"
- $as_echo " we must be restarting: */"
- $as_echo " assert ((fetch_slow_next + sizeof(tme_uint${size}_t))"
- $as_echo " <= ic->_tme_m68k_insn_fetch_slow_count_fast);"
- $as_echo " assert (TME_M68K_SEQUENCE_RESTARTING);"
- $as_echo " mem_value = tme_memory_read${size}(${regptr}, sizeof(tme_uint16_t));"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, this fetch was not done by the fast executor: */"
- $as_echo " else {"
- $as_echo ""
- $as_echo " /* if we're restarting, but the offset in the instruction buffer"
- $as_echo " to fetch into is at the instruction buffer total, this must be"
- $as_echo " a fake fault caused by the fast executor. we confirm this by"
- $as_echo " checking that this transfer \"caused\" the fault, and that this"
- $as_echo " transfer will be the first slow one after any fast fetches."
- $as_echo " in this case, we can cancel the restart for now: */"
- $as_echo " if (TME_M68K_SEQUENCE_RESTARTING"
- $as_echo " && (fetch_slow_next"
- $as_echo " == ic->_tme_m68k_insn_fetch_slow_count_total)) {"
- $as_echo " assert ((ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_next"
- $as_echo " == ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_faulted)"
- $as_echo " && (fetch_slow_next"
- $as_echo " == ic->_tme_m68k_insn_fetch_slow_count_fast));"
- $as_echo " ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_faulted--;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* if we're not restarting: */"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo ""
- $as_echo " /* we advance the instruction buffer total *before* we do"
- $as_echo " what may be a slow fetch, because we may transfer a few"
- $as_echo " bytes and then fault. without this, those few bytes"
- $as_echo " would not get saved in the exception stack frame and"
- $as_echo " restored later before the continuation of the fetch: */"
- $as_echo " ic->_tme_m68k_insn_fetch_slow_count_total += sizeof(tme_uint${size}_t);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* make sure that if this is a new transfer or if this"
- $as_echo " transfer faulted, that we're fetching for the current"
- $as_echo " last positions in the instruction buffer: */"
- $as_echo " assert ((ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_next"
- $as_echo " < ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_faulted)"
- $as_echo " || ((fetch_slow_next + sizeof(tme_uint${size}_t))"
- $as_echo " == ic->_tme_m68k_insn_fetch_slow_count_total));"
+ AS_ECHO([""])
+ AS_ECHO([" /* if this fetch was done by the fast executor: */"])
+ AS_ECHO([" if (__tme_predict_true(fetch_slow_next < ic->_tme_m68k_insn_fetch_slow_count_fast)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* the entire fetch must be in the instruction buffer, and"])
+ AS_ECHO([" we must be restarting: */"])
+ AS_ECHO([" assert ((fetch_slow_next + sizeof(tme_uint${size}_t))"])
+ AS_ECHO([" <= ic->_tme_m68k_insn_fetch_slow_count_fast);"])
+ AS_ECHO([" assert (TME_M68K_SEQUENCE_RESTARTING);"])
+ AS_ECHO([" mem_value = tme_memory_read${size}(${regptr}, sizeof(tme_uint16_t));"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, this fetch was not done by the fast executor: */"])
+ AS_ECHO([" else {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if we're restarting, but the offset in the instruction buffer"])
+ AS_ECHO([" to fetch into is at the instruction buffer total, this must be"])
+ AS_ECHO([" a fake fault caused by the fast executor. we confirm this by"])
+ AS_ECHO([" checking that this transfer \"caused\" the fault, and that this"])
+ AS_ECHO([" transfer will be the first slow one after any fast fetches."])
+ AS_ECHO([" in this case, we can cancel the restart for now: */"])
+ AS_ECHO([" if (TME_M68K_SEQUENCE_RESTARTING"])
+ AS_ECHO([" && (fetch_slow_next"])
+ AS_ECHO([" == ic->_tme_m68k_insn_fetch_slow_count_total)) {"])
+ AS_ECHO([" assert ((ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_next"])
+ AS_ECHO([" == ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_faulted)"])
+ AS_ECHO([" && (fetch_slow_next"])
+ AS_ECHO([" == ic->_tme_m68k_insn_fetch_slow_count_fast));"])
+ AS_ECHO([" ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_faulted--;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if we're not restarting: */"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* we advance the instruction buffer total *before* we do"])
+ AS_ECHO([" what may be a slow fetch, because we may transfer a few"])
+ AS_ECHO([" bytes and then fault. without this, those few bytes"])
+ AS_ECHO([" would not get saved in the exception stack frame and"])
+ AS_ECHO([" restored later before the continuation of the fetch: */"])
+ AS_ECHO([" ic->_tme_m68k_insn_fetch_slow_count_total += sizeof(tme_uint${size}_t);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* make sure that if this is a new transfer or if this"])
+ AS_ECHO([" transfer faulted, that we're fetching for the current"])
+ AS_ECHO([" last positions in the instruction buffer: */"])
+ AS_ECHO([" assert ((ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_next"])
+ AS_ECHO([" < ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_faulted)"])
+ AS_ECHO([" || ((fetch_slow_next + sizeof(tme_uint${size}_t))"])
+ AS_ECHO([" == ic->_tme_m68k_insn_fetch_slow_count_total));"])
i=" "
;;
esac
- $as_echo ""
- $as_echo "${i} /* if we aren't restarting, and this address is properly aligned,"
- $as_echo "${i} and this TLB entry covers the operand and allows fast ${name}s: */"
- $as_echo "${i} if (__tme_predict_true(!TME_M68K_SEQUENCE_RESTARTING"
+ AS_ECHO([""])
+ AS_ECHO(["${i} /* if we aren't restarting, and this address is properly aligned,"])
+ AS_ECHO(["${i} and this TLB entry covers the operand and allows fast ${name}s: */"])
+ AS_ECHO(["${i} if (__tme_predict_true(!TME_M68K_SEQUENCE_RESTARTING"])
align_min="sizeof(tme_uint8_t)"
if test $size != 8; then
- $as_echo_n "${i} && ("
+ AS_ECHO_N(["${i} && ("])
if test $what = inst; then
align_min="sizeof(tme_uint16_t)"
- $as_echo_n "(${align_min} - 1)"
+ AS_ECHO_N(["(${align_min} - 1)"])
else
- $as_echo_n "ic->_tme_m68k_bus_16bit"
+ AS_ECHO_N(["ic->_tme_m68k_bus_16bit"])
fi
- $as_echo " & linear_address${_first}) == 0"
+ AS_ECHO([" & linear_address${_first}) == 0"])
fi
- $as_echo "${i} && tme_m68k_tlb_is_valid(tlb)"
- $as_echo "${i} && tlb->tme_m68k_tlb_bus_context == bus_context"
- $as_echo "${i} && (tlb->tme_m68k_tlb_function_codes_mask"
- $as_echo "${i} & TME_BIT(function_code))"
- $as_echo "${i} && linear_address${_first} >= (tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_first"
- $as_echo "${i} && linear_address${_last} <= (tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_last"
- $as_echo "${i} && tlb->tme_m68k_tlb_emulator_off_${name} != TME_EMULATOR_OFF_UNDEF)) {"
-
- $as_echo ""
- $as_echo "${i} /* make the emulator memory pointer: */"
- $as_echo "${i} mem = (${memtype}) (tlb->tme_m68k_tlb_emulator_off_${name} + linear_address${_first});"
+ AS_ECHO(["${i} && tme_m68k_tlb_is_valid(tlb)"])
+ AS_ECHO(["${i} && tlb->tme_m68k_tlb_bus_context == bus_context"])
+ AS_ECHO(["${i} && (tlb->tme_m68k_tlb_function_codes_mask"])
+ AS_ECHO(["${i} & TME_BIT(function_code))"])
+ AS_ECHO(["${i} && linear_address${_first} >= (tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_first"])
+ AS_ECHO(["${i} && linear_address${_last} <= (tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_last"])
+ AS_ECHO(["${i} && tlb->tme_m68k_tlb_emulator_off_${name} != TME_EMULATOR_OFF_UNDEF)) {"])
+
+ AS_ECHO([""])
+ AS_ECHO(["${i} /* make the emulator memory pointer: */"])
+ AS_ECHO(["${i} mem = (${memtype}) (tlb->tme_m68k_tlb_emulator_off_${name} + linear_address${_first});"])
if test $name = write; then
if test $size = 8; then
- $as_echo ""
- $as_echo "${i} /* get the value to write: */"
- $as_echo "${i} mem_value = ${reg};"
+ AS_ECHO([""])
+ AS_ECHO(["${i} /* get the value to write: */"])
+ AS_ECHO(["${i} mem_value = ${reg};"])
else
- $as_echo ""
- $as_echo "${i} /* get the value to write, in big-endian byte order: */"
- $as_echo "${i} mem_value = tme_htobe_u${size}(${reg});"
+ AS_ECHO([""])
+ AS_ECHO(["${i} /* get the value to write, in big-endian byte order: */"])
+ AS_ECHO(["${i} mem_value = tme_htobe_u${size}(${reg});"])
fi
fi
- $as_echo ""
- $as_echo "${i} /* do the ${size}-bit bus ${name}: */"
+ AS_ECHO([""])
+ AS_ECHO(["${i} /* do the ${size}-bit bus ${name}: */"])
if test $name = read; then
- $as_echo_n "${i} mem_value = tme_memory_bus_${name}${size}(mem"
+ AS_ECHO_N(["${i} mem_value = tme_memory_bus_${name}${size}(mem"])
else
- $as_echo_n "${i} tme_memory_bus_${name}${size}(mem, mem_value"
+ AS_ECHO_N(["${i} tme_memory_bus_${name}${size}(mem, mem_value"])
fi
- $as_echo ", tlb->tme_m68k_tlb_bus_rwlock, ${align_min}, sizeof(tme_uint32_t));"
+ AS_ECHO([", tlb->tme_m68k_tlb_bus_rwlock, ${align_min}, sizeof(tme_uint32_t));"])
if test $name = read; then
if test $what = inst; then
- $as_echo ""
- $as_echo "${i} /* put the value read, in host byte order: */"
- $as_echo "${i} mem_value = tme_betoh_u${size}(mem_value);"
- $as_echo "${i} tme_memory_write${size}(${regptr}, mem_value, sizeof(tme_uint16_t));"
+ AS_ECHO([""])
+ AS_ECHO(["${i} /* put the value read, in host byte order: */"])
+ AS_ECHO(["${i} mem_value = tme_betoh_u${size}(mem_value);"])
+ AS_ECHO(["${i} tme_memory_write${size}(${regptr}, mem_value, sizeof(tme_uint16_t));"])
elif test $size = 8; then
- $as_echo ""
- $as_echo "${i} /* put the value read: */"
- $as_echo "${i} ${reg} = mem_value;"
+ AS_ECHO([""])
+ AS_ECHO(["${i} /* put the value read: */"])
+ AS_ECHO(["${i} ${reg} = mem_value;"])
else
- $as_echo ""
- $as_echo "${i} /* put the value read, in host byte order: */"
- $as_echo "${i} ${reg} = tme_betoh_u${size}(mem_value);"
+ AS_ECHO([""])
+ AS_ECHO(["${i} /* put the value read, in host byte order: */"])
+ AS_ECHO(["${i} ${reg} = tme_betoh_u${size}(mem_value);"])
fi
fi
- $as_echo ""
- $as_echo "${i} /* step the transfer count: */"
- $as_echo "${i} TME_M68K_SEQUENCE_TRANSFER_STEP;"
- $as_echo "${i} }"
-
- $as_echo ""
- $as_echo "${i} /* otherwise, do the bus cycles the slow way: */"
- $as_echo "${i} else {"
- $as_echo "${i} tme_m68k_${name}${size}(ic, tlb,"
- $as_echo "${i} ${fcptr},"
- $as_echo "${i} ${addrptr},"
- $as_echo "${i} ${regptr},"
- $as_echo "${i} ${flags});"
+ AS_ECHO([""])
+ AS_ECHO(["${i} /* step the transfer count: */"])
+ AS_ECHO(["${i} TME_M68K_SEQUENCE_TRANSFER_STEP;"])
+ AS_ECHO(["${i} }"])
+
+ AS_ECHO([""])
+ AS_ECHO(["${i} /* otherwise, do the bus cycles the slow way: */"])
+ AS_ECHO(["${i} else {"])
+ AS_ECHO(["${i} tme_m68k_${name}${size}(ic, tlb,"])
+ AS_ECHO(["${i} ${fcptr},"])
+ AS_ECHO(["${i} ${addrptr},"])
+ AS_ECHO(["${i} ${regptr},"])
+ AS_ECHO(["${i} ${flags});"])
if test ${what} = inst; then
- $as_echo "${i} mem_value = tme_memory_read${size}(${regptr}, sizeof(tme_uint16_t));"
+ AS_ECHO(["${i} mem_value = tme_memory_read${size}(${regptr}, sizeof(tme_uint16_t));"])
fi
- $as_echo "${i} }"
+ AS_ECHO(["${i} }"])
fi
if test "x${i}" != x; then
- $as_echo " }"
+ AS_ECHO([" }"])
fi
- $as_echo ""
- $as_echo " /* unbusy this TLB entry: */"
- $as_echo " tme_m68k_tlb_unbusy(tlb);"
+ AS_ECHO([""])
+ AS_ECHO([" /* unbusy this TLB entry: */"])
+ AS_ECHO([" tme_m68k_tlb_unbusy(tlb);"])
# if this is a read, log the value read:
if test $name = read; then
- $as_echo ""
- $as_echo " /* log the value read: */"
+ AS_ECHO([""])
+ AS_ECHO([" /* log the value read: */"])
if test $size != any; then
- $as_echo " tme_m68k_verify_mem${size}(ic, ${fc}, ${addr}, ${reg}, TME_BUS_CYCLE_READ);"
- $as_echo " tme_m68k_log(ic, 1000, TME_OK,"
- $as_echo " (TME_M68K_LOG_HANDLE(ic),"
- $as_echo " _(\"${action}\t%d:0x%08x:\t0x%0"`expr ${size} / 4`"x\"),"
- $as_echo " ${fc},"
- $as_echo " ${addr},"
- $as_echo " ${reg}));"
+ AS_ECHO([" tme_m68k_verify_mem${size}(ic, ${fc}, ${addr}, ${reg}, TME_BUS_CYCLE_READ);"])
+ AS_ECHO([" tme_m68k_log(ic, 1000, TME_OK,"])
+ AS_ECHO([" (TME_M68K_LOG_HANDLE(ic),"])
+ AS_ECHO([" _(\"${action}\t%d:0x%08x:\t0x%0"`expr ${size} / 4`"x\"),"])
+ AS_ECHO([" ${fc},"])
+ AS_ECHO([" ${addr},"])
+ AS_ECHO([" ${reg}));"])
else
- $as_echo " tme_m68k_verify_mem_any(ic, ${fc}, ${addr}, ${regptr}, ${count}, TME_BUS_CYCLE_READ);"
- $as_echo " tme_m68k_log_start(ic, 1000, TME_OK) {"
- $as_echo " unsigned int byte_i;"
- $as_echo " tme_log_part(TME_M68K_LOG_HANDLE(ic),"
- $as_echo " _(\"${action} %d:0x%08x count %d:\"),"
- $as_echo " ${fc},"
- $as_echo " ${addr},"
- $as_echo " ${count});"
- $as_echo " for (byte_i = 0; byte_i < count ; byte_i++) {"
- $as_echo " tme_log_part(TME_M68K_LOG_HANDLE(ic), \" 0x%02x\", (${regptr})[[byte_i]]);"
- $as_echo " }"
- $as_echo " } tme_m68k_log_finish(ic);"
+ AS_ECHO([" tme_m68k_verify_mem_any(ic, ${fc}, ${addr}, ${regptr}, ${count}, TME_BUS_CYCLE_READ);"])
+ AS_ECHO([" tme_m68k_log_start(ic, 1000, TME_OK) {"])
+ AS_ECHO([" unsigned int byte_i;"])
+ AS_ECHO([" tme_log_part(TME_M68K_LOG_HANDLE(ic),"])
+ AS_ECHO([" _(\"${action} %d:0x%08x count %d:\"),"])
+ AS_ECHO([" ${fc},"])
+ AS_ECHO([" ${addr},"])
+ AS_ECHO([" ${count});"])
+ AS_ECHO([" for (byte_i = 0; byte_i < count ; byte_i++) {"])
+ AS_ECHO([" tme_log_part(TME_M68K_LOG_HANDLE(ic), \" 0x%02x\", (${regptr})[[byte_i]]);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" } tme_m68k_log_finish(ic);"])
fi
fi
@@ -1444,22 +1444,22 @@ for size in 8 16 32 any; do
case "$what" in
stack)
if test $name = read; then dir="+"; else dir="-"; fi
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo " ic->tme_m68k_ireg_a7 ${dir}= sizeof(tme_uint${size}_t);"
- $as_echo " }"
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_a7 ${dir}= sizeof(tme_uint${size}_t);"])
+ AS_ECHO([" }"])
;;
inst)
- $as_echo ""
- $as_echo " /* advance the offset in the instruction buffer for the next slow fetch: */"
- $as_echo " fetch_slow_next += sizeof(tme_uint${size}_t);"
- $as_echo " ic->_tme_m68k_insn_fetch_slow_next = fetch_slow_next;"
- $as_echo ""
- $as_echo " /* return the fetched value: */"
- $as_echo " return(mem_value);"
+ AS_ECHO([""])
+ AS_ECHO([" /* advance the offset in the instruction buffer for the next slow fetch: */"])
+ AS_ECHO([" fetch_slow_next += sizeof(tme_uint${size}_t);"])
+ AS_ECHO([" ic->_tme_m68k_insn_fetch_slow_next = fetch_slow_next;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* return the fetched value: */"])
+ AS_ECHO([" return(mem_value);"])
;;
esac
- $as_echo "}"
+ AS_ECHO(["}"])
:
done
@@ -1468,359 +1468,359 @@ for size in 8 16 32 any; do
# if we're making the header, emit a macro:
if $header; then
- $as_echo "#define tme_m68k_${name}${size}(ic, t, fc, la, _v, f) \\"
- $as_echo " tme_m68k_${name}(ic, t, fc, la, (tme_uint8_t *) (_v), sizeof(tme_uint${size}_t), f)"
+ AS_ECHO(["#define tme_m68k_${name}${size}(ic, t, fc, la, _v, f) \\"])
+ AS_ECHO([" tme_m68k_${name}(ic, t, fc, la, (tme_uint8_t *) (_v), sizeof(tme_uint${size}_t), f)"])
fi
else
# if we're making the header, just emit a declaration:
if $header; then
- $as_echo "void tme_m68k_${name} _TME_P((struct tme_m68k *, struct tme_m68k_tlb *, unsigned int *, tme_uint32_t *, tme_uint8_t *, unsigned int, unsigned int));"
+ AS_ECHO(["void tme_m68k_${name} _TME_P((struct tme_m68k *, struct tme_m68k_tlb *, unsigned int *, tme_uint32_t *, tme_uint8_t *, unsigned int, unsigned int));"])
continue
fi
- $as_echo ""
- $as_echo "/* this ${name}s a region of address space using actual bus cycles: */"
- $as_echo "void"
- $as_echo "tme_m68k_${name}(struct tme_m68k *ic, "
- $as_echo " struct tme_m68k_tlb *tlb,"
- $as_echo " unsigned int *_function_code, "
- $as_echo " tme_uint32_t *_linear_address, "
- $as_echo " tme_uint8_t *reg,"
- $as_echo " unsigned int reg_size,"
- $as_echo " unsigned int flags)"
- $as_echo "{"
+ AS_ECHO([""])
+ AS_ECHO(["/* this ${name}s a region of address space using actual bus cycles: */"])
+ AS_ECHO(["void"])
+ AS_ECHO(["tme_m68k_${name}(struct tme_m68k *ic, "])
+ AS_ECHO([" struct tme_m68k_tlb *tlb,"])
+ AS_ECHO([" unsigned int *_function_code, "])
+ AS_ECHO([" tme_uint32_t *_linear_address, "])
+ AS_ECHO([" tme_uint8_t *reg,"])
+ AS_ECHO([" unsigned int reg_size,"])
+ AS_ECHO([" unsigned int flags)"])
+ AS_ECHO(["{"])
# our locals:
- $as_echo " unsigned int function_code;"
- $as_echo " tme_uint32_t linear_address;"
- $as_echo " tme_bus_addr_t physical_address;"
- $as_echo " int shift;"
- $as_echo " struct tme_bus_cycle cycle;"
- $as_echo " unsigned int transferred, resid, cycle_size;"
- $as_echo " int exception;"
- $as_echo " int err;"
- $as_echo " tme_uint8_t *reg_p;"
- $as_echo " unsigned int buffer_i;"
- $as_echo " tme_uint8_t reg_buffer[[sizeof(tme_uint32_t) * 2]];"
+ AS_ECHO([" unsigned int function_code;"])
+ AS_ECHO([" tme_uint32_t linear_address;"])
+ AS_ECHO([" tme_bus_addr_t physical_address;"])
+ AS_ECHO([" int shift;"])
+ AS_ECHO([" struct tme_bus_cycle cycle;"])
+ AS_ECHO([" unsigned int transferred, resid, cycle_size;"])
+ AS_ECHO([" int exception;"])
+ AS_ECHO([" int err;"])
+ AS_ECHO([" tme_uint8_t *reg_p;"])
+ AS_ECHO([" unsigned int buffer_i;"])
+ AS_ECHO([" tme_uint8_t reg_buffer[[sizeof(tme_uint32_t) * 2]];"])
if test ${name} = read; then name_const_mem="const "; else name_const_mem= ; fi
- $as_echo " ${name_const_mem}tme_shared tme_uint8_t *mem;"
-
- $as_echo ""
- $as_echo " /* if we're not restarting, everything is fresh: */"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo " function_code = *_function_code;"
- $as_echo " linear_address = *_linear_address;"
- $as_echo " transferred = 0;"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* otherwise, if this is the transfer that faulted, restore"
- $as_echo " our state to the cycle that faulted, then take into account"
- $as_echo " any data provided by a software rerun of the faulted cycle: */"
- $as_echo " else if (ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_faulted"
- $as_echo " == ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_next) {"
- $as_echo " function_code = *_function_code = ic->_tme_m68k_group0_function_code;"
- $as_echo " linear_address = ic->_tme_m68k_group0_address;"
- $as_echo " transferred = ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_faulted_after;"
- $as_echo " if (transferred >= reg_size) abort();"
- $as_echo " *_linear_address = linear_address - transferred;"
- $as_echo " resid = reg_size - transferred;"
- $as_echo " if (ic->_tme_m68k_group0_buffer_${name}_size > resid) abort();"
- $as_echo " if (ic->_tme_m68k_group0_buffer_${name}_softrr > resid) abort();"
+ AS_ECHO([" ${name_const_mem}tme_shared tme_uint8_t *mem;"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* if we're not restarting, everything is fresh: */"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([" function_code = *_function_code;"])
+ AS_ECHO([" linear_address = *_linear_address;"])
+ AS_ECHO([" transferred = 0;"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, if this is the transfer that faulted, restore"])
+ AS_ECHO([" our state to the cycle that faulted, then take into account"])
+ AS_ECHO([" any data provided by a software rerun of the faulted cycle: */"])
+ AS_ECHO([" else if (ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_faulted"])
+ AS_ECHO([" == ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_next) {"])
+ AS_ECHO([" function_code = *_function_code = ic->_tme_m68k_group0_function_code;"])
+ AS_ECHO([" linear_address = ic->_tme_m68k_group0_address;"])
+ AS_ECHO([" transferred = ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_faulted_after;"])
+ AS_ECHO([" if (transferred >= reg_size) abort();"])
+ AS_ECHO([" *_linear_address = linear_address - transferred;"])
+ AS_ECHO([" resid = reg_size - transferred;"])
+ AS_ECHO([" if (ic->_tme_m68k_group0_buffer_${name}_size > resid) abort();"])
+ AS_ECHO([" if (ic->_tme_m68k_group0_buffer_${name}_softrr > resid) abort();"])
if test $name = read; then cmp=">"; else cmp="=="; fi
- $as_echo " if (ic->_tme_m68k_group0_buffer_${name}_softrr ${cmp} 0) {"
- $as_echo "#ifdef WORDS_BIGENDIAN"
- $as_echo " memcpy(reg + transferred, "
- $as_echo " ic->_tme_m68k_group0_buffer_${name},"
- $as_echo " ic->_tme_m68k_group0_buffer_${name}_size);"
- $as_echo "#else /* !WORDS_BIGENDIAN */"
- $as_echo " reg_p = (reg + reg_size - 1) - transferred;"
- $as_echo " for (buffer_i = 0;"
- $as_echo " buffer_i < ic->_tme_m68k_group0_buffer_${name}_size;"
- $as_echo " buffer_i++) {"
- $as_echo " *(reg_p--) = ic->_tme_m68k_group0_buffer_${name}[[buffer_i]];"
- $as_echo " }"
- $as_echo "#endif /* !WORDS_BIGENDIAN */"
- $as_echo " }"
- $as_echo " transferred += ic->_tme_m68k_group0_buffer_${name}_softrr;"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* otherwise, a later transfer has faulted. just step the"
- $as_echo " transfer number and return: */"
- $as_echo " else {"
- $as_echo " TME_M68K_SEQUENCE_TRANSFER_STEP;"
- $as_echo " return;"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* do as many bus cycles as needed to complete the transfer: */"
- $as_echo " exception = TME_M68K_EXCEPTION_NONE;"
- $as_echo " cycle_size = 0;"
- $as_echo " for(; transferred < reg_size; ) {"
- $as_echo " resid = reg_size - transferred;"
-
- $as_echo ""
- $as_echo " /* start the bus cycle structure: */"
- $as_echo " cycle.tme_bus_cycle_type = TME_BUS_CYCLE_${capname};"
- $as_echo " if (TME_ENDIAN_NATIVE == TME_ENDIAN_BIG"
- $as_echo " || (flags & TME_M68K_BUS_CYCLE_RAW)) {"
- $as_echo " cycle.tme_bus_cycle_buffer = reg + transferred;"
- $as_echo " cycle.tme_bus_cycle_buffer_increment = 1;"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " cycle.tme_bus_cycle_buffer = reg + reg_size - (1 + transferred);"
- $as_echo " cycle.tme_bus_cycle_buffer_increment = -1;"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* if we're emulating a CPU with a 16-bit bus interface: */"
- $as_echo " if (ic->_tme_m68k_bus_16bit) {"
- $as_echo ""
- $as_echo " /* if we're trying to transfer a non-power-of-two"
- $as_echo " number of bytes, either the CPU is broken (no"
- $as_echo " instructions ever transfer a non-power-of-two"
- $as_echo " number of bytes), or this function allowed an"
- $as_echo " unaligned transfer: */"
- $as_echo " assert((resid & (resid - 1)) == 0"
- $as_echo " || (flags & TME_M68K_BUS_CYCLE_RAW));"
- $as_echo ""
- $as_echo " /* only byte transfers can be unaligned: */"
- $as_echo " if (resid > sizeof(tme_uint8_t)"
- $as_echo " && (linear_address & 1)) {"
- $as_echo " exception = TME_M68K_EXCEPTION_AERR;"
- $as_echo " break;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* set the bus-size specific parts of the bus cycle structure: */"
- $as_echo " cycle_size = TME_MIN(resid, sizeof(tme_uint16_t));"
- $as_echo " cycle.tme_bus_cycle_size = cycle_size;"
- $as_echo " cycle.tme_bus_cycle_port = TME_BUS_CYCLE_PORT(0, TME_BUS16_LOG2);"
- $as_echo " cycle.tme_bus_cycle_lane_routing = "
- $as_echo " &tme_m68k_router_16[[TME_M68K_BUS_ROUTER_INDEX(TME_BUS16_LOG2, cycle_size, linear_address)]];"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise we're emulating a CPU with a 32-bit bus interface: */"
- $as_echo " else {"
+ AS_ECHO([" if (ic->_tme_m68k_group0_buffer_${name}_softrr ${cmp} 0) {"])
+ AS_ECHO(["#ifdef WORDS_BIGENDIAN"])
+ AS_ECHO([" memcpy(reg + transferred, "])
+ AS_ECHO([" ic->_tme_m68k_group0_buffer_${name},"])
+ AS_ECHO([" ic->_tme_m68k_group0_buffer_${name}_size);"])
+ AS_ECHO(["#else /* !WORDS_BIGENDIAN */"])
+ AS_ECHO([" reg_p = (reg + reg_size - 1) - transferred;"])
+ AS_ECHO([" for (buffer_i = 0;"])
+ AS_ECHO([" buffer_i < ic->_tme_m68k_group0_buffer_${name}_size;"])
+ AS_ECHO([" buffer_i++) {"])
+ AS_ECHO([" *(reg_p--) = ic->_tme_m68k_group0_buffer_${name}[[buffer_i]];"])
+ AS_ECHO([" }"])
+ AS_ECHO(["#endif /* !WORDS_BIGENDIAN */"])
+ AS_ECHO([" }"])
+ AS_ECHO([" transferred += ic->_tme_m68k_group0_buffer_${name}_softrr;"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, a later transfer has faulted. just step the"])
+ AS_ECHO([" transfer number and return: */"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" TME_M68K_SEQUENCE_TRANSFER_STEP;"])
+ AS_ECHO([" return;"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* do as many bus cycles as needed to complete the transfer: */"])
+ AS_ECHO([" exception = TME_M68K_EXCEPTION_NONE;"])
+ AS_ECHO([" cycle_size = 0;"])
+ AS_ECHO([" for(; transferred < reg_size; ) {"])
+ AS_ECHO([" resid = reg_size - transferred;"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* start the bus cycle structure: */"])
+ AS_ECHO([" cycle.tme_bus_cycle_type = TME_BUS_CYCLE_${capname};"])
+ AS_ECHO([" if (TME_ENDIAN_NATIVE == TME_ENDIAN_BIG"])
+ AS_ECHO([" || (flags & TME_M68K_BUS_CYCLE_RAW)) {"])
+ AS_ECHO([" cycle.tme_bus_cycle_buffer = reg + transferred;"])
+ AS_ECHO([" cycle.tme_bus_cycle_buffer_increment = 1;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" cycle.tme_bus_cycle_buffer = reg + reg_size - (1 + transferred);"])
+ AS_ECHO([" cycle.tme_bus_cycle_buffer_increment = -1;"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* if we're emulating a CPU with a 16-bit bus interface: */"])
+ AS_ECHO([" if (ic->_tme_m68k_bus_16bit) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if we're trying to transfer a non-power-of-two"])
+ AS_ECHO([" number of bytes, either the CPU is broken (no"])
+ AS_ECHO([" instructions ever transfer a non-power-of-two"])
+ AS_ECHO([" number of bytes), or this function allowed an"])
+ AS_ECHO([" unaligned transfer: */"])
+ AS_ECHO([" assert((resid & (resid - 1)) == 0"])
+ AS_ECHO([" || (flags & TME_M68K_BUS_CYCLE_RAW));"])
+ AS_ECHO([""])
+ AS_ECHO([" /* only byte transfers can be unaligned: */"])
+ AS_ECHO([" if (resid > sizeof(tme_uint8_t)"])
+ AS_ECHO([" && (linear_address & 1)) {"])
+ AS_ECHO([" exception = TME_M68K_EXCEPTION_AERR;"])
+ AS_ECHO([" break;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* set the bus-size specific parts of the bus cycle structure: */"])
+ AS_ECHO([" cycle_size = TME_MIN(resid, sizeof(tme_uint16_t));"])
+ AS_ECHO([" cycle.tme_bus_cycle_size = cycle_size;"])
+ AS_ECHO([" cycle.tme_bus_cycle_port = TME_BUS_CYCLE_PORT(0, TME_BUS16_LOG2);"])
+ AS_ECHO([" cycle.tme_bus_cycle_lane_routing = "])
+ AS_ECHO([" &tme_m68k_router_16[[TME_M68K_BUS_ROUTER_INDEX(TME_BUS16_LOG2, cycle_size, linear_address)]];"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise we're emulating a CPU with a 32-bit bus interface: */"])
+ AS_ECHO([" else {"])
if test $name = read; then
- $as_echo ""
- $as_echo " /* an instruction fetch must be aligned: */"
- $as_echo " if (flags & TME_M68K_BUS_CYCLE_FETCH) {"
- $as_echo " if (linear_address & 1) {"
- $as_echo " exception = TME_M68K_EXCEPTION_AERR;"
- $as_echo " break;"
- $as_echo " }"
- $as_echo " assert(!(resid & 1));"
- $as_echo " }"
+ AS_ECHO([""])
+ AS_ECHO([" /* an instruction fetch must be aligned: */"])
+ AS_ECHO([" if (flags & TME_M68K_BUS_CYCLE_FETCH) {"])
+ AS_ECHO([" if (linear_address & 1) {"])
+ AS_ECHO([" exception = TME_M68K_EXCEPTION_AERR;"])
+ AS_ECHO([" break;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" assert(!(resid & 1));"])
+ AS_ECHO([" }"])
fi
- $as_echo ""
- $as_echo " /* set the bus-size specific parts of the bus cycle structure: */"
- $as_echo " cycle_size = TME_MIN(resid, sizeof(tme_uint32_t) - (linear_address & (sizeof(tme_uint32_t) - 1)));"
- $as_echo " cycle.tme_bus_cycle_size = cycle_size;"
- $as_echo " cycle.tme_bus_cycle_port = TME_BUS_CYCLE_PORT(0, TME_BUS32_LOG2);"
- $as_echo " cycle.tme_bus_cycle_lane_routing = "
- $as_echo " &tme_m68k_router_32[[TME_M68K_BUS_ROUTER_INDEX(TME_BUS32_LOG2, cycle_size, linear_address)]];"
- $as_echo " }"
+ AS_ECHO([""])
+ AS_ECHO([" /* set the bus-size specific parts of the bus cycle structure: */"])
+ AS_ECHO([" cycle_size = TME_MIN(resid, sizeof(tme_uint32_t) - (linear_address & (sizeof(tme_uint32_t) - 1)));"])
+ AS_ECHO([" cycle.tme_bus_cycle_size = cycle_size;"])
+ AS_ECHO([" cycle.tme_bus_cycle_port = TME_BUS_CYCLE_PORT(0, TME_BUS32_LOG2);"])
+ AS_ECHO([" cycle.tme_bus_cycle_lane_routing = "])
+ AS_ECHO([" &tme_m68k_router_32[[TME_M68K_BUS_ROUTER_INDEX(TME_BUS32_LOG2, cycle_size, linear_address)]];"])
+ AS_ECHO([" }"])
- $as_echo ""
- $as_echo " /* loop while this TLB entry is invalid or does not apply: */"
- $as_echo " for (; __tme_predict_false(tme_m68k_tlb_is_invalid(tlb)"
- $as_echo " || tlb->tme_m68k_tlb_bus_context != ic->_tme_m68k_bus_context"
- $as_echo " || (tlb->tme_m68k_tlb_function_codes_mask & TME_BIT(function_code)) == 0"
- $as_echo " || linear_address < (tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_first"
- $as_echo " || linear_address > (tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_last"
- $as_echo " || (tlb->tme_m68k_tlb_emulator_off_${name} == TME_EMULATOR_OFF_UNDEF"
- $as_echo " && (tlb->tme_m68k_tlb_cycles_ok & TME_BUS_CYCLE_${capname}) == 0)); ) {"
- $as_echo ""
- $as_echo " /* this must not be part of a read/modify/write cycle: */"
- $as_echo " assert(!(flags & TME_M68K_BUS_CYCLE_RMW));"
- $as_echo ""
- $as_echo " /* fill this TLB entry: */"
- $as_echo " tme_m68k_tlb_fill(ic, tlb,"
- $as_echo " function_code,"
- $as_echo " linear_address,"
- $as_echo " TME_BUS_CYCLE_${capname});"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* if this TLB entry allows for fast ${name}s: */"
- $as_echo " mem = tlb->tme_m68k_tlb_emulator_off_${name};"
- $as_echo " if (__tme_predict_true(mem != TME_EMULATOR_OFF_UNDEF)) {"
- $as_echo ""
- $as_echo " /* make the emulator memory pointer: */"
- $as_echo " mem += linear_address;"
- $as_echo ""
- $as_echo " /* limit the cycle size to addresses covered by the TLB entry: */"
- $as_echo " if (__tme_predict_false((cycle_size - 1)"
- $as_echo " > (((tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_last) - linear_address))) {"
- $as_echo " cycle_size = (((tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_last) - linear_address) + 1;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* if this is a little-endian host, and this isn't a raw ${name}: */"
- $as_echo " if (TME_ENDIAN_NATIVE == TME_ENDIAN_LITTLE"
- $as_echo " && (flags & TME_M68K_BUS_CYCLE_RAW) == 0) {"
+ AS_ECHO([""])
+ AS_ECHO([" /* loop while this TLB entry is invalid or does not apply: */"])
+ AS_ECHO([" for (; __tme_predict_false(tme_m68k_tlb_is_invalid(tlb)"])
+ AS_ECHO([" || tlb->tme_m68k_tlb_bus_context != ic->_tme_m68k_bus_context"])
+ AS_ECHO([" || (tlb->tme_m68k_tlb_function_codes_mask & TME_BIT(function_code)) == 0"])
+ AS_ECHO([" || linear_address < (tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_first"])
+ AS_ECHO([" || linear_address > (tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_last"])
+ AS_ECHO([" || (tlb->tme_m68k_tlb_emulator_off_${name} == TME_EMULATOR_OFF_UNDEF"])
+ AS_ECHO([" && (tlb->tme_m68k_tlb_cycles_ok & TME_BUS_CYCLE_${capname}) == 0)); ) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* this must not be part of a read/modify/write cycle: */"])
+ AS_ECHO([" assert(!(flags & TME_M68K_BUS_CYCLE_RMW));"])
+ AS_ECHO([""])
+ AS_ECHO([" /* fill this TLB entry: */"])
+ AS_ECHO([" tme_m68k_tlb_fill(ic, tlb,"])
+ AS_ECHO([" function_code,"])
+ AS_ECHO([" linear_address,"])
+ AS_ECHO([" TME_BUS_CYCLE_${capname});"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this TLB entry allows for fast ${name}s: */"])
+ AS_ECHO([" mem = tlb->tme_m68k_tlb_emulator_off_${name};"])
+ AS_ECHO([" if (__tme_predict_true(mem != TME_EMULATOR_OFF_UNDEF)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* make the emulator memory pointer: */"])
+ AS_ECHO([" mem += linear_address;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* limit the cycle size to addresses covered by the TLB entry: */"])
+ AS_ECHO([" if (__tme_predict_false((cycle_size - 1)"])
+ AS_ECHO([" > (((tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_last) - linear_address))) {"])
+ AS_ECHO([" cycle_size = (((tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_last) - linear_address) + 1;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is a little-endian host, and this isn't a raw ${name}: */"])
+ AS_ECHO([" if (TME_ENDIAN_NATIVE == TME_ENDIAN_LITTLE"])
+ AS_ECHO([" && (flags & TME_M68K_BUS_CYCLE_RAW) == 0) {"])
if test ${name} = write; then
- $as_echo ""
- $as_echo " /* byteswap the data to write in the intermediate buffer: */"
- $as_echo " reg_p = cycle.tme_bus_cycle_buffer;"
- $as_echo " buffer_i = 0;"
- $as_echo " do {"
- $as_echo " reg_buffer[[buffer_i]] = *(reg_p--);"
- $as_echo " } while (++buffer_i != cycle_size);"
+ AS_ECHO([""])
+ AS_ECHO([" /* byteswap the data to write in the intermediate buffer: */"])
+ AS_ECHO([" reg_p = cycle.tme_bus_cycle_buffer;"])
+ AS_ECHO([" buffer_i = 0;"])
+ AS_ECHO([" do {"])
+ AS_ECHO([" reg_buffer[[buffer_i]] = *(reg_p--);"])
+ AS_ECHO([" } while (++buffer_i != cycle_size);"])
fi
- $as_echo ""
- $as_echo " /* use the intermediate buffer for the ${name}: */"
- $as_echo " cycle.tme_bus_cycle_buffer = ®_buffer[[0]];"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* do the bus ${name}: */"
- $as_echo " tme_memory_bus_${name}_buffer(mem,"
- $as_echo " cycle.tme_bus_cycle_buffer,"
- $as_echo " cycle_size,"
- $as_echo " tlb->tme_m68k_tlb_bus_rwlock,"
- $as_echo " sizeof(tme_uint8_t),"
- $as_echo " sizeof(tme_uint32_t));"
+ AS_ECHO([""])
+ AS_ECHO([" /* use the intermediate buffer for the ${name}: */"])
+ AS_ECHO([" cycle.tme_bus_cycle_buffer = ®_buffer[[0]];"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do the bus ${name}: */"])
+ AS_ECHO([" tme_memory_bus_${name}_buffer(mem,"])
+ AS_ECHO([" cycle.tme_bus_cycle_buffer,"])
+ AS_ECHO([" cycle_size,"])
+ AS_ECHO([" tlb->tme_m68k_tlb_bus_rwlock,"])
+ AS_ECHO([" sizeof(tme_uint8_t),"])
+ AS_ECHO([" sizeof(tme_uint32_t));"])
if test ${name} = read; then
- $as_echo ""
- $as_echo " /* if this is a little-endian host, and this isn't a raw ${name}: */"
- $as_echo " if (TME_ENDIAN_NATIVE == TME_ENDIAN_LITTLE"
- $as_echo " && (flags & TME_M68K_BUS_CYCLE_RAW) == 0) {"
- $as_echo ""
- $as_echo " /* byteswap the read data in the intermediate buffer: */"
- $as_echo " reg_p = reg + reg_size - (1 + transferred);"
- $as_echo " buffer_i = 0;"
- $as_echo " do {"
- $as_echo " *(reg_p--) = reg_buffer[[buffer_i]];"
- $as_echo " } while (++buffer_i != cycle_size);"
- $as_echo " }"
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is a little-endian host, and this isn't a raw ${name}: */"])
+ AS_ECHO([" if (TME_ENDIAN_NATIVE == TME_ENDIAN_LITTLE"])
+ AS_ECHO([" && (flags & TME_M68K_BUS_CYCLE_RAW) == 0) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* byteswap the read data in the intermediate buffer: */"])
+ AS_ECHO([" reg_p = reg + reg_size - (1 + transferred);"])
+ AS_ECHO([" buffer_i = 0;"])
+ AS_ECHO([" do {"])
+ AS_ECHO([" *(reg_p--) = reg_buffer[[buffer_i]];"])
+ AS_ECHO([" } while (++buffer_i != cycle_size);"])
+ AS_ECHO([" }"])
fi
- $as_echo ""
- $as_echo " /* update: */"
- $as_echo " linear_address += cycle_size;"
- $as_echo " transferred += cycle_size;"
- $as_echo " continue;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, this TLB entry does not allow for fast ${name}s: */"
- $as_echo ""
- $as_echo " /* if this is a part of a read/modify/write cycle: */"
- $as_echo " if (flags & TME_M68K_BUS_CYCLE_RMW) {"
- $as_echo ""
+ AS_ECHO([""])
+ AS_ECHO([" /* update: */"])
+ AS_ECHO([" linear_address += cycle_size;"])
+ AS_ECHO([" transferred += cycle_size;"])
+ AS_ECHO([" continue;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, this TLB entry does not allow for fast ${name}s: */"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is a part of a read/modify/write cycle: */"])
+ AS_ECHO([" if (flags & TME_M68K_BUS_CYCLE_RMW) {"])
+ AS_ECHO([""])
if test ${name} = read; then
- $as_echo " /* if this is the first cycle in this read,"
- $as_echo " we will establish the new lock, otherwise"
- $as_echo " we will continue using the existing lock: */"
+ AS_ECHO([" /* if this is the first cycle in this read,"])
+ AS_ECHO([" we will establish the new lock, otherwise"])
+ AS_ECHO([" we will continue using the existing lock: */"])
else
- $as_echo " /* we will continue using the existing lock."
- $as_echo " the device will automatically unlock after"
- $as_echo " the last cycle of this write: */"
+ AS_ECHO([" /* we will continue using the existing lock."])
+ AS_ECHO([" the device will automatically unlock after"])
+ AS_ECHO([" the last cycle of this write: */"])
fi
- $as_echo " cycle.tme_bus_cycle_type"
- $as_echo " |= (TME_BUS_CYCLE_LOCK"
- $as_echo_n " | ("
+ AS_ECHO([" cycle.tme_bus_cycle_type"])
+ AS_ECHO([" |= (TME_BUS_CYCLE_LOCK"])
+ AS_ECHO_N([" | ("])
if test ${name} = read; then
- $as_echo_n "transferred == 0 ? 0 : "
+ AS_ECHO_N(["transferred == 0 ? 0 : "])
fi
- $as_echo "TME_BUS_CYCLE_UNLOCK));"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* form the physical address for the bus cycle handler: */"
- $as_echo " physical_address = tlb->tme_m68k_tlb_addr_offset + linear_address;"
- $as_echo " shift = tlb->tme_m68k_tlb_addr_shift;"
- $as_echo " if (shift < 0) {"
- $as_echo " physical_address <<= (0 - shift);"
- $as_echo " }"
- $as_echo " else if (shift > 0) {"
- $as_echo " physical_address >>= shift;"
- $as_echo " }"
- $as_echo " cycle.tme_bus_cycle_address = physical_address;"
-
- $as_echo ""
- $as_echo " /* run the bus cycle: */"
- $as_echo " tme_m68k_tlb_unbusy(tlb);"
- $as_echo " tme_m68k_callout_unlock(ic);"
- $as_echo " err = (*tlb->tme_m68k_tlb_bus_tlb.tme_bus_tlb_cycle)"
- $as_echo " (tlb->tme_m68k_tlb_bus_tlb.tme_bus_tlb_cycle_private, &cycle);"
- $as_echo " tme_m68k_callout_relock(ic);"
- $as_echo " tme_m68k_tlb_busy(tlb);"
- $as_echo ""
- $as_echo " /* if the TLB entry was invalidated before the ${name}: */"
- $as_echo " if (err == EBADF"
- $as_echo " && tme_m68k_tlb_is_invalid(tlb)) {"
- $as_echo " cycle.tme_bus_cycle_size = 0;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, if we didn't get a bus error, but some"
- $as_echo " synchronous event has happened: */"
- $as_echo " else if (err == TME_BUS_CYCLE_SYNCHRONOUS_EVENT) {"
- $as_echo ""
- $as_echo " /* after the currently executing instruction finishes, check"
- $as_echo " for external resets, halts, or interrupts: */"
- $as_echo " ic->_tme_m68k_instruction_burst_remaining = 0;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, any other error might be a bus error: */"
- $as_echo " else if (err != TME_OK) {"
- $as_echo " err = tme_bus_tlb_fault(&tlb->tme_m68k_tlb_bus_tlb, &cycle, err);"
- $as_echo " if (err != TME_OK) {"
- $as_echo " exception = TME_M68K_EXCEPTION_BERR;"
- $as_echo " break;"
- $as_echo " }"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* update: */"
- $as_echo " linear_address += cycle.tme_bus_cycle_size;"
- $as_echo " transferred += cycle.tme_bus_cycle_size;"
- $as_echo " }"
+ AS_ECHO(["TME_BUS_CYCLE_UNLOCK));"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* form the physical address for the bus cycle handler: */"])
+ AS_ECHO([" physical_address = tlb->tme_m68k_tlb_addr_offset + linear_address;"])
+ AS_ECHO([" shift = tlb->tme_m68k_tlb_addr_shift;"])
+ AS_ECHO([" if (shift < 0) {"])
+ AS_ECHO([" physical_address <<= (0 - shift);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else if (shift > 0) {"])
+ AS_ECHO([" physical_address >>= shift;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" cycle.tme_bus_cycle_address = physical_address;"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* run the bus cycle: */"])
+ AS_ECHO([" tme_m68k_tlb_unbusy(tlb);"])
+ AS_ECHO([" tme_m68k_callout_unlock(ic);"])
+ AS_ECHO([" err = (*tlb->tme_m68k_tlb_bus_tlb.tme_bus_tlb_cycle)"])
+ AS_ECHO([" (tlb->tme_m68k_tlb_bus_tlb.tme_bus_tlb_cycle_private, &cycle);"])
+ AS_ECHO([" tme_m68k_callout_relock(ic);"])
+ AS_ECHO([" tme_m68k_tlb_busy(tlb);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the TLB entry was invalidated before the ${name}: */"])
+ AS_ECHO([" if (err == EBADF"])
+ AS_ECHO([" && tme_m68k_tlb_is_invalid(tlb)) {"])
+ AS_ECHO([" cycle.tme_bus_cycle_size = 0;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, if we didn't get a bus error, but some"])
+ AS_ECHO([" synchronous event has happened: */"])
+ AS_ECHO([" else if (err == TME_BUS_CYCLE_SYNCHRONOUS_EVENT) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* after the currently executing instruction finishes, check"])
+ AS_ECHO([" for external resets, halts, or interrupts: */"])
+ AS_ECHO([" ic->_tme_m68k_instruction_burst_remaining = 0;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, any other error might be a bus error: */"])
+ AS_ECHO([" else if (err != TME_OK) {"])
+ AS_ECHO([" err = tme_bus_tlb_fault(&tlb->tme_m68k_tlb_bus_tlb, &cycle, err);"])
+ AS_ECHO([" if (err != TME_OK) {"])
+ AS_ECHO([" exception = TME_M68K_EXCEPTION_BERR;"])
+ AS_ECHO([" break;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* update: */"])
+ AS_ECHO([" linear_address += cycle.tme_bus_cycle_size;"])
+ AS_ECHO([" transferred += cycle.tme_bus_cycle_size;"])
+ AS_ECHO([" }"])
- $as_echo ""
- $as_echo " /* NB: there is no need to explicitly unlock"
- $as_echo " a device. if a locked bus cycle to a device"
- $as_echo " faults, the lock must be automatically unlocked: */"
-
- $as_echo ""
- $as_echo " /* if we faulted, stash the information the fault stacker"
- $as_echo " will need and start exception processing: */"
- $as_echo " if (exception != TME_M68K_EXCEPTION_NONE) {"
- $as_echo_n " ic->_tme_m68k_group0_flags = flags"
+ AS_ECHO([""])
+ AS_ECHO([" /* NB: there is no need to explicitly unlock"])
+ AS_ECHO([" a device. if a locked bus cycle to a device"])
+ AS_ECHO([" faults, the lock must be automatically unlocked: */"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* if we faulted, stash the information the fault stacker"])
+ AS_ECHO([" will need and start exception processing: */"])
+ AS_ECHO([" if (exception != TME_M68K_EXCEPTION_NONE) {"])
+ AS_ECHO_N([" ic->_tme_m68k_group0_flags = flags"])
if test $name = read; then
- $as_echo_n " | TME_M68K_BUS_CYCLE_READ"
+ AS_ECHO_N([" | TME_M68K_BUS_CYCLE_READ"])
fi
- $as_echo ";"
- $as_echo " ic->_tme_m68k_group0_function_code = function_code;"
- $as_echo " ic->_tme_m68k_group0_address = linear_address;"
- $as_echo " ic->_tme_m68k_group0_sequence = ic->_tme_m68k_sequence;"
- $as_echo " ic->_tme_m68k_group0_sequence._tme_m68k_sequence_transfer_faulted_after = transferred;"
- $as_echo " ic->_tme_m68k_group0_buffer_${name}_size = cycle_size;"
+ AS_ECHO([";"])
+ AS_ECHO([" ic->_tme_m68k_group0_function_code = function_code;"])
+ AS_ECHO([" ic->_tme_m68k_group0_address = linear_address;"])
+ AS_ECHO([" ic->_tme_m68k_group0_sequence = ic->_tme_m68k_sequence;"])
+ AS_ECHO([" ic->_tme_m68k_group0_sequence._tme_m68k_sequence_transfer_faulted_after = transferred;"])
+ AS_ECHO([" ic->_tme_m68k_group0_buffer_${name}_size = cycle_size;"])
if test $name = write; then
- $as_echo "#ifdef WORDS_BIGENDIAN"
- $as_echo " memcpy(ic->_tme_m68k_group0_buffer_${name},"
- $as_echo " reg + transferred,"
- $as_echo " ic->_tme_m68k_group0_buffer_${name}_size);"
- $as_echo "#else /* !WORDS_BIGENDIAN */"
- $as_echo " reg_p = (reg + reg_size - 1) - transferred;"
- $as_echo " for (buffer_i = 0;"
- $as_echo " buffer_i < ic->_tme_m68k_group0_buffer_${name}_size;"
- $as_echo " buffer_i++) {"
- $as_echo " ic->_tme_m68k_group0_buffer_${name}[[buffer_i]] = *(reg_p--);"
- $as_echo " }"
- $as_echo "#endif /* !WORDS_BIGENDIAN */"
+ AS_ECHO(["#ifdef WORDS_BIGENDIAN"])
+ AS_ECHO([" memcpy(ic->_tme_m68k_group0_buffer_${name},"])
+ AS_ECHO([" reg + transferred,"])
+ AS_ECHO([" ic->_tme_m68k_group0_buffer_${name}_size);"])
+ AS_ECHO(["#else /* !WORDS_BIGENDIAN */"])
+ AS_ECHO([" reg_p = (reg + reg_size - 1) - transferred;"])
+ AS_ECHO([" for (buffer_i = 0;"])
+ AS_ECHO([" buffer_i < ic->_tme_m68k_group0_buffer_${name}_size;"])
+ AS_ECHO([" buffer_i++) {"])
+ AS_ECHO([" ic->_tme_m68k_group0_buffer_${name}[[buffer_i]] = *(reg_p--);"])
+ AS_ECHO([" }"])
+ AS_ECHO(["#endif /* !WORDS_BIGENDIAN */"])
fi
- $as_echo " if (ic->_tme_m68k_group0_hook != NULL) {"
- $as_echo " (*ic->_tme_m68k_group0_hook)(ic);"
- $as_echo " }"
- $as_echo " ic->_tme_m68k_group0_sequence._tme_m68k_sequence_transfer_faulted = ";
- $as_echo " ic->_tme_m68k_group0_sequence._tme_m68k_sequence_transfer_next;"
- $as_echo " tme_m68k_tlb_unbusy(tlb);"
- $as_echo " tme_m68k_exception(ic, exception);"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* otherwise, this transfer has now completed: */"
- $as_echo " TME_M68K_SEQUENCE_TRANSFER_STEP;"
-
- $as_echo "}"
+ AS_ECHO([" if (ic->_tme_m68k_group0_hook != NULL) {"])
+ AS_ECHO([" (*ic->_tme_m68k_group0_hook)(ic);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" ic->_tme_m68k_group0_sequence._tme_m68k_sequence_transfer_faulted = "]);
+ AS_ECHO([" ic->_tme_m68k_group0_sequence._tme_m68k_sequence_transfer_next;"])
+ AS_ECHO([" tme_m68k_tlb_unbusy(tlb);"])
+ AS_ECHO([" tme_m68k_exception(ic, exception);"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, this transfer has now completed: */"])
+ AS_ECHO([" TME_M68K_SEQUENCE_TRANSFER_STEP;"])
+
+ AS_ECHO(["}"])
fi
done
@@ -1831,106 +1831,106 @@ for name in abcd sbcd nbcd; do
# if we're making the header, just emit a declaration:
if $header; then
- $as_echo "TME_M68K_INSN_DECL(tme_m68k_${name});"
+ AS_ECHO(["TME_M68K_INSN_DECL(tme_m68k_${name});"])
continue
fi
# emit the function:
- $as_echo ""
- $as_echo "TME_M68K_INSN(tme_m68k_${name})"
- $as_echo "{"
- $as_echo " tme_uint8_t dst, dst_msd, dst_lsd;"
- $as_echo " tme_uint8_t src, src_msd, src_lsd;"
- $as_echo " tme_uint8_t res, res_msd, res_lsd;"
- $as_echo " tme_uint8_t flags;"
+ AS_ECHO([""])
+ AS_ECHO(["TME_M68K_INSN(tme_m68k_${name})"])
+ AS_ECHO(["{"])
+ AS_ECHO([" tme_uint8_t dst, dst_msd, dst_lsd;"])
+ AS_ECHO([" tme_uint8_t src, src_msd, src_lsd;"])
+ AS_ECHO([" tme_uint8_t res, res_msd, res_lsd;"])
+ AS_ECHO([" tme_uint8_t flags;"])
# get the operands:
if test $name != nbcd; then
- $as_echo " int memory;"
- $as_echo " int rx, ry, function_code;"
- $as_echo ""
- $as_echo " /* load the operands: */"
- $as_echo " rx = TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 0, 3);"
- $as_echo " ry = TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 9, 3);"
- $as_echo " memory = (TME_M68K_INSN_OPCODE & TME_BIT(3)) != 0;"
- $as_echo " function_code = TME_M68K_FUNCTION_CODE_DATA(ic);"
- $as_echo " if (memory) {"
- $as_echo " TME_M68K_INSN_CANFAULT;"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
+ AS_ECHO([" int memory;"])
+ AS_ECHO([" int rx, ry, function_code;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* load the operands: */"])
+ AS_ECHO([" rx = TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 0, 3);"])
+ AS_ECHO([" ry = TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE, 9, 3);"])
+ AS_ECHO([" memory = (TME_M68K_INSN_OPCODE & TME_BIT(3)) != 0;"])
+ AS_ECHO([" function_code = TME_M68K_FUNCTION_CODE_DATA(ic);"])
+ AS_ECHO([" if (memory) {"])
+ AS_ECHO([" TME_M68K_INSN_CANFAULT;"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
# the stack pointer must always be decremented by a multiple of two.
# assuming rx < 8, ((rx + 1) >> 3) == 1 iff rx == 7, meaning %a7:
- $as_echo " ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + rx) -= sizeof(tme_uint8_t) + ((rx + 1) >> 3);"
- $as_echo " ic->_tme_m68k_ea_function_code = function_code;"
- $as_echo " ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + rx);"
- $as_echo " }"
- $as_echo " tme_m68k_read_memx8(ic);"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
+ AS_ECHO([" ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + rx) -= sizeof(tme_uint8_t) + ((rx + 1) >> 3);"])
+ AS_ECHO([" ic->_tme_m68k_ea_function_code = function_code;"])
+ AS_ECHO([" ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + rx);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" tme_m68k_read_memx8(ic);"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
# the stack pointer must always be incremented by a multiple of two.
# assuming rx < 8, ((rx + 1) >> 3) == 1 iff rx == 7, meaning %a7:
- $as_echo " ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ry) -= sizeof(tme_uint8_t) + ((ry + 1) >> 3);"
- $as_echo " ic->_tme_m68k_ea_function_code = function_code;"
- $as_echo " ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ry);"
- $as_echo " }"
- $as_echo " tme_m68k_read_mem8(ic, TME_M68K_IREG_MEMY32);"
- $as_echo " src = ic->tme_m68k_ireg_memx8;"
- $as_echo " dst = ic->tme_m68k_ireg_memy8;"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " src = ic->tme_m68k_ireg_uint8(rx << 2);"
- $as_echo " dst = ic->tme_m68k_ireg_uint8(ry << 2);"
- $as_echo " }"
+ AS_ECHO([" ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ry) -= sizeof(tme_uint8_t) + ((ry + 1) >> 3);"])
+ AS_ECHO([" ic->_tme_m68k_ea_function_code = function_code;"])
+ AS_ECHO([" ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ry);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" tme_m68k_read_mem8(ic, TME_M68K_IREG_MEMY32);"])
+ AS_ECHO([" src = ic->tme_m68k_ireg_memx8;"])
+ AS_ECHO([" dst = ic->tme_m68k_ireg_memy8;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" src = ic->tme_m68k_ireg_uint8(rx << 2);"])
+ AS_ECHO([" dst = ic->tme_m68k_ireg_uint8(ry << 2);"])
+ AS_ECHO([" }"])
else
- $as_echo ""
- $as_echo " dst = 0x00;"
- $as_echo " src = TME_M68K_INSN_OP1(tme_uint8_t);"
+ AS_ECHO([""])
+ AS_ECHO([" dst = 0x00;"])
+ AS_ECHO([" src = TME_M68K_INSN_OP1(tme_uint8_t);"])
fi
- $as_echo " dst_lsd = TME_FIELD_EXTRACTU(dst, 0, 4);"
- $as_echo " dst_msd = TME_FIELD_EXTRACTU(dst, 4, 4);"
- $as_echo " src_lsd = TME_FIELD_EXTRACTU(src, 0, 4);"
- $as_echo " src_msd = TME_FIELD_EXTRACTU(src, 4, 4);"
+ AS_ECHO([" dst_lsd = TME_FIELD_EXTRACTU(dst, 0, 4);"])
+ AS_ECHO([" dst_msd = TME_FIELD_EXTRACTU(dst, 4, 4);"])
+ AS_ECHO([" src_lsd = TME_FIELD_EXTRACTU(src, 0, 4);"])
+ AS_ECHO([" src_msd = TME_FIELD_EXTRACTU(src, 4, 4);"])
# perform the operation:
- $as_echo ""
- $as_echo " /* perform the operation: */"
+ AS_ECHO([""])
+ AS_ECHO([" /* perform the operation: */"])
if test $name = abcd; then op='+' ; opc='-' ; else op='-' ; opc='+' ; fi
- $as_echo " res_lsd = dst_lsd ${op} src_lsd ${op} ((ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_X) != 0);"
- $as_echo " res_msd = dst_msd ${op} src_msd;"
- $as_echo " flags = 0;"
- $as_echo " if (res_lsd > 9) {"
- $as_echo " res_lsd ${opc}= 10;"
- $as_echo " res_msd ${op}= 1;"
- $as_echo " }"
- $as_echo " if (res_msd > 9) {"
- $as_echo " res_msd ${opc}= 10;"
- $as_echo " flags |= TME_M68K_FLAG_C | TME_M68K_FLAG_X;"
- $as_echo " }"
- $as_echo " res = (res_msd << 4) + (res_lsd & 0xf);"
- $as_echo " if (res == 0) flags |= TME_M68K_FLAG_N;"
- $as_echo ""
+ AS_ECHO([" res_lsd = dst_lsd ${op} src_lsd ${op} ((ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_X) != 0);"])
+ AS_ECHO([" res_msd = dst_msd ${op} src_msd;"])
+ AS_ECHO([" flags = 0;"])
+ AS_ECHO([" if (res_lsd > 9) {"])
+ AS_ECHO([" res_lsd ${opc}= 10;"])
+ AS_ECHO([" res_msd ${op}= 1;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" if (res_msd > 9) {"])
+ AS_ECHO([" res_msd ${opc}= 10;"])
+ AS_ECHO([" flags |= TME_M68K_FLAG_C | TME_M68K_FLAG_X;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" res = (res_msd << 4) + (res_lsd & 0xf);"])
+ AS_ECHO([" if (res == 0) flags |= TME_M68K_FLAG_N;"])
+ AS_ECHO([""])
# store the result
- $as_echo " /* store the result and set the flags: */"
+ AS_ECHO([" /* store the result and set the flags: */"])
if test $name != nbcd; then
- $as_echo " if (memory) {"
- $as_echo " if (!TME_M68K_SEQUENCE_RESTARTING) {"
- $as_echo " ic->tme_m68k_ireg_memx8 = res;"
- $as_echo " ic->_tme_m68k_ea_function_code = function_code;"
- $as_echo " ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ry);"
- $as_echo " ic->tme_m68k_ireg_ccr = flags;"
- $as_echo " }"
- $as_echo " tme_m68k_write_memx8(ic);"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " ic->tme_m68k_ireg_uint8(ry << 2) = res;"
- $as_echo " ic->tme_m68k_ireg_ccr = flags;"
- $as_echo " }"
+ AS_ECHO([" if (memory) {"])
+ AS_ECHO([" if (!TME_M68K_SEQUENCE_RESTARTING) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_memx8 = res;"])
+ AS_ECHO([" ic->_tme_m68k_ea_function_code = function_code;"])
+ AS_ECHO([" ic->_tme_m68k_ea_address = ic->tme_m68k_ireg_uint32(TME_M68K_IREG_A0 + ry);"])
+ AS_ECHO([" ic->tme_m68k_ireg_ccr = flags;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" tme_m68k_write_memx8(ic);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" ic->tme_m68k_ireg_uint8(ry << 2) = res;"])
+ AS_ECHO([" ic->tme_m68k_ireg_ccr = flags;"])
+ AS_ECHO([" }"])
else
- $as_echo " TME_M68K_INSN_OP1(tme_uint8_t) = res;"
- $as_echo " ic->tme_m68k_ireg_ccr = flags;"
+ AS_ECHO([" TME_M68K_INSN_OP1(tme_uint8_t) = res;"])
+ AS_ECHO([" ic->tme_m68k_ireg_ccr = flags;"])
fi
- $as_echo ""
- $as_echo " TME_M68K_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" TME_M68K_INSN_OK;"])
+ AS_ECHO(["}"])
done
# generate the ccr and sr functions:
@@ -1940,37 +1940,37 @@ for reg in ccr sr; do
# if we're making the header, just emit a declaration:
if $header; then
- $as_echo "TME_M68K_INSN_DECL(tme_m68k_${name}_${reg});"
+ AS_ECHO(["TME_M68K_INSN_DECL(tme_m68k_${name}_${reg});"])
continue
fi
# emit the function:
- $as_echo ""
- $as_echo "TME_M68K_INSN(tme_m68k_${name}_${reg})"
- $as_echo "{"
- $as_echo " tme_uint${size}_t reg;"
+ AS_ECHO([""])
+ AS_ECHO(["TME_M68K_INSN(tme_m68k_${name}_${reg})"])
+ AS_ECHO(["{"])
+ AS_ECHO([" tme_uint${size}_t reg;"])
# form the new register value:
src=0
- $as_echo_n " reg = "
+ AS_ECHO_N([" reg = "])
case $name in
- ori) $as_echo_n "ic->tme_m68k_ireg_${reg} | " ;;
- andi) $as_echo_n "ic->tme_m68k_ireg_${reg} & " ;;
- eori) $as_echo_n "ic->tme_m68k_ireg_${reg} ^ " ;;
+ ori) AS_ECHO_N(["ic->tme_m68k_ireg_${reg} | "]) ;;
+ andi) AS_ECHO_N(["ic->tme_m68k_ireg_${reg} & "]) ;;
+ eori) AS_ECHO_N(["ic->tme_m68k_ireg_${reg} ^ "]) ;;
move_to) size=16 ; src=1 ;;
esac
- $as_echo "(TME_M68K_INSN_OP${src}(tme_uint${size}_t) & TME_M68K_FLAG_"`$as_echo $reg | tr a-z A-Z`");"
+ AS_ECHO(["(TME_M68K_INSN_OP${src}(tme_uint${size}_t) & TME_M68K_FLAG_"`AS_ECHO([$reg]) | tr a-z A-Z`");"])
# sr changes are special:
if test $reg = sr; then
- $as_echo " TME_M68K_INSN_PRIV;"
- $as_echo " TME_M68K_INSN_CHANGE_SR(reg);"
+ AS_ECHO([" TME_M68K_INSN_PRIV;"])
+ AS_ECHO([" TME_M68K_INSN_CHANGE_SR(reg);"])
else
- $as_echo " ic->tme_m68k_ireg_${reg} = reg;"
+ AS_ECHO([" ic->tme_m68k_ireg_${reg} = reg;"])
fi
- $as_echo " TME_M68K_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([" TME_M68K_INSN_OK;"])
+ AS_ECHO(["}"])
done
done
@@ -1996,156 +1996,156 @@ for _sign in u s; do
# if we're making the header, just emit declarations:
if $header; then
- $as_echo "TME_M68K_INSN_DECL(tme_m68k_mul${_sign}${_size});"
- $as_echo "TME_M68K_INSN_DECL(tme_m68k_div${_sign}${_size});"
+ AS_ECHO(["TME_M68K_INSN_DECL(tme_m68k_mul${_sign}${_size});"])
+ AS_ECHO(["TME_M68K_INSN_DECL(tme_m68k_div${_sign}${_size});"])
continue
fi
# emit the multiply function:
- $as_echo ""
- $as_echo "TME_M68K_INSN(tme_m68k_mul${_sign}${_size})"
- $as_echo "{"
+ AS_ECHO([""])
+ AS_ECHO(["TME_M68K_INSN(tme_m68k_mul${_sign}${_size})"])
+ AS_ECHO(["{"])
if test $large = 64; then
- $as_echo "#ifndef TME_HAVE_INT${large}_T"
- $as_echo " abort();"
- $as_echo "#else /* TME_HAVE_INT${large}_T */"
- $as_echo " unsigned int flag_v;"
- $as_echo " int ireg_dh;"
+ AS_ECHO(["#ifndef TME_HAVE_INT${large}_T"])
+ AS_ECHO([" abort();"])
+ AS_ECHO(["#else /* TME_HAVE_INT${large}_T */"])
+ AS_ECHO([" unsigned int flag_v;"])
+ AS_ECHO([" int ireg_dh;"])
fi
- $as_echo " int ireg_dl;"
- $as_echo " tme_${sign}int${large}_t res;"
- $as_echo " tme_uint8_t flags;"
+ AS_ECHO([" int ireg_dl;"])
+ AS_ECHO([" tme_${sign}int${large}_t res;"])
+ AS_ECHO([" tme_uint8_t flags;"])
- $as_echo ""
- $as_echo " /* get the register containing the factor: */"
- $as_echo_n " ireg_dl = TME_M68K_IREG_D0 + "
+ AS_ECHO([""])
+ AS_ECHO([" /* get the register containing the factor: */"])
+ AS_ECHO_N([" ireg_dl = TME_M68K_IREG_D0 + "])
if test $size = s; then
- $as_echo "TME_M68K_INSN_OP0(tme_uint32_t);"
+ AS_ECHO(["TME_M68K_INSN_OP0(tme_uint32_t);"])
else
- $as_echo "TME_FIELD_EXTRACTU(TME_M68K_INSN_SPECOP, 12, 3);"
+ AS_ECHO(["TME_FIELD_EXTRACTU(TME_M68K_INSN_SPECOP, 12, 3);"])
fi
- $as_echo ""
- $as_echo " /* perform the multiplication: */"
- $as_echo " res = (((tme_${sign}int${large}_t) ic->tme_m68k_ireg_${sign}int${small}(ireg_dl${reg_size_shift}))"
- $as_echo " * TME_M68K_INSN_OP1(tme_${sign}int${small}_t));"
+ AS_ECHO([""])
+ AS_ECHO([" /* perform the multiplication: */"])
+ AS_ECHO([" res = (((tme_${sign}int${large}_t) ic->tme_m68k_ireg_${sign}int${small}(ireg_dl${reg_size_shift}))"])
+ AS_ECHO([" * TME_M68K_INSN_OP1(tme_${sign}int${small}_t));"])
- $as_echo ""
- $as_echo " /* store the result: */"
- $as_echo " ic->tme_m68k_ireg_${sign}int32(ireg_dl) = (tme_${sign}int32_t) res;"
+ AS_ECHO([""])
+ AS_ECHO([" /* store the result: */"])
+ AS_ECHO([" ic->tme_m68k_ireg_${sign}int32(ireg_dl) = (tme_${sign}int32_t) res;"])
if test $large = 64; then
- $as_echo " flag_v = TME_M68K_FLAG_V;"
- $as_echo " if (TME_M68K_INSN_SPECOP & TME_BIT(10)) {"
- $as_echo " flag_v = 0;"
- $as_echo " ireg_dh = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(TME_M68K_INSN_SPECOP, 0, 3);"
- $as_echo " ic->tme_m68k_ireg_${sign}int32(ireg_dh) = (tme_${sign}int32_t) (res >> 32);"
- $as_echo " }"
+ AS_ECHO([" flag_v = TME_M68K_FLAG_V;"])
+ AS_ECHO([" if (TME_M68K_INSN_SPECOP & TME_BIT(10)) {"])
+ AS_ECHO([" flag_v = 0;"])
+ AS_ECHO([" ireg_dh = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(TME_M68K_INSN_SPECOP, 0, 3);"])
+ AS_ECHO([" ic->tme_m68k_ireg_${sign}int32(ireg_dh) = (tme_${sign}int32_t) (res >> 32);"])
+ AS_ECHO([" }"])
fi
- $as_echo ""
- $as_echo " /* set the flags: */"
- $as_echo " flags = ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_X;"
- $as_echo " if (((tme_int${large}_t) res) < 0) flags |= TME_M68K_FLAG_N;"
- $as_echo " if (res == 0) flags |= TME_M68K_FLAG_Z;"
+ AS_ECHO([""])
+ AS_ECHO([" /* set the flags: */"])
+ AS_ECHO([" flags = ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_X;"])
+ AS_ECHO([" if (((tme_int${large}_t) res) < 0) flags |= TME_M68K_FLAG_N;"])
+ AS_ECHO([" if (res == 0) flags |= TME_M68K_FLAG_Z;"])
if test $large = 64; then
if test $_sign = s; then
- $as_echo_n " if (res > 0x7fffffffL || res < ((0L - 0x7fffffffL) - 1L)"
+ AS_ECHO_N([" if (res > 0x7fffffffL || res < ((0L - 0x7fffffffL) - 1L)"])
else
- $as_echo_n " if (res > 0xffffffffUL"
+ AS_ECHO_N([" if (res > 0xffffffffUL"])
fi
- $as_echo ") flags |= flag_v;"
+ AS_ECHO([") flags |= flag_v;"])
fi
- $as_echo " ic->tme_m68k_ireg_ccr = flags;"
+ AS_ECHO([" ic->tme_m68k_ireg_ccr = flags;"])
- $as_echo ""
- $as_echo " TME_M68K_INSN_OK;"
+ AS_ECHO([""])
+ AS_ECHO([" TME_M68K_INSN_OK;"])
if test $large = 64; then
- $as_echo "#endif /* TME_HAVE_INT${large}_T */"
+ AS_ECHO(["#endif /* TME_HAVE_INT${large}_T */"])
fi
- $as_echo "}"
+ AS_ECHO(["}"])
# emit the divide function:
- $as_echo ""
- $as_echo "TME_M68K_INSN(tme_m68k_div${_sign}${_size})"
- $as_echo "{"
+ AS_ECHO([""])
+ AS_ECHO(["TME_M68K_INSN(tme_m68k_div${_sign}${_size})"])
+ AS_ECHO(["{"])
if test $large = 64; then
- $as_echo "#ifndef TME_HAVE_INT${large}_T"
- $as_echo " abort();"
- $as_echo "#else /* TME_HAVE_INT${large}_T */"
- $as_echo " int ireg_dr;"
+ AS_ECHO(["#ifndef TME_HAVE_INT${large}_T"])
+ AS_ECHO([" abort();"])
+ AS_ECHO(["#else /* TME_HAVE_INT${large}_T */"])
+ AS_ECHO([" int ireg_dr;"])
fi
- $as_echo " int ireg_dq;"
- $as_echo " tme_${sign}int${large}_t dividend, quotient;"
- $as_echo " tme_${sign}int${small}_t divisor, remainder;"
- $as_echo " tme_uint8_t flags;"
-
- $as_echo ""
- $as_echo " /* get the register(s): */"
- $as_echo_n " ireg_dq = TME_M68K_IREG_D0 + "
+ AS_ECHO([" int ireg_dq;"])
+ AS_ECHO([" tme_${sign}int${large}_t dividend, quotient;"])
+ AS_ECHO([" tme_${sign}int${small}_t divisor, remainder;"])
+ AS_ECHO([" tme_uint8_t flags;"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* get the register(s): */"])
+ AS_ECHO_N([" ireg_dq = TME_M68K_IREG_D0 + "])
if test $size = s; then
- $as_echo "TME_M68K_INSN_OP0(tme_uint32_t);"
+ AS_ECHO(["TME_M68K_INSN_OP0(tme_uint32_t);"])
else
- $as_echo "TME_FIELD_EXTRACTU(TME_M68K_INSN_SPECOP, 12, 3);"
- $as_echo " ireg_dr = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(TME_M68K_INSN_SPECOP, 0, 3);"
+ AS_ECHO(["TME_FIELD_EXTRACTU(TME_M68K_INSN_SPECOP, 12, 3);"])
+ AS_ECHO([" ireg_dr = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(TME_M68K_INSN_SPECOP, 0, 3);"])
fi
- $as_echo ""
- $as_echo " /* form the dividend and the divisor: */"
+ AS_ECHO([""])
+ AS_ECHO([" /* form the dividend and the divisor: */"])
if test $large = 64; then
- $as_echo " if (TME_M68K_INSN_SPECOP & TME_BIT(10)) {"
- $as_echo " dividend = (tme_${sign}int${large}_t)"
- $as_echo " ((((tme_uint${large}_t) ic->tme_m68k_ireg_uint32(ireg_dr)) << 32)"
- $as_echo " | ic->tme_m68k_ireg_uint32(ireg_dq));"
- $as_echo " }"
- $as_echo " else"
- $as_echo_n " "
+ AS_ECHO([" if (TME_M68K_INSN_SPECOP & TME_BIT(10)) {"])
+ AS_ECHO([" dividend = (tme_${sign}int${large}_t)"])
+ AS_ECHO([" ((((tme_uint${large}_t) ic->tme_m68k_ireg_uint32(ireg_dr)) << 32)"])
+ AS_ECHO([" | ic->tme_m68k_ireg_uint32(ireg_dq));"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else"])
+ AS_ECHO_N([" "])
fi
- $as_echo " dividend = (tme_${sign}int${large}_t) ic->tme_m68k_ireg_${sign}int32(ireg_dq);"
- $as_echo " divisor = TME_M68K_INSN_OP1(tme_${sign}int${small}_t);"
- $as_echo " if (divisor == 0) {"
- $as_echo " ic->tme_m68k_ireg_pc_last = ic->tme_m68k_ireg_pc;"
- $as_echo " ic->tme_m68k_ireg_pc = ic->tme_m68k_ireg_pc_next;"
- $as_echo " TME_M68K_INSN_EXCEPTION(TME_M68K_EXCEPTION_INST(TME_M68K_VECTOR_DIV0));"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* do the division: */"
- $as_echo " quotient = dividend / divisor;"
- $as_echo " remainder = dividend % divisor;"
-
- $as_echo ""
- $as_echo " /* set the flags and return the quotient and remainder: */"
- $as_echo " flags = ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_X;"
- $as_echo_n " if ("
+ AS_ECHO([" dividend = (tme_${sign}int${large}_t) ic->tme_m68k_ireg_${sign}int32(ireg_dq);"])
+ AS_ECHO([" divisor = TME_M68K_INSN_OP1(tme_${sign}int${small}_t);"])
+ AS_ECHO([" if (divisor == 0) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_pc_last = ic->tme_m68k_ireg_pc;"])
+ AS_ECHO([" ic->tme_m68k_ireg_pc = ic->tme_m68k_ireg_pc_next;"])
+ AS_ECHO([" TME_M68K_INSN_EXCEPTION(TME_M68K_EXCEPTION_INST(TME_M68K_VECTOR_DIV0));"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* do the division: */"])
+ AS_ECHO([" quotient = dividend / divisor;"])
+ AS_ECHO([" remainder = dividend % divisor;"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* set the flags and return the quotient and remainder: */"])
+ AS_ECHO([" flags = ic->tme_m68k_ireg_ccr & TME_M68K_FLAG_X;"])
+ AS_ECHO_N([" if ("])
case "${small}${_sign}" in
- 16s) $as_echo_n "quotient > 0x7fff || quotient < -32768" ;;
- 16u) $as_echo_n "quotient > 0xffff" ;;
- 32s) $as_echo_n "quotient > 0x7fffffffL || quotient < ((0L - 0x7fffffffL) - 1L)" ;;
- 32u) $as_echo_n "quotient > 0xffffffffUL" ;;
+ 16s) AS_ECHO_N(["quotient > 0x7fff || quotient < -32768"]) ;;
+ 16u) AS_ECHO_N(["quotient > 0xffff"]) ;;
+ 32s) AS_ECHO_N(["quotient > 0x7fffffffL || quotient < ((0L - 0x7fffffffL) - 1L)"]) ;;
+ 32u) AS_ECHO_N(["quotient > 0xffffffffUL"]) ;;
esac
- $as_echo ") {"
- $as_echo " flags |= TME_M68K_FLAG_V;"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " if (((tme_int${small}_t) quotient) < 0) flags |= TME_M68K_FLAG_N;"
- $as_echo " if (quotient == 0) flags |= TME_M68K_FLAG_Z;"
- $as_echo " ic->tme_m68k_ireg_${sign}int${small}(ireg_dq${reg_size_shift}) = (tme_${sign}int${small}_t) quotient;"
+ AS_ECHO([") {"])
+ AS_ECHO([" flags |= TME_M68K_FLAG_V;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" if (((tme_int${small}_t) quotient) < 0) flags |= TME_M68K_FLAG_N;"])
+ AS_ECHO([" if (quotient == 0) flags |= TME_M68K_FLAG_Z;"])
+ AS_ECHO([" ic->tme_m68k_ireg_${sign}int${small}(ireg_dq${reg_size_shift}) = (tme_${sign}int${small}_t) quotient;"])
if test $small = 16; then
- $as_echo " ic->tme_m68k_ireg_${sign}int${small}((ireg_dq${reg_size_shift}) + 1) = remainder;"
+ AS_ECHO([" ic->tme_m68k_ireg_${sign}int${small}((ireg_dq${reg_size_shift}) + 1) = remainder;"])
else
- $as_echo " if (ireg_dr != ireg_dq) {"
- $as_echo " ic->tme_m68k_ireg_${sign}int${small}(ireg_dr) = remainder;"
- $as_echo " }"
+ AS_ECHO([" if (ireg_dr != ireg_dq) {"])
+ AS_ECHO([" ic->tme_m68k_ireg_${sign}int${small}(ireg_dr) = remainder;"])
+ AS_ECHO([" }"])
fi
- $as_echo " }"
- $as_echo " ic->tme_m68k_ireg_ccr = flags;"
+ AS_ECHO([" }"])
+ AS_ECHO([" ic->tme_m68k_ireg_ccr = flags;"])
- $as_echo ""
- $as_echo " TME_M68K_INSN_OK;"
+ AS_ECHO([""])
+ AS_ECHO([" TME_M68K_INSN_OK;"])
if test $large = 64; then
- $as_echo "#endif /* TME_HAVE_INT${large}_T */"
+ AS_ECHO(["#endif /* TME_HAVE_INT${large}_T */"])
fi
- $as_echo "}"
+ AS_ECHO(["}"])
done
done
diff --git a/ic/m68k/m68k-misc-auto.m4 b/ic/m68k/m68k-misc-auto.m4
index b399e3b..e31a01b 100644
--- a/ic/m68k/m68k-misc-auto.m4
+++ b/ic/m68k/m68k-misc-auto.m4
@@ -53,92 +53,92 @@ EOF
# we need our own inclusion protection, since the instruction word
# fetch macros need to be multiply included:
if $header; then
- $as_echo ""
- $as_echo "#ifndef _IC_M68K_MISC_H"
- $as_echo "#define _IC_M68K_MISC_H"
+ AS_ECHO([""])
+ AS_ECHO(["#ifndef _IC_M68K_MISC_H"])
+ AS_ECHO(["#define _IC_M68K_MISC_H"])
fi
# emit the register mapping macros:
if $header; then
- $as_echo ""
- $as_echo "/* the register mapping: */"
- $as_echo "#define TME_M68K_IREG_UNDEF (-1)"
+ AS_ECHO([""])
+ AS_ECHO(["/* the register mapping: */"])
+ AS_ECHO(["#define TME_M68K_IREG_UNDEF (-1)"])
ireg32_next=0
# NB: these are in a deliberate order, matching the order of
# registers in instruction encodings:
for regtype in d a; do
- capregtype=`$as_echo ${regtype} | tr a-z A-Z`
+ capregtype=`AS_ECHO([${regtype}]) | tr a-z A-Z`
for regnum in 0 1 2 3 4 5 6 7; do
- $as_echo "#define TME_M68K_IREG_${capregtype}${regnum} (${ireg32_next})"
- $as_echo "#define tme_m68k_ireg_${regtype}${regnum} tme_m68k_ireg_uint32(TME_M68K_IREG_${capregtype}${regnum})"
+ AS_ECHO(["#define TME_M68K_IREG_${capregtype}${regnum} (${ireg32_next})"])
+ AS_ECHO(["#define tme_m68k_ireg_${regtype}${regnum} tme_m68k_ireg_uint32(TME_M68K_IREG_${capregtype}${regnum})"])
ireg32_next=`expr ${ireg32_next} + 1`
done
done
# the current, next, and last program counter:
- $as_echo "#define TME_M68K_IREG_PC (${ireg32_next})"
- $as_echo "#define tme_m68k_ireg_pc tme_m68k_ireg_uint32(TME_M68K_IREG_PC)"
+ AS_ECHO(["#define TME_M68K_IREG_PC (${ireg32_next})"])
+ AS_ECHO(["#define tme_m68k_ireg_pc tme_m68k_ireg_uint32(TME_M68K_IREG_PC)"])
ireg32_next=`expr ${ireg32_next} + 1`
- $as_echo "#define TME_M68K_IREG_PC_NEXT (${ireg32_next})"
- $as_echo "#define tme_m68k_ireg_pc_next tme_m68k_ireg_uint32(TME_M68K_IREG_PC_NEXT)"
+ AS_ECHO(["#define TME_M68K_IREG_PC_NEXT (${ireg32_next})"])
+ AS_ECHO(["#define tme_m68k_ireg_pc_next tme_m68k_ireg_uint32(TME_M68K_IREG_PC_NEXT)"])
ireg32_next=`expr ${ireg32_next} + 1`
- $as_echo "#define TME_M68K_IREG_PC_LAST (${ireg32_next})"
- $as_echo "#define tme_m68k_ireg_pc_last tme_m68k_ireg_uint32(TME_M68K_IREG_PC_LAST)"
+ AS_ECHO(["#define TME_M68K_IREG_PC_LAST (${ireg32_next})"])
+ AS_ECHO(["#define tme_m68k_ireg_pc_last tme_m68k_ireg_uint32(TME_M68K_IREG_PC_LAST)"])
ireg32_next=`expr ${ireg32_next} + 1`
# the status register and ccr:
- $as_echo "#define tme_m68k_ireg_sr tme_m68k_ireg_uint16(${ireg32_next} << 1)"
- $as_echo "#define tme_m68k_ireg_ccr tme_m68k_ireg_uint8(${ireg32_next} << 2)"
+ AS_ECHO(["#define tme_m68k_ireg_sr tme_m68k_ireg_uint16(${ireg32_next} << 1)"])
+ AS_ECHO(["#define tme_m68k_ireg_ccr tme_m68k_ireg_uint8(${ireg32_next} << 2)"])
ireg32_next=`expr ${ireg32_next} + 1`
# the shadow status register and format/offset word:
- $as_echo "#define TME_M68K_IREG_SHADOW_SR (${ireg32_next} << 1)"
- $as_echo "#define tme_m68k_ireg_shadow_sr tme_m68k_ireg_uint16(TME_M68K_IREG_SHADOW_SR)"
- $as_echo "#define TME_M68K_IREG_FORMAT_OFFSET ((${ireg32_next} << 1) + 1)"
- $as_echo "#define tme_m68k_ireg_format_offset tme_m68k_ireg_uint16(TME_M68K_IREG_FORMAT_OFFSET)"
+ AS_ECHO(["#define TME_M68K_IREG_SHADOW_SR (${ireg32_next} << 1)"])
+ AS_ECHO(["#define tme_m68k_ireg_shadow_sr tme_m68k_ireg_uint16(TME_M68K_IREG_SHADOW_SR)"])
+ AS_ECHO(["#define TME_M68K_IREG_FORMAT_OFFSET ((${ireg32_next} << 1) + 1)"])
+ AS_ECHO(["#define tme_m68k_ireg_format_offset tme_m68k_ireg_uint16(TME_M68K_IREG_FORMAT_OFFSET)"])
ireg32_next=`expr ${ireg32_next} + 1`
# the memory buffers:
for mem_which in x y z; do
- cap_mem_which=`$as_echo ${mem_which} | tr a-z A-Z`
- $as_echo "#define TME_M68K_IREG_MEM${cap_mem_which}32 (${ireg32_next})"
- $as_echo "#define tme_m68k_ireg_mem${mem_which}32 tme_m68k_ireg_uint32(TME_M68K_IREG_MEM${cap_mem_which}32)"
- $as_echo "#define TME_M68K_IREG_MEM${cap_mem_which}16 (${ireg32_next} << 1)"
- $as_echo "#define tme_m68k_ireg_mem${mem_which}16 tme_m68k_ireg_uint16(TME_M68K_IREG_MEM${cap_mem_which}16)"
- $as_echo "#define TME_M68K_IREG_MEM${cap_mem_which}8 (${ireg32_next} << 2)"
- $as_echo "#define tme_m68k_ireg_mem${mem_which}8 tme_m68k_ireg_uint8(TME_M68K_IREG_MEM${cap_mem_which}8)"
+ cap_mem_which=`AS_ECHO([${mem_which}]) | tr a-z A-Z`
+ AS_ECHO(["#define TME_M68K_IREG_MEM${cap_mem_which}32 (${ireg32_next})"])
+ AS_ECHO(["#define tme_m68k_ireg_mem${mem_which}32 tme_m68k_ireg_uint32(TME_M68K_IREG_MEM${cap_mem_which}32)"])
+ AS_ECHO(["#define TME_M68K_IREG_MEM${cap_mem_which}16 (${ireg32_next} << 1)"])
+ AS_ECHO(["#define tme_m68k_ireg_mem${mem_which}16 tme_m68k_ireg_uint16(TME_M68K_IREG_MEM${cap_mem_which}16)"])
+ AS_ECHO(["#define TME_M68K_IREG_MEM${cap_mem_which}8 (${ireg32_next} << 2)"])
+ AS_ECHO(["#define tme_m68k_ireg_mem${mem_which}8 tme_m68k_ireg_uint8(TME_M68K_IREG_MEM${cap_mem_which}8)"])
ireg32_next=`expr ${ireg32_next} + 1`
done
# the control registers:
for reg in usp isp msp sfc dfc vbr cacr caar; do
- capreg=`$as_echo $reg | tr a-z A-Z`
- $as_echo "#define TME_M68K_IREG_${capreg} (${ireg32_next})"
- $as_echo "#define tme_m68k_ireg_${reg} tme_m68k_ireg_uint32(TME_M68K_IREG_${capreg})"
+ capreg=`AS_ECHO([$reg]) | tr a-z A-Z`
+ AS_ECHO(["#define TME_M68K_IREG_${capreg} (${ireg32_next})"])
+ AS_ECHO(["#define tme_m68k_ireg_${reg} tme_m68k_ireg_uint32(TME_M68K_IREG_${capreg})"])
ireg32_next=`expr ${ireg32_next} + 1`
done
# this is the count of variable 32-bit registers:
- $as_echo "#define TME_M68K_IREG32_COUNT (${ireg32_next})"
+ AS_ECHO(["#define TME_M68K_IREG32_COUNT (${ireg32_next})"])
# the immediate register. there are actually three 32-bit
# registers in a row, to allow the fpgen specop to fetch up to a
# 96-bit immediate:
- $as_echo "#define TME_M68K_IREG_IMM32 (${ireg32_next})"
- $as_echo "#define tme_m68k_ireg_imm32 tme_m68k_ireg_uint32(TME_M68K_IREG_IMM32)"
+ AS_ECHO(["#define TME_M68K_IREG_IMM32 (${ireg32_next})"])
+ AS_ECHO(["#define tme_m68k_ireg_imm32 tme_m68k_ireg_uint32(TME_M68K_IREG_IMM32)"])
ireg32_next=`expr ${ireg32_next} + 3`
# the effective address register:
- $as_echo "#define TME_M68K_IREG_EA (${ireg32_next})"
- $as_echo "#define tme_m68k_ireg_ea tme_m68k_ireg_uint32(TME_M68K_IREG_EA)"
+ AS_ECHO(["#define TME_M68K_IREG_EA (${ireg32_next})"])
+ AS_ECHO(["#define tme_m68k_ireg_ea tme_m68k_ireg_uint32(TME_M68K_IREG_EA)"])
ireg32_next=`expr ${ireg32_next} + 1`
# the constant registers:
for reg in zero one two three four five six seven eight; do
- capreg=`$as_echo $reg | tr a-z A-Z`
- $as_echo "#define TME_M68K_IREG_${capreg} (${ireg32_next})"
+ capreg=`AS_ECHO([$reg]) | tr a-z A-Z`
+ AS_ECHO(["#define TME_M68K_IREG_${capreg} (${ireg32_next})"])
ireg32_next=`expr ${ireg32_next} + 1`
done
fi
@@ -147,9 +147,9 @@ fi
# flag variables is deliberate, to make this array indexable with the
# condition code register:
if $header; then :; else
- $as_echo ""
- $as_echo "/* the flags->conditions mapping: */"
- $as_echo "const tme_uint16_t _tme_m68k_conditions[[32]] = {"
+ AS_ECHO([""])
+ AS_ECHO(["/* the flags->conditions mapping: */"])
+ AS_ECHO(["const tme_uint16_t _tme_m68k_conditions[[32]] = {"])
for xflag in 0 1; do
for nflag in 0 1; do
for zflag in 0 1; do
@@ -157,78 +157,78 @@ if $header; then :; else
for cflag in 0 1; do
# the True condition:
- $as_echo_n "TME_BIT(TME_M68K_C_T)"
+ AS_ECHO_N(["TME_BIT(TME_M68K_C_T)"])
# the High condition:
if test $cflag != 1 && test $zflag != 1; then
- $as_echo_n " | TME_BIT(TME_M68K_C_HI)"
+ AS_ECHO_N([" | TME_BIT(TME_M68K_C_HI)"])
fi
# the Low or Same condition:
if test $cflag = 1 || test $zflag = 1; then
- $as_echo_n " | TME_BIT(TME_M68K_C_LS)"
+ AS_ECHO_N([" | TME_BIT(TME_M68K_C_LS)"])
fi
# the Carry Clear and Carry Set conditions:
if test $cflag != 1; then
- $as_echo_n " | TME_BIT(TME_M68K_C_CC)"
+ AS_ECHO_N([" | TME_BIT(TME_M68K_C_CC)"])
else
- $as_echo_n " | TME_BIT(TME_M68K_C_CS)"
+ AS_ECHO_N([" | TME_BIT(TME_M68K_C_CS)"])
fi
# the Not Equal and Equal conditions:
if test $zflag != 1; then
- $as_echo_n " | TME_BIT(TME_M68K_C_NE)"
+ AS_ECHO_N([" | TME_BIT(TME_M68K_C_NE)"])
else
- $as_echo_n " | TME_BIT(TME_M68K_C_EQ)"
+ AS_ECHO_N([" | TME_BIT(TME_M68K_C_EQ)"])
fi
# the Overflow Clear and Overflow Set conditions:
if test $vflag != 1; then
- $as_echo_n " | TME_BIT(TME_M68K_C_VC)"
+ AS_ECHO_N([" | TME_BIT(TME_M68K_C_VC)"])
else
- $as_echo_n " | TME_BIT(TME_M68K_C_VS)"
+ AS_ECHO_N([" | TME_BIT(TME_M68K_C_VS)"])
fi
# the Plus and Minus conditions:
if test $nflag != 1; then
- $as_echo_n " | TME_BIT(TME_M68K_C_PL)"
+ AS_ECHO_N([" | TME_BIT(TME_M68K_C_PL)"])
else
- $as_echo_n " | TME_BIT(TME_M68K_C_MI)"
+ AS_ECHO_N([" | TME_BIT(TME_M68K_C_MI)"])
fi
# the Greater or Equal condition:
if (test $nflag = 1 && test $vflag = 1) || \
(test $nflag != 1 && test $vflag != 1); then
- $as_echo_n " | TME_BIT(TME_M68K_C_GE)"
+ AS_ECHO_N([" | TME_BIT(TME_M68K_C_GE)"])
fi
# the Less Than condition:
if (test $nflag = 1 && test $vflag != 1) || \
(test $nflag != 1 && test $vflag = 1); then
- $as_echo_n " | TME_BIT(TME_M68K_C_LT)"
+ AS_ECHO_N([" | TME_BIT(TME_M68K_C_LT)"])
fi
# the Greater Than condition:
if (test $nflag = 1 && test $vflag = 1 && test $zflag != 1) || \
(test $nflag != 1 && test $vflag != 1 && test $zflag != 1); then
- $as_echo_n " | TME_BIT(TME_M68K_C_GT)"
+ AS_ECHO_N([" | TME_BIT(TME_M68K_C_GT)"])
fi
# the Less Than or Equal condition:
if test $zflag = 1 || \
(test $nflag = 1 && test $vflag != 1) || \
(test $nflag != 1 && test $vflag = 1); then
- $as_echo_n " | TME_BIT(TME_M68K_C_LE)"
+ AS_ECHO_N([" | TME_BIT(TME_M68K_C_LE)"])
fi
- $as_echo ","
+ AS_ECHO([","])
done
done
done
done
done
- $as_echo "};"
+ AS_ECHO(["};"])
fi
# emit the instruction word fetch macros:
@@ -236,8 +236,8 @@ if $header; then
# emit the simple signed and unsigned fetch macros:
#
- $as_echo ""
- $as_echo "/* the simple signed and unsigned fetch macros: */"
+ AS_ECHO([""])
+ AS_ECHO(["/* the simple signed and unsigned fetch macros: */"])
# permute over size:
#
@@ -248,36 +248,36 @@ if $header; then
for capsign in U S; do
if test $capsign = U; then sign=u ; un=un ; else sign= ; un= ; fi
- $as_echo "#define _TME_M68K_EXECUTE_FETCH_${capsign}${size}(v) \\"
- $as_echo " _TME_M68K_EXECUTE_FETCH_${size}(tme_${sign}int${size}_t, v)"
+ AS_ECHO(["#define _TME_M68K_EXECUTE_FETCH_${capsign}${size}(v) \\"])
+ AS_ECHO([" _TME_M68K_EXECUTE_FETCH_${size}(tme_${sign}int${size}_t, v)"])
if test ${size} = 16 && test ${capsign} = U; then
- $as_echo "#define _TME_M68K_EXECUTE_FETCH_${capsign}${size}_FIXED(v, field) \\"
- $as_echo " _TME_M68K_EXECUTE_FETCH_${size}_FIXED(tme_${sign}int${size}_t, v, field)"
+ AS_ECHO(["#define _TME_M68K_EXECUTE_FETCH_${capsign}${size}_FIXED(v, field) \\"])
+ AS_ECHO([" _TME_M68K_EXECUTE_FETCH_${size}_FIXED(tme_${sign}int${size}_t, v, field)"])
fi
done
done
- $as_echo ""
- $as_echo "#endif /* _IC_M68K_MISC_H */"
+ AS_ECHO([""])
+ AS_ECHO(["#endif /* _IC_M68K_MISC_H */"])
# permute for the fast vs. slow executors:
for executor in fast slow; do
- $as_echo ""
- $as_echo_n "#if"
- if test $executor = slow; then $as_echo_n "n"; fi
- $as_echo "def _TME_M68K_EXECUTE_FAST"
- $as_echo ""
- $as_echo "/* these macros are for the ${executor} executor: */"
+ AS_ECHO([""])
+ AS_ECHO_N(["#if"])
+ if test $executor = slow; then AS_ECHO_N(["n"]); fi
+ AS_ECHO(["def _TME_M68K_EXECUTE_FAST"])
+ AS_ECHO([""])
+ AS_ECHO(["/* these macros are for the ${executor} executor: */"])
# permute over size:
#
for size in 16 32; do
- $as_echo ""
- $as_echo "/* this fetches a ${size}-bit value for the ${executor} executor: */"
- $as_echo "#undef _TME_M68K_EXECUTE_FETCH_${size}"
- $as_echo "#define _TME_M68K_EXECUTE_FETCH_${size}(type, v) \\"
+ AS_ECHO([""])
+ AS_ECHO(["/* this fetches a ${size}-bit value for the ${executor} executor: */"])
+ AS_ECHO(["#undef _TME_M68K_EXECUTE_FETCH_${size}"])
+ AS_ECHO(["#define _TME_M68K_EXECUTE_FETCH_${size}(type, v) \\"])
if test $executor = slow; then
@@ -285,13 +285,13 @@ if $header; then
#
offset_fetch="ic->_tme_m68k_insn_fetch_slow_next"
- $as_echo " /* macros for the ${executor} executor are simple, because \\"
- $as_echo " tme_m68k_fetch${size}() takes care of all endianness, alignment, \\"
- $as_echo " and atomic issues, and also stores the fetched value in the \\"
- $as_echo " instruction fetch buffer (if a previous fetch before a fault \\"
- $as_echo " didn't store all or part of it there already): */ \\"
- $as_echo " (v) = (type) tme_m68k_fetch${size}(ic, linear_pc); \\"
- $as_echo " linear_pc += sizeof(tme_uint${size}_t)"
+ AS_ECHO([" /* macros for the ${executor} executor are simple, because \\"])
+ AS_ECHO([" tme_m68k_fetch${size}() takes care of all endianness, alignment, \\"])
+ AS_ECHO([" and atomic issues, and also stores the fetched value in the \\"])
+ AS_ECHO([" instruction fetch buffer (if a previous fetch before a fault \\"])
+ AS_ECHO([" didn't store all or part of it there already): */ \\"])
+ AS_ECHO([" (v) = (type) tme_m68k_fetch${size}(ic, linear_pc); \\"])
+ AS_ECHO([" linear_pc += sizeof(tme_uint${size}_t)"])
else
@@ -299,31 +299,31 @@ if $header; then
#
offset_fetch="(fetch_fast_next - ic->_tme_m68k_insn_fetch_fast_start)"
- $as_echo " /* use the raw fetch macro to fetch the value into the variable, \\"
- $as_echo " and then save it in the instruction buffer. the save doesn't \\"
- $as_echo " need to be atomic; no one else can see the instruction buffer. \\"
- $as_echo " however, the raw fetch macro has already advanced fetch_fast_next, \\"
- $as_echo " so we need to compensate for that here: */ \\"
- $as_echo " __TME_M68K_EXECUTE_FETCH_${size}(type, v); \\"
- $as_echo " tme_memory_write${size}(((tme_uint${size}_t *) ((((tme_uint8_t *) &ic->_tme_m68k_insn_fetch_buffer[[0]]) - sizeof(tme_uint${size}_t)) + ${offset_fetch})), (tme_uint${size}_t) (v), sizeof(tme_uint16_t))"
-
- $as_echo ""
- $as_echo "/* this does a raw fetch of a ${size}-bit value for the ${executor} executor: */"
- $as_echo "#undef __TME_M68K_EXECUTE_FETCH_${size}"
- $as_echo "#define __TME_M68K_EXECUTE_FETCH_${size}(type, v) \\"
- $as_echo " /* if we can't do the fast read, we need to redispatch: */ \\"
- $as_echo " /* NB: checks in tme_m68k_go_slow(), and proper setting of \\"
- $as_echo " ic->_tme_m68k_insn_fetch_fast_last in _TME_M68K_EXECUTE_NAME(), \\"
- $as_echo " allow us to do a simple pointer comparison here, for \\"
- $as_echo " any fetch size: */ \\"
- $as_echo " if (__tme_predict_false(fetch_fast_next > ic->_tme_m68k_insn_fetch_fast_last)) \\"
- $as_echo " goto _tme_m68k_fast_fetch_failed; \\"
- $as_echo " (v) = ((type) \\"
- $as_echo " tme_betoh_u${size}(tme_memory_bus_read${size}((const tme_shared tme_uint${size}_t *) fetch_fast_next, \\"
- $as_echo " tlb->tme_m68k_tlb_bus_rwlock, \\"
- $as_echo " sizeof(tme_uint16_t), \\"
- $as_echo " sizeof(tme_uint32_t)))); \\"
- $as_echo " fetch_fast_next += sizeof(tme_uint${size}_t)"
+ AS_ECHO([" /* use the raw fetch macro to fetch the value into the variable, \\"])
+ AS_ECHO([" and then save it in the instruction buffer. the save doesn't \\"])
+ AS_ECHO([" need to be atomic; no one else can see the instruction buffer. \\"])
+ AS_ECHO([" however, the raw fetch macro has already advanced fetch_fast_next, \\"])
+ AS_ECHO([" so we need to compensate for that here: */ \\"])
+ AS_ECHO([" __TME_M68K_EXECUTE_FETCH_${size}(type, v); \\"])
+ AS_ECHO([" tme_memory_write${size}(((tme_uint${size}_t *) ((((tme_uint8_t *) &ic->_tme_m68k_insn_fetch_buffer[[0]]) - sizeof(tme_uint${size}_t)) + ${offset_fetch})), (tme_uint${size}_t) (v), sizeof(tme_uint16_t))"])
+
+ AS_ECHO([""])
+ AS_ECHO(["/* this does a raw fetch of a ${size}-bit value for the ${executor} executor: */"])
+ AS_ECHO(["#undef __TME_M68K_EXECUTE_FETCH_${size}"])
+ AS_ECHO(["#define __TME_M68K_EXECUTE_FETCH_${size}(type, v) \\"])
+ AS_ECHO([" /* if we can't do the fast read, we need to redispatch: */ \\"])
+ AS_ECHO([" /* NB: checks in tme_m68k_go_slow(), and proper setting of \\"])
+ AS_ECHO([" ic->_tme_m68k_insn_fetch_fast_last in _TME_M68K_EXECUTE_NAME(), \\"])
+ AS_ECHO([" allow us to do a simple pointer comparison here, for \\"])
+ AS_ECHO([" any fetch size: */ \\"])
+ AS_ECHO([" if (__tme_predict_false(fetch_fast_next > ic->_tme_m68k_insn_fetch_fast_last)) \\"])
+ AS_ECHO([" goto _tme_m68k_fast_fetch_failed; \\"])
+ AS_ECHO([" (v) = ((type) \\"])
+ AS_ECHO([" tme_betoh_u${size}(tme_memory_bus_read${size}((const tme_shared tme_uint${size}_t *) fetch_fast_next, \\"])
+ AS_ECHO([" tlb->tme_m68k_tlb_bus_rwlock, \\"])
+ AS_ECHO([" sizeof(tme_uint16_t), \\"])
+ AS_ECHO([" sizeof(tme_uint32_t)))); \\"])
+ AS_ECHO([" fetch_fast_next += sizeof(tme_uint${size}_t)"])
fi
# if this size doesn't get a fixed fetch macro, continue now:
@@ -332,23 +332,23 @@ if $header; then
continue
fi
- $as_echo ""
- $as_echo "/* this fetches a ${size}-bit value at a fixed instruction position"
- $as_echo " for the ${executor} executor: */"
- $as_echo "#undef _TME_M68K_EXECUTE_FETCH_${size}_FIXED"
- $as_echo "#define _TME_M68K_EXECUTE_FETCH_${size}_FIXED(type, v, field) \\"
- $as_echo " assert(&((struct tme_m68k *) 0)->field \\"
- $as_echo " == (type *) (((tme_uint8_t *) &((struct tme_m68k *) 0)->_tme_m68k_insn_fetch_buffer[[0]]) + ${offset_fetch})); \\"
- $as_echo_n " "
- if test ${executor} = fast; then $as_echo_n _ ; fi
- $as_echo "_TME_M68K_EXECUTE_FETCH_${size}(type, v)"
+ AS_ECHO([""])
+ AS_ECHO(["/* this fetches a ${size}-bit value at a fixed instruction position"])
+ AS_ECHO([" for the ${executor} executor: */"])
+ AS_ECHO(["#undef _TME_M68K_EXECUTE_FETCH_${size}_FIXED"])
+ AS_ECHO(["#define _TME_M68K_EXECUTE_FETCH_${size}_FIXED(type, v, field) \\"])
+ AS_ECHO([" assert(&((struct tme_m68k *) 0)->field \\"])
+ AS_ECHO([" == (type *) (((tme_uint8_t *) &((struct tme_m68k *) 0)->_tme_m68k_insn_fetch_buffer[[0]]) + ${offset_fetch})); \\"])
+ AS_ECHO_N([" "])
+ if test ${executor} = fast; then AS_ECHO_N([_]) ; fi
+ AS_ECHO(["_TME_M68K_EXECUTE_FETCH_${size}(type, v)"])
done
- $as_echo ""
- $as_echo_n "#endif /* "
- if test $executor = slow; then $as_echo_n "!"; fi
- $as_echo "_TME_M68K_EXECUTE_FAST */"
+ AS_ECHO([""])
+ AS_ECHO_N(["#endif /* "])
+ if test $executor = slow; then AS_ECHO_N(["!"]); fi
+ AS_ECHO(["_TME_M68K_EXECUTE_FAST */"])
done
fi
--
2.47.0