File 0008-sparc-bus-auto.m4-sparc-fpu-auto.m4-sparc-insns-auto.patch of Package tme
From 4c6e74cd709fe74e07648d1d656475a21d8dd72d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= <kkaempf@gmail.com>
Date: Thu, 3 Oct 2024 15:47:37 +0200
Subject: [PATCH 08/12]
sparc-bus-auto.m4,sparc-fpu-auto.m4,sparc-insns-auto.m4,sparc-misc-auto.m4,sparc-vis-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/sparc/sparc-bus-auto.m4 | 34 +-
ic/sparc/sparc-fpu-auto.m4 | 978 ++++-----
ic/sparc/sparc-insns-auto.m4 | 3710 +++++++++++++++++-----------------
ic/sparc/sparc-misc-auto.m4 | 130 +-
ic/sparc/sparc-vis-auto.m4 | 212 +-
5 files changed, 2532 insertions(+), 2532 deletions(-)
diff --git a/ic/sparc/sparc-bus-auto.m4 b/ic/sparc/sparc-bus-auto.m4
index e7c0996..443fdc7 100644
--- a/ic/sparc/sparc-bus-auto.m4
+++ b/ic/sparc/sparc-bus-auto.m4
@@ -83,9 +83,9 @@ EOF
# emit the 32-bit bus router:
if $header; then :; else
- $as_echo ""
- $as_echo "/* the 32-bit bus router used on the early SPARCs: */"
- $as_echo "static const tme_bus_lane_t tme_sparc32_router[[TME_SPARC_BUS_ROUTER_SIZE(TME_BUS32_LOG2)]] = {"
+ AS_ECHO([""])
+ AS_ECHO(["/* the 32-bit bus router used on the early SPARCs: */"])
+ AS_ECHO(["static const tme_bus_lane_t tme_sparc32_router[[TME_SPARC_BUS_ROUTER_SIZE(TME_BUS32_LOG2)]] = {"])
# permute over maximum cycle size:
for transfer in 1 2 3 4; do
@@ -140,12 +140,12 @@ if $header; then :; else
opn_lane=`expr 3 - \( ${address} % ${port_size} \)`
op3_lane=`expr \( ${opn_lane} \) - \( 3 - ${opn} \)`
- $as_echo ""
- $as_echo " /* [[sparc]] initiator maximum cycle size: "`expr ${transfer} \* 8`" bits"
- $as_echo " [[sparc]] 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([" /* [[sparc]] initiator maximum cycle size: "`expr ${transfer} \* 8`" bits"])
+ AS_ECHO([" [[sparc]] 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
@@ -246,33 +246,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/sparc/sparc-fpu-auto.m4 b/ic/sparc/sparc-fpu-auto.m4
index b5c199d..87056ad 100644
--- a/ic/sparc/sparc-fpu-auto.m4
+++ b/ic/sparc/sparc-fpu-auto.m4
@@ -53,7 +53,7 @@ EOF
# the precision information helper script:
#
-ieee754_precision_sh=`$as_echo $0 | sed -e "s%$PROG%../ieee754/ieee754-precision.sh%"`
+ieee754_precision_sh=`AS_ECHO([$0]) | sed -e "s%$PROG%../ieee754/ieee754-precision.sh%"`
# permute for the different precisions:
#
@@ -154,8 +154,8 @@ EOF
done
if $header; then :; else
- $as_echo "#define _TME_SPARC_FPU_UNIMPL tme_sparc_fpu_exception(ic, TME_SPARC_FSR_FTT_unimplemented_FPop)"
- $as_echo "#define _TME_SPARC_FPU_UNIMPL_IF(flags) do { if ((ic->tme_sparc_fpu_flags & (flags)) != 0) { _TME_SPARC_FPU_UNIMPL; } } while (/* CONSTCOND */ 0)"
+ AS_ECHO(["#define _TME_SPARC_FPU_UNIMPL tme_sparc_fpu_exception(ic, TME_SPARC_FSR_FTT_unimplemented_FPop)"])
+ AS_ECHO(["#define _TME_SPARC_FPU_UNIMPL_IF(flags) do { if ((ic->tme_sparc_fpu_flags & (flags)) != 0) { _TME_SPARC_FPU_UNIMPL; } } while (/* CONSTCOND */ 0)"])
fi
quad="_TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_QUAD);"
@@ -169,123 +169,123 @@ for fpop in fpop1 fpop2; do
# open the function:
#
- $as_echo ""
- $as_echo "void"
- $as_echo "tme_sparc_fpu_${fpop}(struct tme_sparc *ic)"
- $as_echo "{"
- $as_echo " tme_uint8_t rounding_mode;"
- $as_echo " unsigned int opf;"
- $as_echo " unsigned int fpreg_rd_number_encoded;"
- $as_echo " unsigned int fpreg_rd_number;"
- $as_echo " const struct tme_float *fpreg_rs1;"
- $as_echo " const struct tme_float *fpreg_rs2;"
+ AS_ECHO([""])
+ AS_ECHO(["void"])
+ AS_ECHO(["tme_sparc_fpu_${fpop}(struct tme_sparc *ic)"])
+ AS_ECHO(["{"])
+ AS_ECHO([" tme_uint8_t rounding_mode;"])
+ AS_ECHO([" unsigned int opf;"])
+ AS_ECHO([" unsigned int fpreg_rd_number_encoded;"])
+ AS_ECHO([" unsigned int fpreg_rd_number;"])
+ AS_ECHO([" const struct tme_float *fpreg_rs1;"])
+ AS_ECHO([" const struct tme_float *fpreg_rs2;"])
if test ${fpop} = fpop1; then
- $as_echo " struct tme_float fpreg_rs1_buffer;"
- $as_echo " struct tme_float fpreg_rs2_buffer;"
+ AS_ECHO([" struct tme_float fpreg_rs1_buffer;"])
+ AS_ECHO([" struct tme_float fpreg_rs2_buffer;"])
else
- $as_echo " unsigned int cc;"
- $as_echo " tme_uint32_t conds_mask;"
- $as_echo " unsigned int cc_i;"
- $as_echo " tme_uint32_t cond;"
+ AS_ECHO([" unsigned int cc;"])
+ AS_ECHO([" tme_uint32_t conds_mask;"])
+ AS_ECHO([" unsigned int cc_i;"])
+ AS_ECHO([" tme_uint32_t cond;"])
fi
- $as_echo " struct tme_float fpreg_rd;"
- $as_echo " unsigned int fpreg_rd_format;"
-
- $as_echo ""
- $as_echo " /* set the rounding mode: */"
- $as_echo " switch (ic->tme_sparc_fpu_fsr & TME_SPARC_FSR_RND) {"
- $as_echo " default: assert(FALSE);"
- $as_echo " case TME_SPARC_FSR_RND_RN: rounding_mode = TME_FLOAT_ROUND_NEAREST_EVEN; break;"
- $as_echo " case TME_SPARC_FSR_RND_RZ: rounding_mode = TME_FLOAT_ROUND_TO_ZERO; break;"
- $as_echo " case TME_SPARC_FSR_RND_RM: rounding_mode = TME_FLOAT_ROUND_DOWN; break;"
- $as_echo " case TME_SPARC_FSR_RND_RP: rounding_mode = TME_FLOAT_ROUND_UP; break;"
- $as_echo " }"
- $as_echo " ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = rounding_mode;"
-
- $as_echo ""
- $as_echo " /* decode the rd and opf fields: */"
- $as_echo " fpreg_rd_number_encoded = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, TME_SPARC_FORMAT3_MASK_RD);"
- $as_echo " opf = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, (0x1ff << 5));"
-
- $as_echo ""
- $as_echo " /* silence uninitialized variable warnings: */"
- $as_echo " fpreg_rd_number = 0;"
-
- $as_echo ""
- $as_echo "#ifdef _TME_SPARC_RECODE_VERIFY"
- $as_echo " /* clear the rd buffer: */"
- $as_echo " memset(&fpreg_rd, 0, sizeof(fpreg_rd));"
- $as_echo "#endif /* _TME_SPARC_RECODE_VERIFY */"
+ AS_ECHO([" struct tme_float fpreg_rd;"])
+ AS_ECHO([" unsigned int fpreg_rd_format;"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* set the rounding mode: */"])
+ AS_ECHO([" switch (ic->tme_sparc_fpu_fsr & TME_SPARC_FSR_RND) {"])
+ AS_ECHO([" default: assert(FALSE);"])
+ AS_ECHO([" case TME_SPARC_FSR_RND_RN: rounding_mode = TME_FLOAT_ROUND_NEAREST_EVEN; break;"])
+ AS_ECHO([" case TME_SPARC_FSR_RND_RZ: rounding_mode = TME_FLOAT_ROUND_TO_ZERO; break;"])
+ AS_ECHO([" case TME_SPARC_FSR_RND_RM: rounding_mode = TME_FLOAT_ROUND_DOWN; break;"])
+ AS_ECHO([" case TME_SPARC_FSR_RND_RP: rounding_mode = TME_FLOAT_ROUND_UP; break;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = rounding_mode;"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* decode the rd and opf fields: */"])
+ AS_ECHO([" fpreg_rd_number_encoded = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, TME_SPARC_FORMAT3_MASK_RD);"])
+ AS_ECHO([" opf = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, (0x1ff << 5));"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* silence uninitialized variable warnings: */"])
+ AS_ECHO([" fpreg_rd_number = 0;"])
+
+ AS_ECHO([""])
+ AS_ECHO(["#ifdef _TME_SPARC_RECODE_VERIFY"])
+ AS_ECHO([" /* clear the rd buffer: */"])
+ AS_ECHO([" memset(&fpreg_rd, 0, sizeof(fpreg_rd));"])
+ AS_ECHO(["#endif /* _TME_SPARC_RECODE_VERIFY */"])
fmovcc=
if test ${fpop} = fpop2; then
fmovcc=cc
- $as_echo ""
- $as_echo " /* if this is an FMOVcc: */"
- $as_echo " if (((opf - 1) & 0x3f) < 3) {"
- $as_echo ""
- $as_echo " /* if opf bit eight is set, this uses integer condition codes: */"
- $as_echo " if (opf & TME_BIT(8)) {"
- $as_echo ""
- $as_echo " /* if opf bit six is set, this is unimplemented: */"
- $as_echo " if (__tme_predict_false(opf & TME_BIT(6))) {"
- $as_echo " _TME_SPARC_FPU_UNIMPL;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* get %icc or %xcc, depending on opf bit seven: */"
- $as_echo " cc = ic->tme_sparc64_ireg_ccr;"
- $as_echo " if (opf & TME_BIT(7)) {"
- $as_echo " cc /= (TME_SPARC64_CCR_XCC / TME_SPARC64_CCR_ICC);"
- $as_echo " }"
- $as_echo " cc = TME_FIELD_MASK_EXTRACTU(cc, TME_SPARC64_CCR_ICC);"
- $as_echo ""
- $as_echo " /* get the conditions mask: */"
- $as_echo " conds_mask = _tme_sparc_conds_icc[[cc]];"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, this uses floating-point condition codes: */"
- $as_echo " else {"
- $as_echo ""
- $as_echo " /* get the right %fcc: */"
- $as_echo " cc_i = TME_FIELD_MASK_EXTRACTU(opf, (0x3 << 6));"
- $as_echo " if (cc_i == 0) {"
- $as_echo " cc = TME_FIELD_MASK_EXTRACTU(ic->tme_sparc_fpu_fsr, TME_SPARC_FSR_FCC);"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " cc = (ic->tme_sparc_fpu_xfsr >> (2 * (cc_i - 1))) & 0x3;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* get the conditions mask: */"
- $as_echo " conds_mask = _tme_sparc_conds_fcc[[cc]];"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* add the not-conditions to the conditions mask: */"
- $as_echo " conds_mask += ((~conds_mask) << 8);"
- $as_echo ""
- $as_echo " /* get the cond field: */"
- $as_echo " cond = TME_BIT(TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, (0xf << 14)));"
- $as_echo ""
- $as_echo " /* if the condition is not true: */"
- $as_echo " if (!(conds_mask & cond)) {"
- $as_echo ""
- $as_echo " /* return now: */"
- $as_echo " /* NB that this may expose us to guests, since we do not check"
- $as_echo " that the floating-point register numbers are valid: */"
- $as_echo " return;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* clear bits six, seven, and eight in opf: */"
- $as_echo " opf &= 0x3f;"
- $as_echo " }"
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is an FMOVcc: */"])
+ AS_ECHO([" if (((opf - 1) & 0x3f) < 3) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if opf bit eight is set, this uses integer condition codes: */"])
+ AS_ECHO([" if (opf & TME_BIT(8)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if opf bit six is set, this is unimplemented: */"])
+ AS_ECHO([" if (__tme_predict_false(opf & TME_BIT(6))) {"])
+ AS_ECHO([" _TME_SPARC_FPU_UNIMPL;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get %icc or %xcc, depending on opf bit seven: */"])
+ AS_ECHO([" cc = ic->tme_sparc64_ireg_ccr;"])
+ AS_ECHO([" if (opf & TME_BIT(7)) {"])
+ AS_ECHO([" cc /= (TME_SPARC64_CCR_XCC / TME_SPARC64_CCR_ICC);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" cc = TME_FIELD_MASK_EXTRACTU(cc, TME_SPARC64_CCR_ICC);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the conditions mask: */"])
+ AS_ECHO([" conds_mask = _tme_sparc_conds_icc[[cc]];"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, this uses floating-point condition codes: */"])
+ AS_ECHO([" else {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the right %fcc: */"])
+ AS_ECHO([" cc_i = TME_FIELD_MASK_EXTRACTU(opf, (0x3 << 6));"])
+ AS_ECHO([" if (cc_i == 0) {"])
+ AS_ECHO([" cc = TME_FIELD_MASK_EXTRACTU(ic->tme_sparc_fpu_fsr, TME_SPARC_FSR_FCC);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" cc = (ic->tme_sparc_fpu_xfsr >> (2 * (cc_i - 1))) & 0x3;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the conditions mask: */"])
+ AS_ECHO([" conds_mask = _tme_sparc_conds_fcc[[cc]];"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* add the not-conditions to the conditions mask: */"])
+ AS_ECHO([" conds_mask += ((~conds_mask) << 8);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the cond field: */"])
+ AS_ECHO([" cond = TME_BIT(TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, (0xf << 14)));"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the condition is not true: */"])
+ AS_ECHO([" if (!(conds_mask & cond)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* return now: */"])
+ AS_ECHO([" /* NB that this may expose us to guests, since we do not check"])
+ AS_ECHO([" that the floating-point register numbers are valid: */"])
+ AS_ECHO([" return;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* clear bits six, seven, and eight in opf: */"])
+ AS_ECHO([" opf &= 0x3f;"])
+ AS_ECHO([" }"])
fi
- $as_echo ""
- $as_echo " /* dispatch on the opf field: */"
- $as_echo " switch (opf) {"
- $as_echo "#define _TME_SPARC_FPU_FORMAT_RS1(format) fpreg_rs1 = tme_sparc_fpu_fpreg_read(ic, TME_SPARC_FORMAT3_MASK_RS1, (format))"
- $as_echo "#define _TME_SPARC_FPU_FORMAT_RS2(format) fpreg_rs2 = tme_sparc_fpu_fpreg_read(ic, TME_SPARC_FORMAT3_MASK_RS2, (format))"
- $as_echo "#define _TME_SPARC_FPU_FORMAT_RD(format) do { fpreg_rd_format = (format) | TME_IEEE754_FPREG_FORMAT_BUILTIN; fpreg_rd_number = tme_sparc_fpu_fpreg_decode(ic, fpreg_rd_number_encoded, fpreg_rd_format); } while (/* CONSTCOND */ 0)"
- $as_echo ""
+ AS_ECHO([""])
+ AS_ECHO([" /* dispatch on the opf field: */"])
+ AS_ECHO([" switch (opf) {"])
+ AS_ECHO(["#define _TME_SPARC_FPU_FORMAT_RS1(format) fpreg_rs1 = tme_sparc_fpu_fpreg_read(ic, TME_SPARC_FORMAT3_MASK_RS1, (format))"])
+ AS_ECHO(["#define _TME_SPARC_FPU_FORMAT_RS2(format) fpreg_rs2 = tme_sparc_fpu_fpreg_read(ic, TME_SPARC_FORMAT3_MASK_RS2, (format))"])
+ AS_ECHO(["#define _TME_SPARC_FPU_FORMAT_RD(format) do { fpreg_rd_format = (format) | TME_IEEE754_FPREG_FORMAT_BUILTIN; fpreg_rd_number = tme_sparc_fpu_fpreg_decode(ic, fpreg_rd_number_encoded, fpreg_rd_format); } while (/* CONSTCOND */ 0)"])
+ AS_ECHO([""])
# permute over the opf field:
#
@@ -315,480 +315,480 @@ for fpop in fpop1 fpop2; do
default=false
case "${fpop}:${opf}" in
fpop1:011000100)
- $as_echo " case ${opf_decimal}: /* ${opf} FiTOs: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_from_int32,"
- $as_echo " fpreg_rs2->tme_float_value_ieee754_single, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FiTOs: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_from_int32,"])
+ AS_ECHO([" fpreg_rs2->tme_float_value_ieee754_single, &fpreg_rd);"])
;;
fpop1:011001000)
- $as_echo " case ${opf_decimal}: /* ${opf} FiTOd: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_int32,"
- $as_echo " fpreg_rs2->tme_float_value_ieee754_single, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FiTOd: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_int32,"])
+ AS_ECHO([" fpreg_rs2->tme_float_value_ieee754_single, &fpreg_rd);"])
;;
fpop1:011001100)
- $as_echo " case ${opf_decimal}: /* ${opf} FiTOq: */"
- $as_echo " ${quad}"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_int32,"
- $as_echo " fpreg_rs2->tme_float_value_ieee754_single, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FiTOq: */"])
+ AS_ECHO([" ${quad}"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_int32,"])
+ AS_ECHO([" fpreg_rs2->tme_float_value_ieee754_single, &fpreg_rd);"])
;;
fpop1:010000100)
- $as_echo " case ${opf_decimal}: /* ${opf} FxTOs: */"
- $as_echo "#ifdef TME_HAVE_INT64_T"
- $as_echo " if (__tme_predict_true(TME_SPARC_VERSION(ic) >= 9)) {"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_from_int64,"
- $as_echo " fpreg_rs2->tme_float_value_ieee754_double.tme_value64_int, &fpreg_rd);"
- $as_echo " break;"
- $as_echo " }"
- $as_echo "#endif /* TME_HAVE_INT64_T */"
- $as_echo " _TME_SPARC_FPU_UNIMPL;"
- $as_echo " fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FxTOs: */"])
+ AS_ECHO(["#ifdef TME_HAVE_INT64_T"])
+ AS_ECHO([" if (__tme_predict_true(TME_SPARC_VERSION(ic) >= 9)) {"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_from_int64,"])
+ AS_ECHO([" fpreg_rs2->tme_float_value_ieee754_double.tme_value64_int, &fpreg_rd);"])
+ AS_ECHO([" break;"])
+ AS_ECHO([" }"])
+ AS_ECHO(["#endif /* TME_HAVE_INT64_T */"])
+ AS_ECHO([" _TME_SPARC_FPU_UNIMPL;"])
+ AS_ECHO([" fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"])
;;
fpop1:010001000)
- $as_echo " case ${opf_decimal}: /* ${opf} FxTOd: */"
- $as_echo "#ifdef TME_HAVE_INT64_T"
- $as_echo " if (__tme_predict_true(TME_SPARC_VERSION(ic) >= 9)) {"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_int64,"
- $as_echo " fpreg_rs2->tme_float_value_ieee754_double.tme_value64_int, &fpreg_rd);"
- $as_echo " break;"
- $as_echo " }"
- $as_echo "#endif /* TME_HAVE_INT64_T */"
- $as_echo " _TME_SPARC_FPU_UNIMPL;"
- $as_echo " fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FxTOd: */"])
+ AS_ECHO(["#ifdef TME_HAVE_INT64_T"])
+ AS_ECHO([" if (__tme_predict_true(TME_SPARC_VERSION(ic) >= 9)) {"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_int64,"])
+ AS_ECHO([" fpreg_rs2->tme_float_value_ieee754_double.tme_value64_int, &fpreg_rd);"])
+ AS_ECHO([" break;"])
+ AS_ECHO([" }"])
+ AS_ECHO(["#endif /* TME_HAVE_INT64_T */"])
+ AS_ECHO([" _TME_SPARC_FPU_UNIMPL;"])
+ AS_ECHO([" fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"])
;;
fpop1:010001100)
- $as_echo " case ${opf_decimal}: /* ${opf} FxTOq: */"
- $as_echo "#ifdef TME_HAVE_INT64_T"
- $as_echo " if (__tme_predict_true(TME_SPARC_VERSION(ic) >= 9)) {"
- $as_echo " ${quad}"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_int64,"
- $as_echo " fpreg_rs2->tme_float_value_ieee754_double.tme_value64_int, &fpreg_rd);"
- $as_echo " break;"
- $as_echo " }"
- $as_echo "#endif /* TME_HAVE_INT64_T */"
- $as_echo " _TME_SPARC_FPU_UNIMPL;"
- $as_echo " fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FxTOq: */"])
+ AS_ECHO(["#ifdef TME_HAVE_INT64_T"])
+ AS_ECHO([" if (__tme_predict_true(TME_SPARC_VERSION(ic) >= 9)) {"])
+ AS_ECHO([" ${quad}"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_int64,"])
+ AS_ECHO([" fpreg_rs2->tme_float_value_ieee754_double.tme_value64_int, &fpreg_rd);"])
+ AS_ECHO([" break;"])
+ AS_ECHO([" }"])
+ AS_ECHO(["#endif /* TME_HAVE_INT64_T */"])
+ AS_ECHO([" _TME_SPARC_FPU_UNIMPL;"])
+ AS_ECHO([" fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"])
;;
fpop1:011010001)
- $as_echo " case ${opf_decimal}: /* ${opf} FsTOi: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_SINGLE;"
- $as_echo " ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = TME_FLOAT_ROUND_TO_ZERO;"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_to_int32,"
- $as_echo " fpreg_rs2, (tme_int32_t *) &fpreg_rd.tme_float_value_ieee754_single);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FsTOi: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_SINGLE;"])
+ AS_ECHO([" ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = TME_FLOAT_ROUND_TO_ZERO;"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_to_int32,"])
+ AS_ECHO([" fpreg_rs2, (tme_int32_t *) &fpreg_rd.tme_float_value_ieee754_single);"])
;;
fpop1:011010010)
- $as_echo " case ${opf_decimal}: /* ${opf} FdTOi: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_SINGLE;"
- $as_echo " ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = TME_FLOAT_ROUND_TO_ZERO;"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_to_int32,"
- $as_echo " fpreg_rs2, (tme_int32_t *) &fpreg_rd.tme_float_value_ieee754_single);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FdTOi: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_SINGLE;"])
+ AS_ECHO([" ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = TME_FLOAT_ROUND_TO_ZERO;"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_to_int32,"])
+ AS_ECHO([" fpreg_rs2, (tme_int32_t *) &fpreg_rd.tme_float_value_ieee754_single);"])
;;
fpop1:011010011)
- $as_echo " case ${opf_decimal}: /* ${opf} FqTOi: */"
- $as_echo " ${quad}"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_SINGLE;"
- $as_echo " ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = TME_FLOAT_ROUND_TO_ZERO;"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_to_int32,"
- $as_echo " fpreg_rs2, (tme_int32_t *) &fpreg_rd.tme_float_value_ieee754_single);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FqTOi: */"])
+ AS_ECHO([" ${quad}"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_SINGLE;"])
+ AS_ECHO([" ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = TME_FLOAT_ROUND_TO_ZERO;"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_to_int32,"])
+ AS_ECHO([" fpreg_rs2, (tme_int32_t *) &fpreg_rd.tme_float_value_ieee754_single);"])
;;
fpop1:010000001)
- $as_echo " case ${opf_decimal}: /* ${opf} FsTOx: */"
- $as_echo "#ifdef TME_HAVE_INT64_T"
- $as_echo " if (__tme_predict_true(TME_SPARC_VERSION(ic) >= 9)) {"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"
- $as_echo " ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = TME_FLOAT_ROUND_TO_ZERO;"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_to_int64,"
- $as_echo " fpreg_rs2, &fpreg_rd.tme_float_value_ieee754_double.tme_value64_int);"
- $as_echo " break;"
- $as_echo " }"
- $as_echo "#endif /* TME_HAVE_INT64_T */"
- $as_echo " _TME_SPARC_FPU_UNIMPL;"
- $as_echo " fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FsTOx: */"])
+ AS_ECHO(["#ifdef TME_HAVE_INT64_T"])
+ AS_ECHO([" if (__tme_predict_true(TME_SPARC_VERSION(ic) >= 9)) {"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"])
+ AS_ECHO([" ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = TME_FLOAT_ROUND_TO_ZERO;"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_to_int64,"])
+ AS_ECHO([" fpreg_rs2, &fpreg_rd.tme_float_value_ieee754_double.tme_value64_int);"])
+ AS_ECHO([" break;"])
+ AS_ECHO([" }"])
+ AS_ECHO(["#endif /* TME_HAVE_INT64_T */"])
+ AS_ECHO([" _TME_SPARC_FPU_UNIMPL;"])
+ AS_ECHO([" fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"])
;;
fpop1:010000010)
- $as_echo " case ${opf_decimal}: /* ${opf} FdTOx: */"
- $as_echo "#ifdef TME_HAVE_INT64_T"
- $as_echo " if (__tme_predict_true(TME_SPARC_VERSION(ic) >= 9)) {"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"
- $as_echo " ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = TME_FLOAT_ROUND_TO_ZERO;"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_to_int64,"
- $as_echo " fpreg_rs2, &fpreg_rd.tme_float_value_ieee754_double.tme_value64_int);"
- $as_echo " break;"
- $as_echo " }"
- $as_echo "#endif /* TME_HAVE_INT64_T */"
- $as_echo " _TME_SPARC_FPU_UNIMPL;"
- $as_echo " fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FdTOx: */"])
+ AS_ECHO(["#ifdef TME_HAVE_INT64_T"])
+ AS_ECHO([" if (__tme_predict_true(TME_SPARC_VERSION(ic) >= 9)) {"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"])
+ AS_ECHO([" ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = TME_FLOAT_ROUND_TO_ZERO;"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_to_int64,"])
+ AS_ECHO([" fpreg_rs2, &fpreg_rd.tme_float_value_ieee754_double.tme_value64_int);"])
+ AS_ECHO([" break;"])
+ AS_ECHO([" }"])
+ AS_ECHO(["#endif /* TME_HAVE_INT64_T */"])
+ AS_ECHO([" _TME_SPARC_FPU_UNIMPL;"])
+ AS_ECHO([" fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"])
;;
fpop1:010000011)
- $as_echo " case ${opf_decimal}: /* ${opf} FqTOx: */"
- $as_echo "#ifdef TME_HAVE_INT64_T"
- $as_echo " if (__tme_predict_true(TME_SPARC_VERSION(ic) >= 9)) {"
- $as_echo " ${quad}"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"
- $as_echo " ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = TME_FLOAT_ROUND_TO_ZERO;"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_to_int64,"
- $as_echo " fpreg_rs2, &fpreg_rd.tme_float_value_ieee754_double.tme_value64_int);"
- $as_echo " break;"
- $as_echo " }"
- $as_echo "#endif /* TME_HAVE_INT64_T */"
- $as_echo " _TME_SPARC_FPU_UNIMPL;"
- $as_echo " fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FqTOx: */"])
+ AS_ECHO(["#ifdef TME_HAVE_INT64_T"])
+ AS_ECHO([" if (__tme_predict_true(TME_SPARC_VERSION(ic) >= 9)) {"])
+ AS_ECHO([" ${quad}"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"])
+ AS_ECHO([" ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = TME_FLOAT_ROUND_TO_ZERO;"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_to_int64,"])
+ AS_ECHO([" fpreg_rs2, &fpreg_rd.tme_float_value_ieee754_double.tme_value64_int);"])
+ AS_ECHO([" break;"])
+ AS_ECHO([" }"])
+ AS_ECHO(["#endif /* TME_HAVE_INT64_T */"])
+ AS_ECHO([" _TME_SPARC_FPU_UNIMPL;"])
+ AS_ECHO([" fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"])
;;
fpop1:011001001)
- $as_echo " case ${opf_decimal}: /* ${opf} FsTOd: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_single,"
- $as_echo " fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FsTOd: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_single,"])
+ AS_ECHO([" fpreg_rs2, &fpreg_rd);"])
;;
fpop1:011001101)
- $as_echo " case ${opf_decimal}: /* ${opf} FsTOq: */"
- $as_echo " ${quad}"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_single,"
- $as_echo " fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FsTOq: */"])
+ AS_ECHO([" ${quad}"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_single,"])
+ AS_ECHO([" fpreg_rs2, &fpreg_rd);"])
;;
fpop1:011000110)
- $as_echo " case ${opf_decimal}: /* ${opf} FdTOs: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_from_double,"
- $as_echo " fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FdTOs: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_from_double,"])
+ AS_ECHO([" fpreg_rs2, &fpreg_rd);"])
;;
fpop1:011001110)
- $as_echo " case ${opf_decimal}: /* ${opf} FdTOq: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_double,"
- $as_echo " fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FdTOq: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_double,"])
+ AS_ECHO([" fpreg_rs2, &fpreg_rd);"])
;;
fpop1:011000111)
- $as_echo " case ${opf_decimal}: /* ${opf} FqTOs: */"
- $as_echo " ${quad}"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_from_quad,"
- $as_echo " fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FqTOs: */"])
+ AS_ECHO([" ${quad}"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_from_quad,"])
+ AS_ECHO([" fpreg_rs2, &fpreg_rd);"])
;;
fpop1:011001011)
- $as_echo " case ${opf_decimal}: /* ${opf} FqTOd: */"
- $as_echo " ${quad}"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_quad,"
- $as_echo " fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FqTOd: */"])
+ AS_ECHO([" ${quad}"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_quad,"])
+ AS_ECHO([" fpreg_rs2, &fpreg_rd);"])
;;
fpop1:000000001 | fpop2:000000001)
- $as_echo " case ${opf_decimal}: /* ${opf} FMOVs${fmovcc}: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " fpreg_rd = *fpreg_rs2;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FMOVs${fmovcc}: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" fpreg_rd = *fpreg_rs2;"])
;;
fpop1:000000010 | fpop2:000000010)
- $as_echo " case ${opf_decimal}: /* ${opf} FMOVd${fmovcc}: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " fpreg_rd = *fpreg_rs2;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FMOVd${fmovcc}: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" fpreg_rd = *fpreg_rs2;"])
;;
fpop1:000000101)
- $as_echo " case ${opf_decimal}: /* ${opf} FNEGs: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " fpreg_rd = *fpreg_rs2;"
- $as_echo " fpreg_rd.tme_float_value_ieee754_single ^= 0x80000000;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FNEGs: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" fpreg_rd = *fpreg_rs2;"])
+ AS_ECHO([" fpreg_rd.tme_float_value_ieee754_single ^= 0x80000000;"])
;;
fpop1:000000110)
- $as_echo " case ${opf_decimal}: /* ${opf} FNEGd: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " fpreg_rd = *fpreg_rs2;"
- $as_echo " fpreg_rd.tme_float_value_ieee754_double.tme_value64_uint32_hi ^= 0x80000000;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FNEGd: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" fpreg_rd = *fpreg_rs2;"])
+ AS_ECHO([" fpreg_rd.tme_float_value_ieee754_double.tme_value64_uint32_hi ^= 0x80000000;"])
;;
fpop1:000001001)
- $as_echo " case ${opf_decimal}: /* ${opf} FABSs: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " fpreg_rd = *fpreg_rs2;"
- $as_echo " fpreg_rd.tme_float_value_ieee754_single &= ~0x80000000;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FABSs: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" fpreg_rd = *fpreg_rs2;"])
+ AS_ECHO([" fpreg_rd.tme_float_value_ieee754_single &= ~0x80000000;"])
;;
fpop1:000001010)
- $as_echo " case ${opf_decimal}: /* ${opf} FABSd: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " fpreg_rd = *fpreg_rs2;"
- $as_echo " fpreg_rd.tme_float_value_ieee754_double.tme_value64_uint32_hi &= ~0x80000000;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FABSd: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" fpreg_rd = *fpreg_rs2;"])
+ AS_ECHO([" fpreg_rd.tme_float_value_ieee754_double.tme_value64_uint32_hi &= ~0x80000000;"])
;;
fpop1:000101001)
- $as_echo " case ${opf_decimal}: /* ${opf} FSQRTs: */"
- $as_echo " _TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_FSQRT);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_sqrt,"
- $as_echo " fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FSQRTs: */"])
+ AS_ECHO([" _TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_FSQRT);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_sqrt,"])
+ AS_ECHO([" fpreg_rs2, &fpreg_rd);"])
;;
fpop1:000101010)
- $as_echo " case ${opf_decimal}: /* ${opf} FSQRTd: */"
- $as_echo " _TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_FSQRT);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_sqrt,"
- $as_echo " fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FSQRTd: */"])
+ AS_ECHO([" _TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_FSQRT);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_sqrt,"])
+ AS_ECHO([" fpreg_rs2, &fpreg_rd);"])
;;
fpop1:000101011)
- $as_echo " case ${opf_decimal}: /* ${opf} FSQRTq: */"
- $as_echo " _TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_FSQRT | TME_SPARC_FPU_FLAG_NO_QUAD);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_sqrt,"
- $as_echo " fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FSQRTq: */"])
+ AS_ECHO([" _TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_FSQRT | TME_SPARC_FPU_FLAG_NO_QUAD);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_sqrt,"])
+ AS_ECHO([" fpreg_rs2, &fpreg_rd);"])
;;
fpop1:001000001)
- $as_echo " case ${opf_decimal}: /* ${opf} FADDs: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_add,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FADDs: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_add,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
;;
fpop1:001000010)
- $as_echo " case ${opf_decimal}: /* ${opf} FADDd: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_add,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FADDd: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_add,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
;;
fpop1:001000011)
- $as_echo " case ${opf_decimal}: /* ${opf} FADDq: */"
- $as_echo " ${quad}"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_add,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FADDq: */"])
+ AS_ECHO([" ${quad}"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_add,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
;;
fpop1:001000101)
- $as_echo " case ${opf_decimal}: /* ${opf} FSUBs: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_sub,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FSUBs: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_sub,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
;;
fpop1:001000110)
- $as_echo " case ${opf_decimal}: /* ${opf} FSUBd: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_sub,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FSUBd: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_sub,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
;;
fpop1:001000111)
- $as_echo " case ${opf_decimal}: /* ${opf} FSUBq: */"
- $as_echo " ${quad}"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_sub,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FSUBq: */"])
+ AS_ECHO([" ${quad}"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_sub,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
;;
fpop1:001001001)
- $as_echo " case ${opf_decimal}: /* ${opf} FMULs: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_mul,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FMULs: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_mul,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
;;
fpop1:001001010)
- $as_echo " case ${opf_decimal}: /* ${opf} FMULd: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_mul,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FMULd: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_mul,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
;;
fpop1:001001011)
- $as_echo " case ${opf_decimal}: /* ${opf} FMULq: */"
- $as_echo " ${quad}"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_mul,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FMULq: */"])
+ AS_ECHO([" ${quad}"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_mul,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
;;
fpop1:001101001)
- $as_echo " case ${opf_decimal}: /* ${opf} FsMULd: */"
- $as_echo " _TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_FMUL_WIDER);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_single,"
- $as_echo " fpreg_rs1, &fpreg_rs1_buffer);"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_single,"
- $as_echo " fpreg_rs2, &fpreg_rs2_buffer);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_mul,"
- $as_echo " &fpreg_rs1_buffer, &fpreg_rs2_buffer, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FsMULd: */"])
+ AS_ECHO([" _TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_FMUL_WIDER);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_single,"])
+ AS_ECHO([" fpreg_rs1, &fpreg_rs1_buffer);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_single,"])
+ AS_ECHO([" fpreg_rs2, &fpreg_rs2_buffer);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_mul,"])
+ AS_ECHO([" &fpreg_rs1_buffer, &fpreg_rs2_buffer, &fpreg_rd);"])
;;
fpop1:001101110)
- $as_echo " case ${opf_decimal}: /* ${opf} FdMULq: */"
- $as_echo " _TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_FMUL_WIDER | TME_SPARC_FPU_FLAG_NO_QUAD);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_double,"
- $as_echo " fpreg_rs1, &fpreg_rs1_buffer);"
- $as_echo " _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_double,"
- $as_echo " fpreg_rs2, &fpreg_rs2_buffer);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_mul,"
- $as_echo " &fpreg_rs1_buffer, &fpreg_rs2_buffer, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FdMULq: */"])
+ AS_ECHO([" _TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_FMUL_WIDER | TME_SPARC_FPU_FLAG_NO_QUAD);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_double,"])
+ AS_ECHO([" fpreg_rs1, &fpreg_rs1_buffer);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_double,"])
+ AS_ECHO([" fpreg_rs2, &fpreg_rs2_buffer);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_mul,"])
+ AS_ECHO([" &fpreg_rs1_buffer, &fpreg_rs2_buffer, &fpreg_rd);"])
;;
fpop1:001001101)
- $as_echo " case ${opf_decimal}: /* ${opf} FDIVs: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_div,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FDIVs: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_div,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
;;
fpop1:001001110)
- $as_echo " case ${opf_decimal}: /* ${opf} FDIVd: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_div,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FDIVd: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_div,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
;;
fpop1:001001111)
- $as_echo " case ${opf_decimal}: /* ${opf} FDIVq: */"
- $as_echo " ${quad}"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_div,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FDIVq: */"])
+ AS_ECHO([" ${quad}"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_div,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
;;
fpop2:001010001)
- $as_echo " case ${opf_decimal}: /* ${opf} FCMPs: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_sub,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
- $as_echo " _tme_sparc_fpu_fcc_single(ic, &fpreg_rd, FALSE);"
- $as_echo " fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FCMPs: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_sub,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
+ AS_ECHO([" _tme_sparc_fpu_fcc_single(ic, &fpreg_rd, FALSE);"])
+ AS_ECHO([" fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"])
;;
fpop2:001010010)
- $as_echo " case ${opf_decimal}: /* ${opf} FCMPd: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_sub,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
- $as_echo " _tme_sparc_fpu_fcc_double(ic, &fpreg_rd, FALSE);"
- $as_echo " fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FCMPd: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_sub,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
+ AS_ECHO([" _tme_sparc_fpu_fcc_double(ic, &fpreg_rd, FALSE);"])
+ AS_ECHO([" fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"])
;;
fpop2:001010011)
- $as_echo " case ${opf_decimal}: /* ${opf} FCMPq: */"
- $as_echo " ${quad}"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_sub,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
- $as_echo " _tme_sparc_fpu_fcc_quad(ic, &fpreg_rd, FALSE);"
- $as_echo " fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FCMPq: */"])
+ AS_ECHO([" ${quad}"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_sub,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
+ AS_ECHO([" _tme_sparc_fpu_fcc_quad(ic, &fpreg_rd, FALSE);"])
+ AS_ECHO([" fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"])
;;
fpop2:001010101)
- $as_echo " case ${opf_decimal}: /* ${opf} FCMPEs: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_sub,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
- $as_echo " _tme_sparc_fpu_fcc_single(ic, &fpreg_rd, TRUE);"
- $as_echo " fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FCMPEs: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_sub,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
+ AS_ECHO([" _tme_sparc_fpu_fcc_single(ic, &fpreg_rd, TRUE);"])
+ AS_ECHO([" fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"])
;;
fpop2:001010110)
- $as_echo " case ${opf_decimal}: /* ${opf} FCMPEd: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_sub,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
- $as_echo " _tme_sparc_fpu_fcc_double(ic, &fpreg_rd, TRUE);"
- $as_echo " fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FCMPEd: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_sub,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
+ AS_ECHO([" _tme_sparc_fpu_fcc_double(ic, &fpreg_rd, TRUE);"])
+ AS_ECHO([" fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"])
;;
fpop2:001010111)
- $as_echo " case ${opf_decimal}: /* ${opf} FCMPEq: */"
- $as_echo " ${quad}"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo " _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_sub,"
- $as_echo " fpreg_rs1, fpreg_rs2, &fpreg_rd);"
- $as_echo " _tme_sparc_fpu_fcc_quad(ic, &fpreg_rd, TRUE);"
- $as_echo " fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FCMPEq: */"])
+ AS_ECHO([" ${quad}"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([" _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_sub,"])
+ AS_ECHO([" fpreg_rs1, fpreg_rs2, &fpreg_rd);"])
+ AS_ECHO([" _tme_sparc_fpu_fcc_quad(ic, &fpreg_rd, TRUE);"])
+ AS_ECHO([" fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"])
;;
*) default=true ;;
esac
- if $default; then :; else $as_echo " break;"; $as_echo ""; fi
+ if $default; then :; else AS_ECHO([" break;"]); AS_ECHO([""]); fi
done
- $as_echo " default:"
- $as_echo " _TME_SPARC_FPU_UNIMPL;"
- $as_echo " fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
- $as_echo " break;"
- $as_echo ""
- $as_echo "#undef _TME_SPARC_FPU_FORMAT_RS1"
- $as_echo "#undef _TME_SPARC_FPU_FORMAT_RS2"
- $as_echo "#undef _TME_SPARC_FPU_FORMAT_RD"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* store any destination: */"
- $as_echo " if (fpreg_rd_format != TME_IEEE754_FPREG_FORMAT_NULL) {"
- $as_echo " tme_sparc_fpu_fpreg_format(ic, fpreg_rd_number, fpreg_rd_format);"
- $as_echo " ic->tme_sparc_fpu_fpregs[[fpreg_rd_number]] = fpreg_rd;"
- $as_echo " TME_SPARC_FPU_DIRTY(ic, fpreg_rd_number);"
- $as_echo " }"
-
- $as_echo ""
- $as_echo "}"
+ AS_ECHO([" default:"])
+ AS_ECHO([" _TME_SPARC_FPU_UNIMPL;"])
+ AS_ECHO([" fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"])
+ AS_ECHO([" break;"])
+ AS_ECHO([""])
+ AS_ECHO(["#undef _TME_SPARC_FPU_FORMAT_RS1"])
+ AS_ECHO(["#undef _TME_SPARC_FPU_FORMAT_RS2"])
+ AS_ECHO(["#undef _TME_SPARC_FPU_FORMAT_RD"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* store any destination: */"])
+ AS_ECHO([" if (fpreg_rd_format != TME_IEEE754_FPREG_FORMAT_NULL) {"])
+ AS_ECHO([" tme_sparc_fpu_fpreg_format(ic, fpreg_rd_number, fpreg_rd_format);"])
+ AS_ECHO([" ic->tme_sparc_fpu_fpregs[[fpreg_rd_number]] = fpreg_rd;"])
+ AS_ECHO([" TME_SPARC_FPU_DIRTY(ic, fpreg_rd_number);"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO(["}"])
:
done
diff --git a/ic/sparc/sparc-insns-auto.m4 b/ic/sparc/sparc-insns-auto.m4
index 5cb4218..5714263 100644
--- a/ic/sparc/sparc-insns-auto.m4
+++ b/ic/sparc/sparc-insns-auto.m4
@@ -70,8 +70,8 @@ for arch in 32 64; do
# the sparc64 support depends on a 64-bit integer type:
#
if test ${arch} = 64; then
- $as_echo ""
- $as_echo "#ifdef TME_HAVE_INT64_T"
+ AS_ECHO([""])
+ AS_ECHO(["#ifdef TME_HAVE_INT64_T"])
fi
# get the name of the register with the integer condition codes, a
@@ -92,213 +92,213 @@ for arch in 32 64; do
# fix the architecture version:
#
if $header; then :; else
- $as_echo ""
- $as_echo "#undef TME_SPARC_VERSION"
- $as_echo "#define TME_SPARC_VERSION(ic) (${version})"
+ AS_ECHO([""])
+ AS_ECHO(["#undef TME_SPARC_VERSION"])
+ AS_ECHO(["#define TME_SPARC_VERSION(ic) (${version})"])
fi
# the alternate ASI function:
#
if $header; then :; else
- $as_echo ""
- $as_echo "static tme_uint32_t"
- $as_echo "_tme_sparc${arch}_alternate_asi_mask(struct tme_sparc *ic)"
- $as_echo "{"
- $as_echo " unsigned int asi_data;"
- $as_echo " unsigned int asi_mask_flags;"
- $as_echo " tme_uint32_t asi_mask_data;"
- $as_echo ""
- $as_echo " /* get the ASI, assuming that the i bit is zero: */"
- $as_echo " asi_data = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, (0xff << 5));"
+ AS_ECHO([""])
+ AS_ECHO(["static tme_uint32_t"])
+ AS_ECHO(["_tme_sparc${arch}_alternate_asi_mask(struct tme_sparc *ic)"])
+ AS_ECHO(["{"])
+ AS_ECHO([" unsigned int asi_data;"])
+ AS_ECHO([" unsigned int asi_mask_flags;"])
+ AS_ECHO([" tme_uint32_t asi_mask_data;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the ASI, assuming that the i bit is zero: */"])
+ AS_ECHO([" asi_data = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, (0xff << 5));"])
if test ${arch} = 32; then
- $as_echo ""
- $as_echo " /* this is a privileged instruction: */"
- $as_echo " TME_SPARC_INSN_PRIV;"
- $as_echo ""
- $as_echo " /* if the i bit is one, this is an illegal instruction: */"
- $as_echo " if (__tme_predict_false(TME_SPARC_INSN & TME_BIT(13))) {"
- $as_echo " TME_SPARC_INSN_ILL(ic);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* get the flags for this ASI: */"
- $as_echo " asi_mask_flags = ic->tme_sparc_asis[[asi_data]].tme_sparc_asi_mask_flags;"
- $as_echo ""
- $as_echo " /* make the ASI mask: */"
- $as_echo " if (asi_mask_flags & TME_SPARC32_ASI_MASK_FLAG_SPECIAL) {"
- $as_echo " asi_mask_data"
- $as_echo " = TME_SPARC_ASI_MASK_SPECIAL(asi_data, TRUE);"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " asi_mask_data = TME_SPARC32_ASI_MASK(asi_data, asi_data);"
- $as_echo " }"
+ AS_ECHO([""])
+ AS_ECHO([" /* this is a privileged instruction: */"])
+ AS_ECHO([" TME_SPARC_INSN_PRIV;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the i bit is one, this is an illegal instruction: */"])
+ AS_ECHO([" if (__tme_predict_false(TME_SPARC_INSN & TME_BIT(13))) {"])
+ AS_ECHO([" TME_SPARC_INSN_ILL(ic);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the flags for this ASI: */"])
+ AS_ECHO([" asi_mask_flags = ic->tme_sparc_asis[[asi_data]].tme_sparc_asi_mask_flags;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* make the ASI mask: */"])
+ AS_ECHO([" if (asi_mask_flags & TME_SPARC32_ASI_MASK_FLAG_SPECIAL) {"])
+ AS_ECHO([" asi_mask_data"])
+ AS_ECHO([" = TME_SPARC_ASI_MASK_SPECIAL(asi_data, TRUE);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" asi_mask_data = TME_SPARC32_ASI_MASK(asi_data, asi_data);"])
+ AS_ECHO([" }"])
else
- $as_echo ""
- $as_echo " /* if the i bit is one, use the address space in the ASI register: */"
- $as_echo " if (TME_SPARC_INSN & TME_BIT(13)) {"
- $as_echo " asi_data = ic->tme_sparc64_ireg_asi;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* get the flags for this ASI: */"
- $as_echo " asi_mask_flags = ic->tme_sparc_asis[[asi_data]].tme_sparc_asi_mask_flags;"
+ AS_ECHO([""])
+ AS_ECHO([" /* if the i bit is one, use the address space in the ASI register: */"])
+ AS_ECHO([" if (TME_SPARC_INSN & TME_BIT(13)) {"])
+ AS_ECHO([" asi_data = ic->tme_sparc64_ireg_asi;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the flags for this ASI: */"])
+ AS_ECHO([" asi_mask_flags = ic->tme_sparc_asis[[asi_data]].tme_sparc_asi_mask_flags;"])
- $as_echo ""
- $as_echo " /* if this is a nonprivileged access: */"
- $as_echo " if (!TME_SPARC_PRIV(ic)) {"
- $as_echo ""
- $as_echo " /* if this is a restricted ASI: */"
- $as_echo " if (__tme_predict_false((asi_data & TME_SPARC64_ASI_FLAG_UNRESTRICTED) == 0)) {"
- $as_echo ""
- $as_echo " /* force a slow load or store, which will generate the"
- $as_echo " privileged_action trap: */"
- $as_echo " asi_mask_flags |= TME_SPARC_ASI_MASK_FLAG_UNDEF;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* force a nonprivileged access with the ASI: */"
- $as_echo " asi_mask_flags |= TME_SPARC64_ASI_MASK_FLAG_INSN_AS_IF_USER;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* make the ASI mask: */"
- $as_echo " if (asi_mask_flags & TME_SPARC64_ASI_MASK_FLAG_SPECIAL) {"
- $as_echo " asi_mask_data"
- $as_echo " = (asi_mask_flags"
- $as_echo " + TME_SPARC_ASI_MASK_SPECIAL(asi_data,"
- $as_echo " ((asi_mask_flags & TME_SPARC64_ASI_MASK_FLAG_INSN_AS_IF_USER) == 0)));"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " asi_mask_data = TME_SPARC64_ASI_MASK(asi_data, asi_mask_flags);"
- $as_echo " }"
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is a nonprivileged access: */"])
+ AS_ECHO([" if (!TME_SPARC_PRIV(ic)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is a restricted ASI: */"])
+ AS_ECHO([" if (__tme_predict_false((asi_data & TME_SPARC64_ASI_FLAG_UNRESTRICTED) == 0)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* force a slow load or store, which will generate the"])
+ AS_ECHO([" privileged_action trap: */"])
+ AS_ECHO([" asi_mask_flags |= TME_SPARC_ASI_MASK_FLAG_UNDEF;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* force a nonprivileged access with the ASI: */"])
+ AS_ECHO([" asi_mask_flags |= TME_SPARC64_ASI_MASK_FLAG_INSN_AS_IF_USER;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* make the ASI mask: */"])
+ AS_ECHO([" if (asi_mask_flags & TME_SPARC64_ASI_MASK_FLAG_SPECIAL) {"])
+ AS_ECHO([" asi_mask_data"])
+ AS_ECHO([" = (asi_mask_flags"])
+ AS_ECHO([" + TME_SPARC_ASI_MASK_SPECIAL(asi_data,"])
+ AS_ECHO([" ((asi_mask_flags & TME_SPARC64_ASI_MASK_FLAG_INSN_AS_IF_USER) == 0)));"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" asi_mask_data = TME_SPARC64_ASI_MASK(asi_data, asi_mask_flags);"])
+ AS_ECHO([" }"])
fi
- $as_echo ""
- $as_echo " /* if this ASI has a special handler: */"
- $as_echo " if (__tme_predict_false(ic->tme_sparc_asis[[TME_SPARC_ASI_MASK_WHICH(asi_mask_data)]].tme_sparc_asi_handler != 0)) {"
- $as_echo ""
- $as_echo " /* force a slow load or store, which will call the special handler: */"
- $as_echo " asi_mask_data |= TME_SPARC_ASI_MASK_FLAG_UNDEF;"
- $as_echo " }"
- $as_echo ""
- $as_echo " return (asi_mask_data);"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" /* if this ASI has a special handler: */"])
+ AS_ECHO([" if (__tme_predict_false(ic->tme_sparc_asis[[TME_SPARC_ASI_MASK_WHICH(asi_mask_data)]].tme_sparc_asi_handler != 0)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* force a slow load or store, which will call the special handler: */"])
+ AS_ECHO([" asi_mask_data |= TME_SPARC_ASI_MASK_FLAG_UNDEF;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" return (asi_mask_data);"])
+ AS_ECHO(["}"])
fi
# the FPU load and store common function:
#
if $header; then :; else
- $as_echo ""
- $as_echo "static struct tme_float *"
- $as_echo "_tme_sparc${arch}_fpu_mem_fpreg(struct tme_sparc *ic,"
- $as_echo " tme_uint32_t misaligned,"
- $as_echo " struct tme_float *float_buffer)"
- $as_echo "{"
- $as_echo " unsigned int float_format;"
- $as_echo " unsigned int fpreg_format;"
- $as_echo " tme_uint32_t fp_store;"
- $as_echo " unsigned int fpu_mode;"
- $as_echo " unsigned int fpreg_number;"
- $as_echo ""
- $as_echo " /* NB: this checks for various traps by their priority order: */"
- $as_echo ""
- $as_echo " TME_SPARC_INSN_FPU_ENABLED;"
- $as_echo ""
- $as_echo " /* get the floating-point format: */"
- $as_echo " float_format = float_buffer->tme_float_format;"
- $as_echo ""
- $as_echo " /* convert the floating-point format into the ieee754"
- $as_echo " floating-point register file format: */"
- $as_echo "#if (TME_FLOAT_FORMAT_NULL | TME_IEEE754_FPREG_FORMAT_NULL) != 0"
- $as_echo "#error \"TME_FLOAT_FORMAT_ or TME_IEEE754_FPREG_FORMAT_ values changed\""
- $as_echo "#endif"
- $as_echo "#if TME_FLOAT_FORMAT_IEEE754_SINGLE < TME_IEEE754_FPREG_FORMAT_SINGLE"
- $as_echo "#error \"TME_FLOAT_FORMAT_ or TME_IEEE754_FPREG_FORMAT_ values changed\""
- $as_echo "#endif"
- $as_echo "#if (TME_FLOAT_FORMAT_IEEE754_SINGLE / TME_IEEE754_FPREG_FORMAT_SINGLE) != (TME_FLOAT_FORMAT_IEEE754_DOUBLE / TME_IEEE754_FPREG_FORMAT_DOUBLE)"
- $as_echo "#error \"TME_FLOAT_FORMAT_ or TME_IEEE754_FPREG_FORMAT_ values changed\""
- $as_echo "#endif"
- $as_echo " assert (float_format == TME_FLOAT_FORMAT_NULL"
- $as_echo " || float_format == TME_FLOAT_FORMAT_IEEE754_SINGLE"
- $as_echo " || float_format == TME_FLOAT_FORMAT_IEEE754_DOUBLE);"
- $as_echo " fpreg_format = float_format / (TME_FLOAT_FORMAT_IEEE754_SINGLE / TME_IEEE754_FPREG_FORMAT_SINGLE);"
- $as_echo ""
- $as_echo " /* if the memory address is misaligned, return the"
- $as_echo " float buffer now. the eventual load or store will"
- $as_echo " cause the mem_address_not_aligned trap: */"
- $as_echo ""
- $as_echo " /* if the memory address is misaligned: */"
- $as_echo "#if TME_IEEE754_FPREG_FORMAT_NULL != 0 || TME_IEEE754_FPREG_FORMAT_SINGLE != 1 || TME_IEEE754_FPREG_FORMAT_DOUBLE != 2 || TME_IEEE754_FPREG_FORMAT_QUAD != 4"
- $as_echo "#error \"TME_IEEE754_FPREG_FORMAT_ values changed\""
- $as_echo "#endif"
- $as_echo " assert (fpreg_format == TME_IEEE754_FPREG_FORMAT_NULL"
- $as_echo " || fpreg_format == TME_IEEE754_FPREG_FORMAT_SINGLE"
- $as_echo " || fpreg_format == TME_IEEE754_FPREG_FORMAT_DOUBLE"
- $as_echo " || fpreg_format == TME_IEEE754_FPREG_FORMAT_QUAD);"
- $as_echo " misaligned &= ((sizeof(tme_uint32_t) * fpreg_format) - 1);"
- $as_echo " if (__tme_predict_false(misaligned)) {"
- $as_echo ""
+ AS_ECHO([""])
+ AS_ECHO(["static struct tme_float *"])
+ AS_ECHO(["_tme_sparc${arch}_fpu_mem_fpreg(struct tme_sparc *ic,"])
+ AS_ECHO([" tme_uint32_t misaligned,"])
+ AS_ECHO([" struct tme_float *float_buffer)"])
+ AS_ECHO(["{"])
+ AS_ECHO([" unsigned int float_format;"])
+ AS_ECHO([" unsigned int fpreg_format;"])
+ AS_ECHO([" tme_uint32_t fp_store;"])
+ AS_ECHO([" unsigned int fpu_mode;"])
+ AS_ECHO([" unsigned int fpreg_number;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* NB: this checks for various traps by their priority order: */"])
+ AS_ECHO([""])
+ AS_ECHO([" TME_SPARC_INSN_FPU_ENABLED;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the floating-point format: */"])
+ AS_ECHO([" float_format = float_buffer->tme_float_format;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* convert the floating-point format into the ieee754"])
+ AS_ECHO([" floating-point register file format: */"])
+ AS_ECHO(["#if (TME_FLOAT_FORMAT_NULL | TME_IEEE754_FPREG_FORMAT_NULL) != 0"])
+ AS_ECHO(["#error \"TME_FLOAT_FORMAT_ or TME_IEEE754_FPREG_FORMAT_ values changed\""])
+ AS_ECHO(["#endif"])
+ AS_ECHO(["#if TME_FLOAT_FORMAT_IEEE754_SINGLE < TME_IEEE754_FPREG_FORMAT_SINGLE"])
+ AS_ECHO(["#error \"TME_FLOAT_FORMAT_ or TME_IEEE754_FPREG_FORMAT_ values changed\""])
+ AS_ECHO(["#endif"])
+ AS_ECHO(["#if (TME_FLOAT_FORMAT_IEEE754_SINGLE / TME_IEEE754_FPREG_FORMAT_SINGLE) != (TME_FLOAT_FORMAT_IEEE754_DOUBLE / TME_IEEE754_FPREG_FORMAT_DOUBLE)"])
+ AS_ECHO(["#error \"TME_FLOAT_FORMAT_ or TME_IEEE754_FPREG_FORMAT_ values changed\""])
+ AS_ECHO(["#endif"])
+ AS_ECHO([" assert (float_format == TME_FLOAT_FORMAT_NULL"])
+ AS_ECHO([" || float_format == TME_FLOAT_FORMAT_IEEE754_SINGLE"])
+ AS_ECHO([" || float_format == TME_FLOAT_FORMAT_IEEE754_DOUBLE);"])
+ AS_ECHO([" fpreg_format = float_format / (TME_FLOAT_FORMAT_IEEE754_SINGLE / TME_IEEE754_FPREG_FORMAT_SINGLE);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the memory address is misaligned, return the"])
+ AS_ECHO([" float buffer now. the eventual load or store will"])
+ AS_ECHO([" cause the mem_address_not_aligned trap: */"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the memory address is misaligned: */"])
+ AS_ECHO(["#if TME_IEEE754_FPREG_FORMAT_NULL != 0 || TME_IEEE754_FPREG_FORMAT_SINGLE != 1 || TME_IEEE754_FPREG_FORMAT_DOUBLE != 2 || TME_IEEE754_FPREG_FORMAT_QUAD != 4"])
+ AS_ECHO(["#error \"TME_IEEE754_FPREG_FORMAT_ values changed\""])
+ AS_ECHO(["#endif"])
+ AS_ECHO([" assert (fpreg_format == TME_IEEE754_FPREG_FORMAT_NULL"])
+ AS_ECHO([" || fpreg_format == TME_IEEE754_FPREG_FORMAT_SINGLE"])
+ AS_ECHO([" || fpreg_format == TME_IEEE754_FPREG_FORMAT_DOUBLE"])
+ AS_ECHO([" || fpreg_format == TME_IEEE754_FPREG_FORMAT_QUAD);"])
+ AS_ECHO([" misaligned &= ((sizeof(tme_uint32_t) * fpreg_format) - 1);"])
+ AS_ECHO([" if (__tme_predict_false(misaligned)) {"])
+ AS_ECHO([""])
if test ${arch} = 32; then
- $as_echo " return (float_buffer);"
+ AS_ECHO([" return (float_buffer);"])
else
- $as_echo " /* if the memory address is not even 32-bit aligned, or"
- $as_echo " if this SPARC doesn't support loads and stores of this"
- $as_echo " size at 32-bit alignment: */"
- $as_echo " if (misaligned != sizeof(tme_uint32_t)"
- $as_echo "#if TME_IEEE754_FPREG_FORMAT_SINGLE != 1 || (TME_SPARC_MEMORY_FLAG_HAS_LDDF_STDF_32 * TME_IEEE754_FPREG_FORMAT_DOUBLE) != TME_SPARC_MEMORY_FLAG_HAS_LDQF_STQF_32"
- $as_echo "#error \"TME_IEEE754_FPREG_FORMAT_ or TME_SPARC_MEMORY_FLAG_ values changed\""
- $as_echo "#endif"
- $as_echo " || (TME_SPARC_MEMORY_FLAGS(ic)"
- $as_echo " & (TME_SPARC_MEMORY_FLAG_HAS_LDDF_STDF_32 * fpreg_format)) == 0) {"
- $as_echo ""
- $as_echo " return (float_buffer);"
- $as_echo " }"
+ AS_ECHO([" /* if the memory address is not even 32-bit aligned, or"])
+ AS_ECHO([" if this SPARC doesn't support loads and stores of this"])
+ AS_ECHO([" size at 32-bit alignment: */"])
+ AS_ECHO([" if (misaligned != sizeof(tme_uint32_t)"])
+ AS_ECHO(["#if TME_IEEE754_FPREG_FORMAT_SINGLE != 1 || (TME_SPARC_MEMORY_FLAG_HAS_LDDF_STDF_32 * TME_IEEE754_FPREG_FORMAT_DOUBLE) != TME_SPARC_MEMORY_FLAG_HAS_LDQF_STQF_32"])
+ AS_ECHO(["#error \"TME_IEEE754_FPREG_FORMAT_ or TME_SPARC_MEMORY_FLAG_ values changed\""])
+ AS_ECHO(["#endif"])
+ AS_ECHO([" || (TME_SPARC_MEMORY_FLAGS(ic)"])
+ AS_ECHO([" & (TME_SPARC_MEMORY_FLAG_HAS_LDDF_STDF_32 * fpreg_format)) == 0) {"])
+ AS_ECHO([""])
+ AS_ECHO([" return (float_buffer);"])
+ AS_ECHO([" }"])
fi
- $as_echo " }"
- $as_echo ""
- $as_echo " /* see if this is a floating-point load or store: */"
- $as_echo " /* NB: all of the floating-point instructions that use"
- $as_echo " this preamble have bit two of op3 clear for a load,"
- $as_echo " and set for a store: */"
- $as_echo " fp_store = (TME_SPARC_INSN & TME_BIT(19 + 2));"
- $as_echo ""
- $as_echo " /* if the FPU isn't in execute mode: */"
- $as_echo " fpu_mode = ic->tme_sparc_fpu_mode;"
- $as_echo " if (__tme_predict_false(fpu_mode != TME_SPARC_FPU_MODE_EXECUTE)) {"
- $as_echo ""
- $as_echo " /* if this is a floating-point load, or if this is a"
- $as_echo " floating-point store and a floating-point exception"
- $as_echo " is pending: */"
- $as_echo " if (!fp_store"
- $as_echo " || fpu_mode == TME_SPARC_FPU_MODE_EXCEPTION_PENDING) {"
- $as_echo ""
- $as_echo " /* do an FPU exception check: */"
- $as_echo " tme_sparc_fpu_exception_check(ic);"
- $as_echo " }"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* if this is not a load or store of a floating-point register: */"
- $as_echo " if (fpreg_format == TME_IEEE754_FPREG_FORMAT_NULL) {"
- $as_echo " return (float_buffer);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* decode rd: */"
- $as_echo " fpreg_number"
- $as_echo " = tme_sparc_fpu_fpreg_decode(ic,"
- $as_echo " TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN,"
- $as_echo " TME_SPARC_FORMAT3_MASK_RD),"
- $as_echo " fpreg_format);"
- $as_echo ""
- $as_echo " /* make sure this floating-point register has the right precision: */"
- $as_echo " tme_sparc_fpu_fpreg_format(ic, fpreg_number, fpreg_format | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
- $as_echo ""
- $as_echo " /* if this is a floating-point load: */"
- $as_echo " if (!fp_store) {"
- $as_echo ""
- $as_echo " /* mark rd as dirty: */"
- $as_echo " TME_SPARC_FPU_DIRTY(ic, fpreg_number);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* return the floating-point register: */"
- $as_echo " return (&ic->tme_sparc_fpu_fpregs[[fpreg_number]]);"
- $as_echo "}"
- $as_echo "#define _tme_sparc${arch}_fpu_mem(ic) \\"
- $as_echo " do { _tme_sparc${arch}_fpu_mem_fpreg(ic, 0, &_tme_sparc_float_null); } while (/* CONSTCOND */ 0)"
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* see if this is a floating-point load or store: */"])
+ AS_ECHO([" /* NB: all of the floating-point instructions that use"])
+ AS_ECHO([" this preamble have bit two of op3 clear for a load,"])
+ AS_ECHO([" and set for a store: */"])
+ AS_ECHO([" fp_store = (TME_SPARC_INSN & TME_BIT(19 + 2));"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the FPU isn't in execute mode: */"])
+ AS_ECHO([" fpu_mode = ic->tme_sparc_fpu_mode;"])
+ AS_ECHO([" if (__tme_predict_false(fpu_mode != TME_SPARC_FPU_MODE_EXECUTE)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is a floating-point load, or if this is a"])
+ AS_ECHO([" floating-point store and a floating-point exception"])
+ AS_ECHO([" is pending: */"])
+ AS_ECHO([" if (!fp_store"])
+ AS_ECHO([" || fpu_mode == TME_SPARC_FPU_MODE_EXCEPTION_PENDING) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do an FPU exception check: */"])
+ AS_ECHO([" tme_sparc_fpu_exception_check(ic);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is not a load or store of a floating-point register: */"])
+ AS_ECHO([" if (fpreg_format == TME_IEEE754_FPREG_FORMAT_NULL) {"])
+ AS_ECHO([" return (float_buffer);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* decode rd: */"])
+ AS_ECHO([" fpreg_number"])
+ AS_ECHO([" = tme_sparc_fpu_fpreg_decode(ic,"])
+ AS_ECHO([" TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN,"])
+ AS_ECHO([" TME_SPARC_FORMAT3_MASK_RD),"])
+ AS_ECHO([" fpreg_format);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* make sure this floating-point register has the right precision: */"])
+ AS_ECHO([" tme_sparc_fpu_fpreg_format(ic, fpreg_number, fpreg_format | TME_IEEE754_FPREG_FORMAT_BUILTIN);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is a floating-point load: */"])
+ AS_ECHO([" if (!fp_store) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* mark rd as dirty: */"])
+ AS_ECHO([" TME_SPARC_FPU_DIRTY(ic, fpreg_number);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* return the floating-point register: */"])
+ AS_ECHO([" return (&ic->tme_sparc_fpu_fpregs[[fpreg_number]]);"])
+ AS_ECHO(["}"])
+ AS_ECHO(["#define _tme_sparc${arch}_fpu_mem(ic) \\"])
+ AS_ECHO([" do { _tme_sparc${arch}_fpu_mem_fpreg(ic, 0, &_tme_sparc_float_null); } while (/* CONSTCOND */ 0)"])
fi
# permute over instruction:
@@ -355,7 +355,7 @@ for arch in 32 64; do
# if we're making the header, just emit declarations:
#
if $header; then
- $as_echo "TME_SPARC_FORMAT3_DECL(tme_sparc${arch}_${insn}, tme_uint${arch}_t);"
+ AS_ECHO(["TME_SPARC_FORMAT3_DECL(tme_sparc${arch}_${insn}, tme_uint${arch}_t);"])
continue
fi
@@ -401,130 +401,130 @@ for arch in 32 64; do
udiv | udivcc) arith=udiv ; size_src=32 ; size_dst=32 ;;
sdiv | sdivcc) arith=sdiv ; size_src=32 ; sign= ;;
mulscc) arith=add ; size_src=32 ; size_dst=32 ;;
- *) $as_echo "$0 internal error: unknown ALU function ${insn}" 1>&2 ; exit 1 ;;
+ *) AS_ECHO(["$0 internal error: unknown ALU function ${insn}"]) 1>&2 ; exit 1 ;;
esac
# open the function:
#
- $as_echo ""
- $as_echo "/* this does a sparc${arch} \"${insn} SRC1, SRC2, DST\": */"
- $as_echo "TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"
- $as_echo "{"
+ AS_ECHO([""])
+ AS_ECHO(["/* this does a sparc${arch} \"${insn} SRC1, SRC2, DST\": */"])
+ AS_ECHO(["TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"])
+ AS_ECHO(["{"])
# declare our locals:
#
- $as_echo " tme_${sign}int${size_src}_t src1;"
- $as_echo " tme_${sign}int${size_src}_t src2;"
- $as_echo " tme_${sign}int${size_dst}_t dst;"
+ AS_ECHO([" tme_${sign}int${size_src}_t src1;"])
+ AS_ECHO([" tme_${sign}int${size_src}_t src2;"])
+ AS_ECHO([" tme_${sign}int${size_dst}_t dst;"])
case "${insn}" in
umul* | smul* | udiv* | sdiv*)
- $as_echo " tme_${sign}int64_t val64;"
+ AS_ECHO([" tme_${sign}int64_t val64;"])
;;
mulscc)
- $as_echo " tme_uint32_t y;"
+ AS_ECHO([" tme_uint32_t y;"])
;;
esac
if ${cc}; then
- $as_echo " tme_uint32_t cc;"
+ AS_ECHO([" tme_uint32_t cc;"])
fi
cc_plus=
- $as_echo ""
- $as_echo " /* get the operands: */"
- $as_echo " src1 = (tme_${sign}int${arch}_t) TME_SPARC_FORMAT3_RS1;"
- $as_echo " src2 = (tme_${sign}int${arch}_t) TME_SPARC_FORMAT3_RS2;"
+ AS_ECHO([""])
+ AS_ECHO([" /* get the operands: */"])
+ AS_ECHO([" src1 = (tme_${sign}int${arch}_t) TME_SPARC_FORMAT3_RS1;"])
+ AS_ECHO([" src2 = (tme_${sign}int${arch}_t) TME_SPARC_FORMAT3_RS2;"])
- $as_echo ""
- $as_echo " /* perform the operation: */"
+ AS_ECHO([""])
+ AS_ECHO([" /* perform the operation: */"])
case "${insn}" in
umul | umulcc | smul | smulcc)
- $as_echo " val64 = (((tme_${sign}int64_t) src1) * src2);"
- $as_echo " ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_Y${reg32_shift}) = (((tme_uint64_t) val64) >> 32);"
- $as_echo " dst = ((tme_${sign}int64_t) val64);"
+ AS_ECHO([" val64 = (((tme_${sign}int64_t) src1) * src2);"])
+ AS_ECHO([" ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_Y${reg32_shift}) = (((tme_uint64_t) val64) >> 32);"])
+ AS_ECHO([" dst = ((tme_${sign}int64_t) val64);"])
;;
udiv | udivcc | sdiv | sdivcc)
- $as_echo " val64 = ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_Y${reg32_shift});"
- $as_echo " val64 = (val64 << 32) + (tme_uint32_t) src1;"
- $as_echo " if (__tme_predict_false(src2 == 0)) {"
- $as_echo " tme_sparc${arch}_trap(ic, TME_SPARC${arch}_TRAP_division_by_zero);"
- $as_echo " }"
- $as_echo " val64 /= src2;"
- $as_echo " dst = (tme_${sign}int32_t) val64;"
- $as_echo ""
- $as_echo " /* if the division overflowed: */"
- $as_echo " if (dst != val64) {"
- $as_echo ""
- $as_echo " /* return the largest appropriate value: */"
+ AS_ECHO([" val64 = ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_Y${reg32_shift});"])
+ AS_ECHO([" val64 = (val64 << 32) + (tme_uint32_t) src1;"])
+ AS_ECHO([" if (__tme_predict_false(src2 == 0)) {"])
+ AS_ECHO([" tme_sparc${arch}_trap(ic, TME_SPARC${arch}_TRAP_division_by_zero);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" val64 /= src2;"])
+ AS_ECHO([" dst = (tme_${sign}int32_t) val64;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the division overflowed: */"])
+ AS_ECHO([" if (dst != val64) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* return the largest appropriate value: */"])
if test "x${sign}" = xu; then
- $as_echo " dst = 0xffffffff;"
+ AS_ECHO([" dst = 0xffffffff;"])
else
- $as_echo " dst = (tme_int32_t) ((val64 < 0) + (tme_uint32_t) 0x7fffffff);"
+ AS_ECHO([" dst = (tme_int32_t) ((val64 < 0) + (tme_uint32_t) 0x7fffffff);"])
fi
if ${cc}; then
- $as_echo ""
- $as_echo " /* set V: */"
- $as_echo " cc = TME_SPARC${ccr}_ICC_V;"
+ AS_ECHO([""])
+ AS_ECHO([" /* set V: */"])
+ AS_ECHO([" cc = TME_SPARC${ccr}_ICC_V;"])
fi
- $as_echo " }"
+ AS_ECHO([" }"])
if ${cc}; then
- $as_echo ""
- $as_echo " /* otherwise, the division didn't overflow: */"
- $as_echo " else {"
- $as_echo ""
- $as_echo " /* clear V: */"
- $as_echo " cc = !TME_SPARC${ccr}_ICC_V;"
- $as_echo " }"
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, the division didn't overflow: */"])
+ AS_ECHO([" else {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* clear V: */"])
+ AS_ECHO([" cc = !TME_SPARC${ccr}_ICC_V;"])
+ AS_ECHO([" }"])
cc_plus='+'
fi
;;
mulscc)
- $as_echo ""
- $as_echo " /* \"(1) The multiplier is established as r[[rs2]] if the i field is zero, or "
- $as_echo " sign_ext(simm13) if the i field is one.\""
- $as_echo ""
- $as_echo " \"(3) If the least significant bit of the Y register = 1, the shifted"
- $as_echo " value from step (2) is added to the multiplier. If the LSB of the"
- $as_echo " Y register = 0, then 0 is added to the shifted value from step (2).\" */"
- $as_echo " y = ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_Y${reg32_shift});"
- $as_echo " if ((y & 1) == 0) {"
- $as_echo " src2 = 0;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* \"(6) The Y register is shifted right by one bit, with the LSB of the"
- $as_echo " unshifted r[[rs1]] replacing the MSB of Y.\" */"
- $as_echo " y >>= 1;"
- $as_echo " if (src1 & 1) {"
- $as_echo " y += 0x80000000;"
- $as_echo " }"
- $as_echo " ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_Y${reg32_shift}) = y;"
- $as_echo ""
- $as_echo " /* \"(2) A 32-bit value is computed by shifting r[[rs1]] right by one"
- $as_echo " bit with (N xor V) from the PSR replacing the high-order bit."
- $as_echo " (This is the proper sign for the previous partial product.)\" */"
- $as_echo " src1 >>= 1;"
- $as_echo " if (((ic->${ccr_ireg} ^ (ic->${ccr_ireg} * (TME_SPARC${ccr}_ICC_N / TME_SPARC${ccr}_ICC_V))) & TME_SPARC${ccr}_ICC_N) != 0) {"
- $as_echo " src1 += 0x80000000;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* \"(4) The sum from step (3) is written into r[[rd]].\" */"
- $as_echo " dst = src1 + src2;"
- $as_echo ""
- $as_echo " /* \"(5) The integer condition codes, icc, are updated according to the"
- $as_echo " addition performed in step (3).\" */"
+ AS_ECHO([""])
+ AS_ECHO([" /* \"(1) The multiplier is established as r[[rs2]] if the i field is zero, or "])
+ AS_ECHO([" sign_ext(simm13) if the i field is one.\""])
+ AS_ECHO([""])
+ AS_ECHO([" \"(3) If the least significant bit of the Y register = 1, the shifted"])
+ AS_ECHO([" value from step (2) is added to the multiplier. If the LSB of the"])
+ AS_ECHO([" Y register = 0, then 0 is added to the shifted value from step (2).\" */"])
+ AS_ECHO([" y = ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_Y${reg32_shift});"])
+ AS_ECHO([" if ((y & 1) == 0) {"])
+ AS_ECHO([" src2 = 0;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* \"(6) The Y register is shifted right by one bit, with the LSB of the"])
+ AS_ECHO([" unshifted r[[rs1]] replacing the MSB of Y.\" */"])
+ AS_ECHO([" y >>= 1;"])
+ AS_ECHO([" if (src1 & 1) {"])
+ AS_ECHO([" y += 0x80000000;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_Y${reg32_shift}) = y;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* \"(2) A 32-bit value is computed by shifting r[[rs1]] right by one"])
+ AS_ECHO([" bit with (N xor V) from the PSR replacing the high-order bit."])
+ AS_ECHO([" (This is the proper sign for the previous partial product.)\" */"])
+ AS_ECHO([" src1 >>= 1;"])
+ AS_ECHO([" if (((ic->${ccr_ireg} ^ (ic->${ccr_ireg} * (TME_SPARC${ccr}_ICC_N / TME_SPARC${ccr}_ICC_V))) & TME_SPARC${ccr}_ICC_N) != 0) {"])
+ AS_ECHO([" src1 += 0x80000000;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* \"(4) The sum from step (3) is written into r[[rd]].\" */"])
+ AS_ECHO([" dst = src1 + src2;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* \"(5) The integer condition codes, icc, are updated according to the"])
+ AS_ECHO([" addition performed in step (3).\" */"])
;;
*)
- $as_echo " dst = ${op};"
+ AS_ECHO([" dst = ${op};"])
if test "x${with_c}" != x; then
- $as_echo " dst ${with_c}= ((ic->${ccr_ireg} & TME_SPARC${ccr}_ICC_C) != 0);"
+ AS_ECHO([" dst ${with_c}= ((ic->${ccr_ireg} & TME_SPARC${ccr}_ICC_C) != 0);"])
fi
esac
# unless this is a tagged-and-trap-on-overflow operation:
#
if test "x${tagged}" != xtv; then
- $as_echo ""
- $as_echo " /* store the destination: */"
- $as_echo " TME_SPARC_FORMAT3_RD = (tme_${sign}int${arch}_t) dst;"
+ AS_ECHO([""])
+ AS_ECHO([" /* store the destination: */"])
+ AS_ECHO([" TME_SPARC_FORMAT3_RD = (tme_${sign}int${arch}_t) dst;"])
fi
# if this instruction modifies the condition codes:
@@ -542,52 +542,52 @@ for arch in 32 64; do
64) xcc=XCC ;;
esac
- $as_echo ""
- $as_echo " /* set Z if the destination is zero: */"
- $as_echo " cc ${cc_plus}= ((((tme_int${arch_cc}_t) dst) == 0) * TME_SPARC${ccr}_${xcc}_Z);"
+ AS_ECHO([""])
+ AS_ECHO([" /* set Z if the destination is zero: */"])
+ AS_ECHO([" cc ${cc_plus}= ((((tme_int${arch_cc}_t) dst) == 0) * TME_SPARC${ccr}_${xcc}_Z);"])
cc_plus='+'
if test `expr ${arch_cc} \<= ${size_dst}` = 1; then
- $as_echo ""
- $as_echo " /* set N if the destination is negative: */"
- $as_echo " cc += ((((tme_int${arch_cc}_t) dst) < 0) * TME_SPARC${ccr}_${xcc}_N);"
+ AS_ECHO([""])
+ AS_ECHO([" /* set N if the destination is negative: */"])
+ AS_ECHO([" cc += ((((tme_int${arch_cc}_t) dst) < 0) * TME_SPARC${ccr}_${xcc}_N);"])
fi
case $arith in
add)
ones="(((tme_${sign}int${arch_cc}_t) 0) - 1)"
- $as_echo ""
- $as_echo " /* if the operands are the same sign, and the destination has"
- $as_echo " a different sign, set V: */"
- $as_echo " cc += ((((tme_int${arch_cc}_t) ((src2 ^ dst) & (src1 ^ (src2 ^ ${ones})))) < 0) * TME_SPARC${ccr}_${xcc}_V);"
+ AS_ECHO([""])
+ AS_ECHO([" /* if the operands are the same sign, and the destination has"])
+ AS_ECHO([" a different sign, set V: */"])
+ AS_ECHO([" cc += ((((tme_int${arch_cc}_t) ((src2 ^ dst) & (src1 ^ (src2 ^ ${ones})))) < 0) * TME_SPARC${ccr}_${xcc}_V);"])
- $as_echo ""
- $as_echo " /* if src1 and src2 both have the high bit set, or if dst does"
- $as_echo " not have the high bit set and either src1 or src2 does, set C: */"
- $as_echo " cc += (((tme_int${arch_cc}_t) (((tme_uint${arch_cc}_t) (src1 & src2)) | ((((tme_uint${arch_cc}_t) dst) ^ ${ones}) & ((tme_uint${arch_cc}_t) (src1 | src2))))) < 0) * TME_SPARC${ccr}_${xcc}_C;"
+ AS_ECHO([""])
+ AS_ECHO([" /* if src1 and src2 both have the high bit set, or if dst does"])
+ AS_ECHO([" not have the high bit set and either src1 or src2 does, set C: */"])
+ AS_ECHO([" cc += (((tme_int${arch_cc}_t) (((tme_uint${arch_cc}_t) (src1 & src2)) | ((((tme_uint${arch_cc}_t) dst) ^ ${ones}) & ((tme_uint${arch_cc}_t) (src1 | src2))))) < 0) * TME_SPARC${ccr}_${xcc}_C;"])
;;
sub)
- $as_echo ""
- $as_echo " /* if the operands are different signs, and the destination has"
- $as_echo " a different sign from the first operand, set V: */"
- $as_echo " cc += ((((tme_int${arch_cc}_t) ((src1 ^ src2) & (src1 ^ dst))) < 0) * TME_SPARC${ccr}_${xcc}_V);"
+ AS_ECHO([""])
+ AS_ECHO([" /* if the operands are different signs, and the destination has"])
+ AS_ECHO([" a different sign from the first operand, set V: */"])
+ AS_ECHO([" cc += ((((tme_int${arch_cc}_t) ((src1 ^ src2) & (src1 ^ dst))) < 0) * TME_SPARC${ccr}_${xcc}_V);"])
- $as_echo ""
- $as_echo " /* if src2 is greater than src1, set C: */"
- $as_echo_n " cc += ((((tme_uint${arch_cc}_t) src2) > ((tme_uint${arch_cc}_t) src1))"
+ AS_ECHO([""])
+ AS_ECHO([" /* if src2 is greater than src1, set C: */"])
+ AS_ECHO_N([" cc += ((((tme_uint${arch_cc}_t) src2) > ((tme_uint${arch_cc}_t) src1))"])
if test "x${with_c}" != x; then
- $as_echo_n " || (((tme_uint${arch_cc}_t) src2) == ((tme_uint${arch_cc}_t) src1) && (ic->${ccr_ireg} & TME_SPARC${ccr}_ICC_C))"
+ AS_ECHO_N([" || (((tme_uint${arch_cc}_t) src2) == ((tme_uint${arch_cc}_t) src1) && (ic->${ccr_ireg} & TME_SPARC${ccr}_ICC_C))"])
fi
- $as_echo ") * TME_SPARC${ccr}_${xcc}_C;"
+ AS_ECHO([") * TME_SPARC${ccr}_${xcc}_C;"])
;;
logical | mul)
;;
udiv | sdiv)
# the udivcc and sdivcc V are handled in the operation code
;;
- *) $as_echo "$0 internal error: unknown arithmetic type ${arith}" 1>&2 ; exit 1 ;;
+ *) AS_ECHO(["$0 internal error: unknown arithmetic type ${arith}"]) 1>&2 ; exit 1 ;;
esac
done
@@ -595,37 +595,37 @@ for arch in 32 64; do
#
if test "x${tagged}" != x; then
- $as_echo ""
- $as_echo " /* set V if bits zero or one of src1 or src2 are set: */"
- $as_echo " cc |= ((((src1 | src2) & 3) != 0) * TME_SPARC${ccr}_ICC_V);"
+ AS_ECHO([""])
+ AS_ECHO([" /* set V if bits zero or one of src1 or src2 are set: */"])
+ AS_ECHO([" cc |= ((((src1 | src2) & 3) != 0) * TME_SPARC${ccr}_ICC_V);"])
# if this is a tagged-and-trap-on-overflow operation:
#
if test "x${tagged}" = xtv; then
- $as_echo ""
- $as_echo " /* trap on a tagged overflow: */"
- $as_echo " if (cc & TME_SPARC${ccr}_ICC_V) {"
- $as_echo " tme_sparc${arch}_trap(ic, TME_SPARC${arch}_TRAP_tag_overflow);"
- $as_echo " }"
+ AS_ECHO([""])
+ AS_ECHO([" /* trap on a tagged overflow: */"])
+ AS_ECHO([" if (cc & TME_SPARC${ccr}_ICC_V) {"])
+ AS_ECHO([" tme_sparc${arch}_trap(ic, TME_SPARC${arch}_TRAP_tag_overflow);"])
+ AS_ECHO([" }"])
- $as_echo " /* store the destination: */"
- $as_echo " TME_SPARC_FORMAT3_RD = (tme_${sign}int${arch}_t) dst;"
+ AS_ECHO([" /* store the destination: */"])
+ AS_ECHO([" TME_SPARC_FORMAT3_RD = (tme_${sign}int${arch}_t) dst;"])
fi
fi
- $as_echo ""
- $as_echo " /* set the condition codes: */"
- $as_echo_n " ic->${ccr_ireg} = "
+ AS_ECHO([""])
+ AS_ECHO([" /* set the condition codes: */"])
+ AS_ECHO_N([" ic->${ccr_ireg} = "])
if test ${arch} = 32; then
- $as_echo_n "(ic->${ccr_ireg} & ~TME_SPARC32_PSR_ICC) | "
+ AS_ECHO_N(["(ic->${ccr_ireg} & ~TME_SPARC32_PSR_ICC) | "])
fi
- $as_echo "cc;"
+ AS_ECHO(["cc;"])
fi
- $as_echo ""
- $as_echo " TME_SPARC_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" TME_SPARC_INSN_OK;"])
+ AS_ECHO(["}"])
fi
# a shift instruction:
@@ -637,65 +637,65 @@ for arch in 32 64; do
#
if test ${insn} = sra; then sign= ; else sign=u; fi
- $as_echo ""
- $as_echo "/* the sparc${arch} ${insn} function: */"
- $as_echo "TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"
- $as_echo "{"
- $as_echo " tme_${sign}int${arch}_t dst;"
- $as_echo " unsigned int count;"
- $as_echo ""
- $as_echo " /* get the value and the shift count: */"
- $as_echo " dst = TME_SPARC_FORMAT3_RS1;"
- $as_echo " count = TME_SPARC_FORMAT3_RS2;"
+ AS_ECHO([""])
+ AS_ECHO(["/* the sparc${arch} ${insn} function: */"])
+ AS_ECHO(["TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"])
+ AS_ECHO(["{"])
+ AS_ECHO([" tme_${sign}int${arch}_t dst;"])
+ AS_ECHO([" unsigned int count;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the value and the shift count: */"])
+ AS_ECHO([" dst = TME_SPARC_FORMAT3_RS1;"])
+ AS_ECHO([" count = TME_SPARC_FORMAT3_RS2;"])
# if we're on sparc64:
#
if test ${arch} = 64; then
- $as_echo ""
- $as_echo " /* if the X bit is clear: */"
- $as_echo " if ((TME_SPARC_INSN & TME_BIT(12)) == 0) {"
- $as_echo ""
- $as_echo " /* limit the count: */"
- $as_echo " count %= 32;"
+ AS_ECHO([""])
+ AS_ECHO([" /* if the X bit is clear: */"])
+ AS_ECHO([" if ((TME_SPARC_INSN & TME_BIT(12)) == 0) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* limit the count: */"])
+ AS_ECHO([" count %= 32;"])
if test ${insn} != sll; then
- $as_echo ""
- $as_echo " /* clip the value to 32 bits: */"
- $as_echo " dst = (tme_${sign}int32_t) dst;"
+ AS_ECHO([""])
+ AS_ECHO([" /* clip the value to 32 bits: */"])
+ AS_ECHO([" dst = (tme_${sign}int32_t) dst;"])
fi
- $as_echo " }"
+ AS_ECHO([" }"])
fi
- $as_echo ""
- $as_echo " /* limit the count: */"
- $as_echo " count %= ${arch};"
- $as_echo ""
- $as_echo " /* do the shift: */"
+ AS_ECHO([""])
+ AS_ECHO([" /* limit the count: */"])
+ AS_ECHO([" count %= ${arch};"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do the shift: */"])
if test "${insn}" = sra; then
- $as_echo "#ifdef SHIFTSIGNED_INT${arch}_T"
+ AS_ECHO(["#ifdef SHIFTSIGNED_INT${arch}_T"])
fi
- $as_echo "#if defined(SHIFTMAX_INT${arch}_T) && (SHIFTMAX_INT${arch}_T < (${arch} - 1))"
- $as_echo "#error \"cannot do full shifts of a tme_int${arch}_t\""
- $as_echo "#endif /* (SHIFTMAX_INT${arch}_T < (${arch} - 1)) */"
+ AS_ECHO(["#if defined(SHIFTMAX_INT${arch}_T) && (SHIFTMAX_INT${arch}_T < (${arch} - 1))"])
+ AS_ECHO(["#error \"cannot do full shifts of a tme_int${arch}_t\""])
+ AS_ECHO(["#endif /* (SHIFTMAX_INT${arch}_T < (${arch} - 1)) */"])
if test ${insn} = sll; then
- $as_echo " dst <<= count;"
+ AS_ECHO([" dst <<= count;"])
else
- $as_echo " dst >>= count;"
+ AS_ECHO([" dst >>= count;"])
fi
if test "${insn}" = sra; then
- $as_echo "#else /* !SHIFTSIGNED_INT${arch}_T */"
- $as_echo " for (; count-- > 0; ) {"
- $as_echo " dst = (dst & ~((tme_${sign}int${arch}_t) 1)) / 2;"
- $as_echo " }"
- $as_echo "#endif /* !SHIFTSIGNED_INT${arch}_T */"
+ AS_ECHO(["#else /* !SHIFTSIGNED_INT${arch}_T */"])
+ AS_ECHO([" for (; count-- > 0; ) {"])
+ AS_ECHO([" dst = (dst & ~((tme_${sign}int${arch}_t) 1)) / 2;"])
+ AS_ECHO([" }"])
+ AS_ECHO(["#endif /* !SHIFTSIGNED_INT${arch}_T */"])
fi
- $as_echo ""
- $as_echo " /* store the destination: */"
- $as_echo " TME_SPARC_FORMAT3_RD = dst;"
- $as_echo ""
- $as_echo " TME_SPARC_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" /* store the destination: */"])
+ AS_ECHO([" TME_SPARC_FORMAT3_RD = dst;"])
+ AS_ECHO([""])
+ AS_ECHO([" TME_SPARC_INSN_OK;"])
+ AS_ECHO(["}"])
;;
esac
@@ -707,35 +707,35 @@ for arch in 32 64; do
*) sign=x ;;
esac
if test "x${sign}" != xx; then
- $as_echo ""
- $as_echo "/* the sparc${arch} ${insn} function: */"
- $as_echo "TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"
- $as_echo "{"
- $as_echo " tme_${sign}int64_t src1;"
- $as_echo " tme_${sign}int64_t src2;"
- $as_echo " tme_${sign}int64_t dst;"
- $as_echo ""
- $as_echo " /* get the operands: */"
- $as_echo " src1 = TME_SPARC_FORMAT3_RS1;"
- $as_echo " src2 = TME_SPARC_FORMAT3_RS2;"
- $as_echo ""
- $as_echo " /* do the ${insn}: */"
+ AS_ECHO([""])
+ AS_ECHO(["/* the sparc${arch} ${insn} function: */"])
+ AS_ECHO(["TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"])
+ AS_ECHO(["{"])
+ AS_ECHO([" tme_${sign}int64_t src1;"])
+ AS_ECHO([" tme_${sign}int64_t src2;"])
+ AS_ECHO([" tme_${sign}int64_t dst;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the operands: */"])
+ AS_ECHO([" src1 = TME_SPARC_FORMAT3_RS1;"])
+ AS_ECHO([" src2 = TME_SPARC_FORMAT3_RS2;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do the ${insn}: */"])
if test ${insn} = mulx; then
- $as_echo " dst = src1 * src2;"
+ AS_ECHO([" dst = src1 * src2;"])
else
- $as_echo " if (__tme_predict_false(src2 == 0)) {"
- $as_echo " tme_sparc${arch}_trap(ic, TME_SPARC${arch}_TRAP_division_by_zero);"
- $as_echo " }"
+ AS_ECHO([" if (__tme_predict_false(src2 == 0)) {"])
+ AS_ECHO([" tme_sparc${arch}_trap(ic, TME_SPARC${arch}_TRAP_division_by_zero);"])
+ AS_ECHO([" }"])
if test ${insn} = sdivx; then
- $as_echo " dst = (src2 == -1 && src1 == (((tme_int64_t) 1) << 63) ? src1 : src1 / src2);"
+ AS_ECHO([" dst = (src2 == -1 && src1 == (((tme_int64_t) 1) << 63) ? src1 : src1 / src2);"])
else
- $as_echo " dst = src1 / src2;"
+ AS_ECHO([" dst = src1 / src2;"])
fi
fi
- $as_echo ""
- $as_echo " TME_SPARC_FORMAT3_RD = dst;"
- $as_echo " TME_SPARC_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" TME_SPARC_FORMAT3_RD = dst;"])
+ AS_ECHO([" TME_SPARC_INSN_OK;"])
+ AS_ECHO(["}"])
fi
# a load or store instruction:
@@ -783,77 +783,77 @@ for arch in 32 64; do
# start the instruction:
#
- $as_echo ""
- $as_echo "/* this does a sparc${arch} ${insn}: */"
- $as_echo "TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"
- $as_echo "{"
+ AS_ECHO([""])
+ AS_ECHO(["/* this does a sparc${arch} ${insn}: */"])
+ AS_ECHO(["TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"])
+ AS_ECHO(["{"])
# our locals:
#
if ${alternate}; then
- $as_echo " tme_uint32_t asi_mask_data;"
+ AS_ECHO([" tme_uint32_t asi_mask_data;"])
asi_mask_data=asi_mask_data
else
asi_mask_data="ic->tme_sparc_asi_mask_data"
fi
- $as_echo " tme_uint${arch}_t address;"
+ AS_ECHO([" tme_uint${arch}_t address;"])
if test ${arch} = 64 && ${alternate}; then
- $as_echo " tme_bus_context_t context;"
+ AS_ECHO([" tme_bus_context_t context;"])
context=context
else
context="ic->tme_sparc_memory_context_default"
fi
- $as_echo " tme_uint32_t asi_mask_flags_slow;"
- $as_echo " struct tme_sparc_tlb *dtlb;"
- $as_echo_n " "
- if test ${slow} = load; then $as_echo_n "const "; fi
- $as_echo "tme_shared tme_uint8_t *memory;"
- $as_echo " tme_bus_context_t dtlb_context;"
- $as_echo " tme_uint32_t endian_little;"
+ AS_ECHO([" tme_uint32_t asi_mask_flags_slow;"])
+ AS_ECHO([" struct tme_sparc_tlb *dtlb;"])
+ AS_ECHO_N([" "])
+ if test ${slow} = load; then AS_ECHO_N(["const "]); fi
+ AS_ECHO(["tme_shared tme_uint8_t *memory;"])
+ AS_ECHO([" tme_bus_context_t dtlb_context;"])
+ AS_ECHO([" tme_uint32_t endian_little;"])
case "${insn}" in
- ldd* | std* | swap*) $as_echo " tme_uint32_t value32;" ;;
+ ldd* | std* | swap*) AS_ECHO([" tme_uint32_t value32;"]) ;;
ldstub*) ;;
cas*a)
- $as_echo " unsigned int reg_rs2;"
- $as_echo " tme_uint${size}_t value_compare${size};"
- $as_echo " tme_uint${size}_t value_swap${size};"
- $as_echo " tme_uint${size}_t value_read${size};"
+ AS_ECHO([" unsigned int reg_rs2;"])
+ AS_ECHO([" tme_uint${size}_t value_compare${size};"])
+ AS_ECHO([" tme_uint${size}_t value_swap${size};"])
+ AS_ECHO([" tme_uint${size}_t value_read${size};"])
;;
ld*)
- $as_echo " tme_uint${size}_t value${size};"
+ AS_ECHO([" tme_uint${size}_t value${size};"])
size_extend=${arch}
if test `expr ${size} \< ${arch}` = 1; then
if test `expr ${size} \< 32` = 1; then size_extend=32; fi
- $as_echo " tme_uint${size_extend}_t value${size_extend};"
+ AS_ECHO([" tme_uint${size_extend}_t value${size_extend};"])
fi
;;
- st*) $as_echo " tme_uint${size}_t value${size};" ;;
+ st*) AS_ECHO([" tme_uint${size}_t value${size};"]) ;;
esac
if ${alternate}; then
- $as_echo ""
- $as_echo " /* get the alternate ASI mask: */"
- $as_echo " asi_mask_data = _tme_sparc${arch}_alternate_asi_mask(ic);"
+ AS_ECHO([""])
+ AS_ECHO([" /* get the alternate ASI mask: */"])
+ AS_ECHO([" asi_mask_data = _tme_sparc${arch}_alternate_asi_mask(ic);"])
fi
- $as_echo ""
- $as_echo " /* get the address: */"
+ AS_ECHO([""])
+ AS_ECHO([" /* get the address: */"])
case "${insn}" in
- cas*a) $as_echo " address = TME_SPARC_FORMAT3_RS1;" ;;
- *) $as_echo " address = TME_SPARC_FORMAT3_RS1 + TME_SPARC_FORMAT3_RS2;" ;;
+ cas*a) AS_ECHO([" address = TME_SPARC_FORMAT3_RS1;"]) ;;
+ *) AS_ECHO([" address = TME_SPARC_FORMAT3_RS1 + TME_SPARC_FORMAT3_RS2;"]) ;;
esac
if test ${arch} = 64; then
- $as_echo " address &= ic->tme_sparc_address_mask;"
+ AS_ECHO([" address &= ic->tme_sparc_address_mask;"])
fi
- $as_echo ""
- $as_echo "#ifdef _TME_SPARC_STATS"
- $as_echo " /* track statistics: */"
- $as_echo " ic->tme_sparc_stats.tme_sparc_stats_memory_total++;"
- $as_echo "#endif /* _TME_SPARC_STATS */"
-
- $as_echo ""
- $as_echo " /* verify and maybe replay this transfer: */"
+ AS_ECHO([""])
+ AS_ECHO(["#ifdef _TME_SPARC_STATS"])
+ AS_ECHO([" /* track statistics: */"])
+ AS_ECHO([" ic->tme_sparc_stats.tme_sparc_stats_memory_total++;"])
+ AS_ECHO(["#endif /* _TME_SPARC_STATS */"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* verify and maybe replay this transfer: */"])
if ${double}; then verify_size=32; else verify_size=${size}; fi
case "${insn}" in
ld*) verify_flags=TME_SPARC_RECODE_VERIFY_MEM_LOAD ;;
@@ -861,411 +861,411 @@ for arch in 32 64; do
st*) verify_flags=TME_SPARC_RECODE_VERIFY_MEM_STORE ;;
*) verify_flags= ;;
esac
- $as_echo " tme_sparc_recode_verify_mem(ic, &TME_SPARC_FORMAT3_RD,"
- $as_echo " ${asi_mask_data}, address,"
- $as_echo " (TME_RECODE_SIZE_${verify_size}"
- $as_echo " | ${verify_flags}));"
+ AS_ECHO([" tme_sparc_recode_verify_mem(ic, &TME_SPARC_FORMAT3_RD,"])
+ AS_ECHO([" ${asi_mask_data}, address,"])
+ AS_ECHO([" (TME_RECODE_SIZE_${verify_size}"])
+ AS_ECHO([" | ${verify_flags}));"])
if ${double}; then
- $as_echo " tme_sparc_recode_verify_mem(ic, &TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch}),"
- $as_echo " ${asi_mask_data}, address + sizeof(tme_uint32_t),"
- $as_echo " (TME_RECODE_SIZE_${verify_size}"
- $as_echo " | ${verify_flags}));"
+ AS_ECHO([" tme_sparc_recode_verify_mem(ic, &TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch}),"])
+ AS_ECHO([" ${asi_mask_data}, address + sizeof(tme_uint32_t),"])
+ AS_ECHO([" (TME_RECODE_SIZE_${verify_size}"])
+ AS_ECHO([" | ${verify_flags}));"])
fi
- $as_echo " if (tme_sparc_recode_verify_replay_last_pc(ic) != 0) {"
- $as_echo " TME_SPARC_INSN_OK;"
- $as_echo " }"
+ AS_ECHO([" if (tme_sparc_recode_verify_replay_last_pc(ic) != 0) {"])
+ AS_ECHO([" TME_SPARC_INSN_OK;"])
+ AS_ECHO([" }"])
# if this is some kind of a store, except for an ldstub:
#
case "${insn}" in
std*)
- $as_echo ""
- $as_echo " /* log the values stored: */"
- $as_echo " tme_sparc_log(ic, 1000, TME_OK, "
- $as_echo " (TME_SPARC_LOG_HANDLE(ic),"
- $as_echo " _(\"${insn}\t0x%02x:0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \":\t0x%08\" TME_PRIx32 \" 0x%08\" TME_PRIx32),"
- $as_echo " TME_SPARC_ASI_MASK_WHICH(${asi_mask_data} & ~TME_SPARC_ASI_MASK_FLAG_UNDEF),"
- $as_echo " address,"
- $as_echo " (tme_uint32_t) TME_SPARC_FORMAT3_RD,"
- $as_echo " (tme_uint32_t) TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch})));"
+ AS_ECHO([""])
+ AS_ECHO([" /* log the values stored: */"])
+ AS_ECHO([" tme_sparc_log(ic, 1000, TME_OK, "])
+ AS_ECHO([" (TME_SPARC_LOG_HANDLE(ic),"])
+ AS_ECHO([" _(\"${insn}\t0x%02x:0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \":\t0x%08\" TME_PRIx32 \" 0x%08\" TME_PRIx32),"])
+ AS_ECHO([" TME_SPARC_ASI_MASK_WHICH(${asi_mask_data} & ~TME_SPARC_ASI_MASK_FLAG_UNDEF),"])
+ AS_ECHO([" address,"])
+ AS_ECHO([" (tme_uint32_t) TME_SPARC_FORMAT3_RD,"])
+ AS_ECHO([" (tme_uint32_t) TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch})));"])
;;
st* | swap* | cas*a)
- $as_echo ""
- $as_echo " /* log the value stored: */"
- $as_echo " tme_sparc_log(ic, 1000, TME_OK, "
- $as_echo " (TME_SPARC_LOG_HANDLE(ic),"
- $as_echo " _(\"${insn}\t0x%02x:0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \":\t0x%0"`expr ${size} / 4`"\" TME_PRIx${size}),"
- $as_echo " TME_SPARC_ASI_MASK_WHICH(${asi_mask_data} & ~TME_SPARC_ASI_MASK_FLAG_UNDEF),"
- $as_echo " address,"
- $as_echo " (tme_uint${size}_t) TME_SPARC_FORMAT3_RD));"
+ AS_ECHO([""])
+ AS_ECHO([" /* log the value stored: */"])
+ AS_ECHO([" tme_sparc_log(ic, 1000, TME_OK, "])
+ AS_ECHO([" (TME_SPARC_LOG_HANDLE(ic),"])
+ AS_ECHO([" _(\"${insn}\t0x%02x:0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \":\t0x%0"`expr ${size} / 4`"\" TME_PRIx${size}),"])
+ AS_ECHO([" TME_SPARC_ASI_MASK_WHICH(${asi_mask_data} & ~TME_SPARC_ASI_MASK_FLAG_UNDEF),"])
+ AS_ECHO([" address,"])
+ AS_ECHO([" (tme_uint${size}_t) TME_SPARC_FORMAT3_RD));"])
;;
esac
if test "${context}" = context; then
- $as_echo ""
- $as_echo " /* get the context: */"
+ AS_ECHO([""])
+ AS_ECHO([" /* get the context: */"])
if test ${arch} = 64; then
- $as_echo " context = ic->tme_sparc_memory_context_primary;"
- $as_echo " if (__tme_predict_false(${asi_mask_data}"
- $as_echo " & (TME_SPARC64_ASI_FLAG_SECONDARY"
- $as_echo " + TME_SPARC64_ASI_MASK_FLAG_INSN_NUCLEUS))) {"
- $as_echo " if (${asi_mask_data} & TME_SPARC64_ASI_FLAG_SECONDARY) {"
- $as_echo " context = ic->tme_sparc_memory_context_secondary;"
- $as_echo " }"
- $as_echo " else if (TME_SPARC_MEMORY_FLAGS(ic) & TME_SPARC_MEMORY_FLAG_HAS_NUCLEUS) {"
- $as_echo " context = 0;"
- $as_echo " }"
- $as_echo " }"
+ AS_ECHO([" context = ic->tme_sparc_memory_context_primary;"])
+ AS_ECHO([" if (__tme_predict_false(${asi_mask_data}"])
+ AS_ECHO([" & (TME_SPARC64_ASI_FLAG_SECONDARY"])
+ AS_ECHO([" + TME_SPARC64_ASI_MASK_FLAG_INSN_NUCLEUS))) {"])
+ AS_ECHO([" if (${asi_mask_data} & TME_SPARC64_ASI_FLAG_SECONDARY) {"])
+ AS_ECHO([" context = ic->tme_sparc_memory_context_secondary;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else if (TME_SPARC_MEMORY_FLAGS(ic) & TME_SPARC_MEMORY_FLAG_HAS_NUCLEUS) {"])
+ AS_ECHO([" context = 0;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
fi
fi
- $as_echo ""
- $as_echo " /* assume that no DTLB ASI mask flags will require a slow ${slow}: */"
- $as_echo " asi_mask_flags_slow = 0;"
+ AS_ECHO([""])
+ AS_ECHO([" /* assume that no DTLB ASI mask flags will require a slow ${slow}: */"])
+ AS_ECHO([" asi_mask_flags_slow = 0;"])
if test ${arch} = 64; then
- $as_echo ""
+ AS_ECHO([""])
if test ${slow} != load || ${atomic}; then
- $as_echo " /* a ${insn} traps on no-fault addresses: */"
+ AS_ECHO([" /* a ${insn} traps on no-fault addresses: */"])
else
- $as_echo " /* a ${insn} without a no-fault ASI traps on no-fault addresses: */"
+ AS_ECHO([" /* a ${insn} without a no-fault ASI traps on no-fault addresses: */"])
fi
- $as_echo " asi_mask_flags_slow |= TME_SPARC64_ASI_FLAG_NO_FAULT;"
+ AS_ECHO([" asi_mask_flags_slow |= TME_SPARC64_ASI_FLAG_NO_FAULT;"])
if ${atomic}; then
- $as_echo ""
- $as_echo " /* a ${insn} traps on uncacheable addresses with side-effects: */"
- $as_echo " asi_mask_flags_slow |= TME_SPARC64_ASI_MASK_FLAG_TLB_UNCACHEABLE;"
+ AS_ECHO([""])
+ AS_ECHO([" /* a ${insn} traps on uncacheable addresses with side-effects: */"])
+ AS_ECHO([" asi_mask_flags_slow |= TME_SPARC64_ASI_MASK_FLAG_TLB_UNCACHEABLE;"])
fi
if ${alternate}; then
- $as_echo ""
- $as_echo " /* if this ${insn} is using a no-fault ASI: */"
- $as_echo " if (__tme_predict_false(${asi_mask_data} & TME_SPARC64_ASI_FLAG_NO_FAULT)) {"
- $as_echo ""
+ AS_ECHO([""])
+ AS_ECHO([" /* if this ${insn} is using a no-fault ASI: */"])
+ AS_ECHO([" if (__tme_predict_false(${asi_mask_data} & TME_SPARC64_ASI_FLAG_NO_FAULT)) {"])
+ AS_ECHO([""])
if test ${slow} != load || ${atomic}; then
- $as_echo " /* a ${insn} with a no-fault ASI traps: */"
- $as_echo " asi_mask_flags_slow = 0 - (tme_uint32_t) 1;"
+ AS_ECHO([" /* a ${insn} with a no-fault ASI traps: */"])
+ AS_ECHO([" asi_mask_flags_slow = 0 - (tme_uint32_t) 1;"])
else
- $as_echo " /* a ${insn} with a no-fault ASI traps on addresses with side-effects: */"
- $as_echo " asi_mask_flags_slow = TME_SPARC64_ASI_MASK_FLAG_TLB_SIDE_EFFECTS;"
+ AS_ECHO([" /* a ${insn} with a no-fault ASI traps on addresses with side-effects: */"])
+ AS_ECHO([" asi_mask_flags_slow = TME_SPARC64_ASI_MASK_FLAG_TLB_SIDE_EFFECTS;"])
fi
- $as_echo " }"
+ AS_ECHO([" }"])
fi
fi
- $as_echo ""
- $as_echo " /* get and busy the DTLB entry: */"
- $as_echo " dtlb = &ic->tme_sparc_tlbs[[TME_SPARC_DTLB_ENTRY(ic, TME_SPARC_TLB_HASH(ic, ${context}, address))]];"
- $as_echo " tme_sparc_tlb_busy(dtlb);"
-
- $as_echo ""
- $as_echo " /* assume that this DTLB applies and allows fast transfers: */"
- $as_echo " memory = dtlb->tme_sparc_tlb_emulator_off_${cycle};"
-
- $as_echo ""
- $as_echo " /* if this DTLB matches any context, it matches this context: */"
- $as_echo " dtlb_context = dtlb->tme_sparc_tlb_context;"
- $as_echo " if (dtlb_context > ic->tme_sparc_memory_context_max) {"
- $as_echo " dtlb_context = ${context};"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* we must call the slow ${slow} function if: */"
- $as_echo " if (__tme_predict_false("
- $as_echo ""
- $as_echo " /* the DTLB entry is invalid: */"
- $as_echo " tme_bus_tlb_is_invalid(&dtlb->tme_sparc_tlb_bus_tlb)"
- $as_echo ""
- $as_echo " /* the DTLB entry does not match the context: */"
- $as_echo " || dtlb_context != ${context}"
- $as_echo ""
- $as_echo " /* the DTLB entry does not cover the needed addresses: */"
- $as_echo " || (address < (tme_bus_addr${arch}_t) dtlb->tme_sparc_tlb_addr_first)"
- $as_echo " || ((address + ((${size} / 8) - 1)) > (tme_bus_addr${arch}_t) dtlb->tme_sparc_tlb_addr_last)"
- $as_echo ""
- $as_echo " /* the DTLB entry does not cover the needed address space: */"
- $as_echo " || (!TME_SPARC_TLB_ASI_MASK_OK(dtlb, ${asi_mask_data}))"
- $as_echo ""
- $as_echo " /* the DTLB entry can't be used for a fast ${insn}: */"
- $as_echo " || (dtlb->tme_sparc_tlb_asi_mask & asi_mask_flags_slow) != 0"
- $as_echo ""
- $as_echo " /* the DTLB entry does not allow fast transfers: */"
+ AS_ECHO([""])
+ AS_ECHO([" /* get and busy the DTLB entry: */"])
+ AS_ECHO([" dtlb = &ic->tme_sparc_tlbs[[TME_SPARC_DTLB_ENTRY(ic, TME_SPARC_TLB_HASH(ic, ${context}, address))]];"])
+ AS_ECHO([" tme_sparc_tlb_busy(dtlb);"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* assume that this DTLB applies and allows fast transfers: */"])
+ AS_ECHO([" memory = dtlb->tme_sparc_tlb_emulator_off_${cycle};"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* if this DTLB matches any context, it matches this context: */"])
+ AS_ECHO([" dtlb_context = dtlb->tme_sparc_tlb_context;"])
+ AS_ECHO([" if (dtlb_context > ic->tme_sparc_memory_context_max) {"])
+ AS_ECHO([" dtlb_context = ${context};"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* we must call the slow ${slow} function if: */"])
+ AS_ECHO([" if (__tme_predict_false("])
+ AS_ECHO([""])
+ AS_ECHO([" /* the DTLB entry is invalid: */"])
+ AS_ECHO([" tme_bus_tlb_is_invalid(&dtlb->tme_sparc_tlb_bus_tlb)"])
+ AS_ECHO([""])
+ AS_ECHO([" /* the DTLB entry does not match the context: */"])
+ AS_ECHO([" || dtlb_context != ${context}"])
+ AS_ECHO([""])
+ AS_ECHO([" /* the DTLB entry does not cover the needed addresses: */"])
+ AS_ECHO([" || (address < (tme_bus_addr${arch}_t) dtlb->tme_sparc_tlb_addr_first)"])
+ AS_ECHO([" || ((address + ((${size} / 8) - 1)) > (tme_bus_addr${arch}_t) dtlb->tme_sparc_tlb_addr_last)"])
+ AS_ECHO([""])
+ AS_ECHO([" /* the DTLB entry does not cover the needed address space: */"])
+ AS_ECHO([" || (!TME_SPARC_TLB_ASI_MASK_OK(dtlb, ${asi_mask_data}))"])
+ AS_ECHO([""])
+ AS_ECHO([" /* the DTLB entry can't be used for a fast ${insn}: */"])
+ AS_ECHO([" || (dtlb->tme_sparc_tlb_asi_mask & asi_mask_flags_slow) != 0"])
+ AS_ECHO([""])
+ AS_ECHO([" /* the DTLB entry does not allow fast transfers: */"])
if $atomic; then
- $as_echo " || (memory != dtlb->tme_sparc_tlb_emulator_off_read)"
+ AS_ECHO([" || (memory != dtlb->tme_sparc_tlb_emulator_off_read)"])
fi
- $as_echo " || (memory == TME_EMULATOR_OFF_UNDEF)"
+ AS_ECHO([" || (memory == TME_EMULATOR_OFF_UNDEF)"])
if test ${size} != 8; then
- $as_echo ""
- $as_echo " /* the address is misaligned: */"
- $as_echo " || ((address % (${size} / 8)) != 0)"
+ AS_ECHO([""])
+ AS_ECHO([" /* the address is misaligned: */"])
+ AS_ECHO([" || ((address % (${size} / 8)) != 0)"])
fi
if ${double}; then
- $as_echo ""
- $as_echo " /* the destination register number is odd: */"
- $as_echo " || ((TME_SPARC_INSN & TME_BIT(25)) != 0)"
+ AS_ECHO([""])
+ AS_ECHO([" /* the destination register number is odd: */"])
+ AS_ECHO([" || ((TME_SPARC_INSN & TME_BIT(25)) != 0)"])
fi
- $as_echo ""
- $as_echo " )) {"
-
- $as_echo ""
- $as_echo " /* call the slow ${slow} function: */"
- $as_echo " memory = tme_sparc${arch}_ls(ic,"
- $as_echo " address,"
- $as_echo " &TME_SPARC_FORMAT3_RD,"
- $as_echo_n " (TME_SPARC_LSINFO_OP_"
+ AS_ECHO([""])
+ AS_ECHO([" )) {"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* call the slow ${slow} function: */"])
+ AS_ECHO([" memory = tme_sparc${arch}_ls(ic,"])
+ AS_ECHO([" address,"])
+ AS_ECHO([" &TME_SPARC_FORMAT3_RD,"])
+ AS_ECHO_N([" (TME_SPARC_LSINFO_OP_"])
if ${atomic}; then
- $as_echo "ATOMIC"
+ AS_ECHO(["ATOMIC"])
elif test ${slow} = store; then
- $as_echo "ST"
+ AS_ECHO(["ST"])
else
- $as_echo "LD"
+ AS_ECHO(["LD"])
fi
- $as_echo_n " | "
+ AS_ECHO_N([" | "])
case ${insn} in
ldd* | std*)
- $as_echo "TME_SPARC_LSINFO_LDD_STD"
- $as_echo_n " | "
+ AS_ECHO(["TME_SPARC_LSINFO_LDD_STD"])
+ AS_ECHO_N([" | "])
;;
esac
if ${alternate}; then
- $as_echo "TME_SPARC_LSINFO_ASI(TME_SPARC_ASI_MASK_WHICH(${asi_mask_data} & ~TME_SPARC_ASI_MASK_FLAG_UNDEF))"
- $as_echo " | TME_SPARC_LSINFO_A"
- $as_echo_n " | "
+ AS_ECHO(["TME_SPARC_LSINFO_ASI(TME_SPARC_ASI_MASK_WHICH(${asi_mask_data} & ~TME_SPARC_ASI_MASK_FLAG_UNDEF))"])
+ AS_ECHO([" | TME_SPARC_LSINFO_A"])
+ AS_ECHO_N([" | "])
fi
- $as_echo "(${size} / 8)));"
+ AS_ECHO(["(${size} / 8)));"])
if test ${slow} = store || ${alternate}; then
- $as_echo ""
- $as_echo " /* if the slow ${slow} function did the transfer: */"
- $as_echo " if (__tme_predict_false(memory == TME_EMULATOR_OFF_UNDEF)) {"
- $as_echo ""
- $as_echo " /* unbusy the TLB entry; */"
- $as_echo " tme_sparc_tlb_unbusy(dtlb);"
+ AS_ECHO([""])
+ AS_ECHO([" /* if the slow ${slow} function did the transfer: */"])
+ AS_ECHO([" if (__tme_predict_false(memory == TME_EMULATOR_OFF_UNDEF)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* unbusy the TLB entry; */"])
+ AS_ECHO([" tme_sparc_tlb_unbusy(dtlb);"])
# if this is some kind of a load, log the value loaded:
#
case ${insn} in
ldd*)
- $as_echo ""
- $as_echo " /* log the value loaded: */"
- $as_echo " tme_sparc_recode_verify_mem_load(ic, &TME_SPARC_FORMAT3_RD);"
- $as_echo " tme_sparc_recode_verify_mem_load(ic, &TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch}));"
- $as_echo " tme_sparc_log(ic, 1000, TME_OK,"
- $as_echo " (TME_SPARC_LOG_HANDLE(ic),"
- $as_echo " _(\"${insn}\t0x%02x:0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \":\t0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \" 0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \"\"),"
- $as_echo " TME_SPARC_ASI_MASK_WHICH(${asi_mask_data} & ~TME_SPARC_ASI_MASK_FLAG_UNDEF),"
- $as_echo " address,"
- $as_echo " TME_SPARC_FORMAT3_RD,"
- $as_echo " TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch})));"
+ AS_ECHO([""])
+ AS_ECHO([" /* log the value loaded: */"])
+ AS_ECHO([" tme_sparc_recode_verify_mem_load(ic, &TME_SPARC_FORMAT3_RD);"])
+ AS_ECHO([" tme_sparc_recode_verify_mem_load(ic, &TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch}));"])
+ AS_ECHO([" tme_sparc_log(ic, 1000, TME_OK,"])
+ AS_ECHO([" (TME_SPARC_LOG_HANDLE(ic),"])
+ AS_ECHO([" _(\"${insn}\t0x%02x:0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \":\t0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \" 0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \"\"),"])
+ AS_ECHO([" TME_SPARC_ASI_MASK_WHICH(${asi_mask_data} & ~TME_SPARC_ASI_MASK_FLAG_UNDEF),"])
+ AS_ECHO([" address,"])
+ AS_ECHO([" TME_SPARC_FORMAT3_RD,"])
+ AS_ECHO([" TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch})));"])
;;
ld* | ldstub* | swap* | cas*a)
- $as_echo ""
- $as_echo " /* log the value loaded: */"
- $as_echo " tme_sparc_recode_verify_mem_load(ic, &TME_SPARC_FORMAT3_RD);"
- $as_echo " tme_sparc_log(ic, 1000, TME_OK,"
- $as_echo " (TME_SPARC_LOG_HANDLE(ic),"
- $as_echo " _(\"${insn}\t0x%02x:0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \":\t0x%0"`expr ${size} / 4`"\" TME_PRIx${arch}),"
- $as_echo " TME_SPARC_ASI_MASK_WHICH(${asi_mask_data} & ~TME_SPARC_ASI_MASK_FLAG_UNDEF),"
- $as_echo " address,"
- $as_echo " TME_SPARC_FORMAT3_RD));"
+ AS_ECHO([""])
+ AS_ECHO([" /* log the value loaded: */"])
+ AS_ECHO([" tme_sparc_recode_verify_mem_load(ic, &TME_SPARC_FORMAT3_RD);"])
+ AS_ECHO([" tme_sparc_log(ic, 1000, TME_OK,"])
+ AS_ECHO([" (TME_SPARC_LOG_HANDLE(ic),"])
+ AS_ECHO([" _(\"${insn}\t0x%02x:0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \":\t0x%0"`expr ${size} / 4`"\" TME_PRIx${arch}),"])
+ AS_ECHO([" TME_SPARC_ASI_MASK_WHICH(${asi_mask_data} & ~TME_SPARC_ASI_MASK_FLAG_UNDEF),"])
+ AS_ECHO([" address,"])
+ AS_ECHO([" TME_SPARC_FORMAT3_RD));"])
;;
esac
- $as_echo ""
- $as_echo " TME_SPARC_INSN_OK;"
- $as_echo " }"
+ AS_ECHO([""])
+ AS_ECHO([" TME_SPARC_INSN_OK;"])
+ AS_ECHO([" }"])
fi
- $as_echo " }"
+ AS_ECHO([" }"])
- $as_echo ""
- $as_echo " /* get the byte order of this transfer: */"
+ AS_ECHO([""])
+ AS_ECHO([" /* get the byte order of this transfer: */"])
if test ${arch} = 32; then
- $as_echo " endian_little = FALSE;"
+ AS_ECHO([" endian_little = FALSE;"])
elif test ${arch} = 64; then
- $as_echo " endian_little = ${asi_mask_data} & TME_SPARC64_ASI_FLAG_LITTLE;"
- $as_echo " if (__tme_predict_false(dtlb->tme_sparc_tlb_asi_mask & TME_SPARC64_ASI_FLAG_LITTLE)) {"
- $as_echo " if (TME_SPARC_MEMORY_FLAGS(ic) & TME_SPARC_MEMORY_FLAG_HAS_INVERT_ENDIAN) {"
- $as_echo " endian_little ^= TME_SPARC64_ASI_FLAG_LITTLE;"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " assert (FALSE);"
- $as_echo " }"
- $as_echo " }"
+ AS_ECHO([" endian_little = ${asi_mask_data} & TME_SPARC64_ASI_FLAG_LITTLE;"])
+ AS_ECHO([" if (__tme_predict_false(dtlb->tme_sparc_tlb_asi_mask & TME_SPARC64_ASI_FLAG_LITTLE)) {"])
+ AS_ECHO([" if (TME_SPARC_MEMORY_FLAGS(ic) & TME_SPARC_MEMORY_FLAG_HAS_INVERT_ENDIAN) {"])
+ AS_ECHO([" endian_little ^= TME_SPARC64_ASI_FLAG_LITTLE;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" assert (FALSE);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
fi
- $as_echo ""
- $as_echo " /* do the fast transfer: */"
- $as_echo " memory += address;"
+ AS_ECHO([""])
+ AS_ECHO([" /* do the fast transfer: */"])
+ AS_ECHO([" memory += address;"])
# dispatch on the instruction:
#
case "${insn}" in
ldd*)
- $as_echo " value32 = tme_memory_bus_read32(((const tme_shared tme_uint32_t *) memory) + 0, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint32_t) * 2, sizeof(tme_uint${arch}_t));"
- $as_echo " value32 = (endian_little ? tme_letoh_u32(value32) : tme_betoh_u32(value32));"
- $as_echo " TME_SPARC_FORMAT3_RD = value32;"
- $as_echo " value32 = tme_memory_bus_read32(((const tme_shared tme_uint32_t *) memory) + 1, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint32_t) * 1, sizeof(tme_uint${arch}_t));"
- $as_echo " value32 = (endian_little ? tme_letoh_u32(value32) : tme_betoh_u32(value32));"
- $as_echo " TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch}) = value32;"
+ AS_ECHO([" value32 = tme_memory_bus_read32(((const tme_shared tme_uint32_t *) memory) + 0, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint32_t) * 2, sizeof(tme_uint${arch}_t));"])
+ AS_ECHO([" value32 = (endian_little ? tme_letoh_u32(value32) : tme_betoh_u32(value32));"])
+ AS_ECHO([" TME_SPARC_FORMAT3_RD = value32;"])
+ AS_ECHO([" value32 = tme_memory_bus_read32(((const tme_shared tme_uint32_t *) memory) + 1, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint32_t) * 1, sizeof(tme_uint${arch}_t));"])
+ AS_ECHO([" value32 = (endian_little ? tme_letoh_u32(value32) : tme_betoh_u32(value32));"])
+ AS_ECHO([" TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch}) = value32;"])
;;
std*)
- $as_echo " value32 = TME_SPARC_FORMAT3_RD;"
- $as_echo " value32 = (endian_little ? tme_htole_u32(value32) : tme_htobe_u32(value32));"
- $as_echo " tme_memory_bus_write32(((tme_shared tme_uint32_t *) memory) + 0, value32, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint32_t) * 2, sizeof(tme_uint${arch}_t));"
- $as_echo " value32 = TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch});"
- $as_echo " value32 = (endian_little ? tme_htole_u32(value32) : tme_htobe_u32(value32));"
- $as_echo " tme_memory_bus_write32(((tme_shared tme_uint32_t *) memory) + 1, value32, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint32_t) * 1, sizeof(tme_uint${arch}_t));"
+ AS_ECHO([" value32 = TME_SPARC_FORMAT3_RD;"])
+ AS_ECHO([" value32 = (endian_little ? tme_htole_u32(value32) : tme_htobe_u32(value32));"])
+ AS_ECHO([" tme_memory_bus_write32(((tme_shared tme_uint32_t *) memory) + 0, value32, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint32_t) * 2, sizeof(tme_uint${arch}_t));"])
+ AS_ECHO([" value32 = TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch});"])
+ AS_ECHO([" value32 = (endian_little ? tme_htole_u32(value32) : tme_htobe_u32(value32));"])
+ AS_ECHO([" tme_memory_bus_write32(((tme_shared tme_uint32_t *) memory) + 1, value32, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint32_t) * 1, sizeof(tme_uint${arch}_t));"])
;;
ldstub*)
- $as_echo " TME_SPARC_FORMAT3_RD = tme_memory_atomic_xchg8(memory, 0xff, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint8_t));"
+ AS_ECHO([" TME_SPARC_FORMAT3_RD = tme_memory_atomic_xchg8(memory, 0xff, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint8_t));"])
;;
swap*)
- $as_echo " value32 = TME_SPARC_FORMAT3_RD;"
- $as_echo " value32 = (endian_little ? tme_htole_u32(value32) : tme_htobe_u32(value32));"
- $as_echo " value32 = tme_memory_atomic_xchg32((tme_shared tme_uint${size}_t *) memory, value32, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint8_t));"
- $as_echo " value32 = (endian_little ? tme_letoh_u32(value32) : tme_betoh_u32(value32));"
- $as_echo " TME_SPARC_FORMAT3_RD = value32;"
+ AS_ECHO([" value32 = TME_SPARC_FORMAT3_RD;"])
+ AS_ECHO([" value32 = (endian_little ? tme_htole_u32(value32) : tme_htobe_u32(value32));"])
+ AS_ECHO([" value32 = tme_memory_atomic_xchg32((tme_shared tme_uint${size}_t *) memory, value32, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint8_t));"])
+ AS_ECHO([" value32 = (endian_little ? tme_letoh_u32(value32) : tme_betoh_u32(value32));"])
+ AS_ECHO([" TME_SPARC_FORMAT3_RD = value32;"])
;;
cas*a)
- $as_echo " reg_rs2 = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, TME_SPARC_FORMAT3_MASK_RS2);"
- $as_echo " TME_SPARC_REG_INDEX(ic, reg_rs2);"
- $as_echo " value_compare${size} = ic->tme_sparc_ireg_uint${arch}(reg_rs2);"
- $as_echo " value_compare${size} = (endian_little ? tme_htole_u${size}(value_compare${size}) : tme_htobe_u${size}(value_compare${size}));"
- $as_echo " value_swap${size} = TME_SPARC_FORMAT3_RD;"
- $as_echo " value_swap${size} = (endian_little ? tme_htole_u${size}(value_swap${size}) : tme_htobe_u${size}(value_swap${size}));"
- $as_echo " value_read${size} = tme_memory_atomic_cx${size}((tme_shared tme_uint${size}_t *) memory, value_compare${size}, value_swap${size}, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint${size}_t));"
- $as_echo " value_read${size} = (endian_little ? tme_letoh_u${size}(value_read${size}) : tme_betoh_u${size}(value_read${size}));"
- $as_echo " TME_SPARC_FORMAT3_RD = value_read${size};"
+ AS_ECHO([" reg_rs2 = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, TME_SPARC_FORMAT3_MASK_RS2);"])
+ AS_ECHO([" TME_SPARC_REG_INDEX(ic, reg_rs2);"])
+ AS_ECHO([" value_compare${size} = ic->tme_sparc_ireg_uint${arch}(reg_rs2);"])
+ AS_ECHO([" value_compare${size} = (endian_little ? tme_htole_u${size}(value_compare${size}) : tme_htobe_u${size}(value_compare${size}));"])
+ AS_ECHO([" value_swap${size} = TME_SPARC_FORMAT3_RD;"])
+ AS_ECHO([" value_swap${size} = (endian_little ? tme_htole_u${size}(value_swap${size}) : tme_htobe_u${size}(value_swap${size}));"])
+ AS_ECHO([" value_read${size} = tme_memory_atomic_cx${size}((tme_shared tme_uint${size}_t *) memory, value_compare${size}, value_swap${size}, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint${size}_t));"])
+ AS_ECHO([" value_read${size} = (endian_little ? tme_letoh_u${size}(value_read${size}) : tme_betoh_u${size}(value_read${size}));"])
+ AS_ECHO([" TME_SPARC_FORMAT3_RD = value_read${size};"])
;;
ld*)
- $as_echo " value${size} = tme_memory_bus_read${size}((const tme_shared tme_uint${size}_t *) memory, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint${size}_t), sizeof(tme_uint${arch}_t));"
+ AS_ECHO([" value${size} = tme_memory_bus_read${size}((const tme_shared tme_uint${size}_t *) memory, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint${size}_t), sizeof(tme_uint${arch}_t));"])
if test ${size} != 8; then
- $as_echo " value${size} = (endian_little ? tme_letoh_u${size}(value${size}) : tme_betoh_u${size}(value${size}));"
+ AS_ECHO([" value${size} = (endian_little ? tme_letoh_u${size}(value${size}) : tme_betoh_u${size}(value${size}));"])
fi
if test `expr ${size} \< ${arch}` = 1; then
- $as_echo ""
- $as_echo " /* possibly sign-extend the loaded value: */"
- $as_echo " value${size_extend} = value${size};"
- $as_echo " if (TME_SPARC_INSN & TME_BIT(22)) {"
- $as_echo " value${size_extend} = (tme_uint${size_extend}_t) (tme_int${size_extend}_t) (tme_int${size}_t) value${size_extend};"
- $as_echo " }"
+ AS_ECHO([""])
+ AS_ECHO([" /* possibly sign-extend the loaded value: */"])
+ AS_ECHO([" value${size_extend} = value${size};"])
+ AS_ECHO([" if (TME_SPARC_INSN & TME_BIT(22)) {"])
+ AS_ECHO([" value${size_extend} = (tme_uint${size_extend}_t) (tme_int${size_extend}_t) (tme_int${size}_t) value${size_extend};"])
+ AS_ECHO([" }"])
fi
- $as_echo " TME_SPARC_FORMAT3_RD = (tme_uint${arch}_t) (tme_int${arch}_t) (tme_int${size_extend}_t) value${size_extend};"
+ AS_ECHO([" TME_SPARC_FORMAT3_RD = (tme_uint${arch}_t) (tme_int${arch}_t) (tme_int${size_extend}_t) value${size_extend};"])
;;
st*)
- $as_echo " value${size} = TME_SPARC_FORMAT3_RD;"
+ AS_ECHO([" value${size} = TME_SPARC_FORMAT3_RD;"])
if test ${size} != 8; then
- $as_echo " value${size} = (endian_little ? tme_htole_u${size}(value${size}) : tme_htobe_u${size}(value${size}));"
+ AS_ECHO([" value${size} = (endian_little ? tme_htole_u${size}(value${size}) : tme_htobe_u${size}(value${size}));"])
fi
- $as_echo " tme_memory_bus_write${size}((tme_shared tme_uint${size}_t *) memory, value${size}, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint${size}_t), sizeof(tme_uint${arch}_t));"
+ AS_ECHO([" tme_memory_bus_write${size}((tme_shared tme_uint${size}_t *) memory, value${size}, dtlb->tme_sparc_tlb_bus_rwlock, sizeof(tme_uint${size}_t), sizeof(tme_uint${arch}_t));"])
;;
- *) $as_echo "$PROG internal error: unknown memory insn ${insn}" 1>&2 ; exit 1 ;;
+ *) AS_ECHO(["$PROG internal error: unknown memory insn ${insn}"]) 1>&2 ; exit 1 ;;
esac
- $as_echo ""
- $as_echo " /* unbusy the DTLB entry: */"
- $as_echo " tme_sparc_tlb_unbusy(dtlb);"
+ AS_ECHO([""])
+ AS_ECHO([" /* unbusy the DTLB entry: */"])
+ AS_ECHO([" tme_sparc_tlb_unbusy(dtlb);"])
# if this is some kind of a load, log the value loaded:
#
case ${insn} in
ldd*)
- $as_echo ""
- $as_echo " /* log the value loaded: */"
- $as_echo " tme_sparc_recode_verify_mem_load(ic, &TME_SPARC_FORMAT3_RD);"
- $as_echo " tme_sparc_recode_verify_mem_load(ic, &TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch}));"
- $as_echo " tme_sparc_log(ic, 1000, TME_OK,"
- $as_echo " (TME_SPARC_LOG_HANDLE(ic),"
- $as_echo " _(\"${insn}\t0x%02x:0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \":\t0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \" 0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \"\"),"
- $as_echo " TME_SPARC_ASI_MASK_WHICH(${asi_mask_data} & ~TME_SPARC_ASI_MASK_FLAG_UNDEF),"
- $as_echo " address,"
- $as_echo " TME_SPARC_FORMAT3_RD,"
- $as_echo " TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch})));"
+ AS_ECHO([""])
+ AS_ECHO([" /* log the value loaded: */"])
+ AS_ECHO([" tme_sparc_recode_verify_mem_load(ic, &TME_SPARC_FORMAT3_RD);"])
+ AS_ECHO([" tme_sparc_recode_verify_mem_load(ic, &TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch}));"])
+ AS_ECHO([" tme_sparc_log(ic, 1000, TME_OK,"])
+ AS_ECHO([" (TME_SPARC_LOG_HANDLE(ic),"])
+ AS_ECHO([" _(\"${insn}\t0x%02x:0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \":\t0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \" 0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \"\"),"])
+ AS_ECHO([" TME_SPARC_ASI_MASK_WHICH(${asi_mask_data} & ~TME_SPARC_ASI_MASK_FLAG_UNDEF),"])
+ AS_ECHO([" address,"])
+ AS_ECHO([" TME_SPARC_FORMAT3_RD,"])
+ AS_ECHO([" TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch})));"])
;;
ld* | ldstub* | swap* | cas*a)
- $as_echo ""
- $as_echo " /* log the value loaded: */"
- $as_echo " tme_sparc_recode_verify_mem_load(ic, &TME_SPARC_FORMAT3_RD);"
- $as_echo " tme_sparc_log(ic, 1000, TME_OK,"
- $as_echo " (TME_SPARC_LOG_HANDLE(ic),"
- $as_echo " _(\"${insn}\t0x%02x:0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \":\t0x%0"`expr ${size} / 4`"\" TME_PRIx${arch}),"
- $as_echo " TME_SPARC_ASI_MASK_WHICH(${asi_mask_data} & ~TME_SPARC_ASI_MASK_FLAG_UNDEF),"
- $as_echo " address,"
- $as_echo " TME_SPARC_FORMAT3_RD));"
+ AS_ECHO([""])
+ AS_ECHO([" /* log the value loaded: */"])
+ AS_ECHO([" tme_sparc_recode_verify_mem_load(ic, &TME_SPARC_FORMAT3_RD);"])
+ AS_ECHO([" tme_sparc_log(ic, 1000, TME_OK,"])
+ AS_ECHO([" (TME_SPARC_LOG_HANDLE(ic),"])
+ AS_ECHO([" _(\"${insn}\t0x%02x:0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch} \":\t0x%0"`expr ${size} / 4`"\" TME_PRIx${arch}),"])
+ AS_ECHO([" TME_SPARC_ASI_MASK_WHICH(${asi_mask_data} & ~TME_SPARC_ASI_MASK_FLAG_UNDEF),"])
+ AS_ECHO([" address,"])
+ AS_ECHO([" TME_SPARC_FORMAT3_RD));"])
;;
esac
- $as_echo ""
- $as_echo " TME_SPARC_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" TME_SPARC_INSN_OK;"])
+ AS_ECHO(["}"])
fi
# the jmpl instruction:
#
if test ${insn} = jmpl; then
- $as_echo ""
- $as_echo "/* this does a sparc${arch} ${insn}: */"
- $as_echo "TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"
- $as_echo "{"
- $as_echo " tme_uint${arch}_t pc_next_next;"
- $as_echo " tme_uint32_t ls_faults;"
- $as_echo ""
- $as_echo " /* \"The JMPL instruction causes a register-indirect delayed control"
- $as_echo " transfer to the address given by r[[rs1]] + r[[rs2]] if the i field is"
- $as_echo " zero, or r[[rs1]] + sign_ext(simm13) if the i field is one. The JMPL"
- $as_echo " instruction copies the PC, which contains the address of the JMPL"
- $as_echo " instruction, into register r[[rd]]. If either of the low-order two"
- $as_echo " bits of the jump address is nonzero, a mem_address_not_aligned"
- $as_echo " trap occurs.\" */"
- $as_echo ""
- $as_echo " /* get the target address: */"
- $as_echo " pc_next_next = TME_SPARC_FORMAT3_RS1 + TME_SPARC_FORMAT3_RS2;"
+ AS_ECHO([""])
+ AS_ECHO(["/* this does a sparc${arch} ${insn}: */"])
+ AS_ECHO(["TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"])
+ AS_ECHO(["{"])
+ AS_ECHO([" tme_uint${arch}_t pc_next_next;"])
+ AS_ECHO([" tme_uint32_t ls_faults;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* \"The JMPL instruction causes a register-indirect delayed control"])
+ AS_ECHO([" transfer to the address given by r[[rs1]] + r[[rs2]] if the i field is"])
+ AS_ECHO([" zero, or r[[rs1]] + sign_ext(simm13) if the i field is one. The JMPL"])
+ AS_ECHO([" instruction copies the PC, which contains the address of the JMPL"])
+ AS_ECHO([" instruction, into register r[[rd]]. If either of the low-order two"])
+ AS_ECHO([" bits of the jump address is nonzero, a mem_address_not_aligned"])
+ AS_ECHO([" trap occurs.\" */"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the target address: */"])
+ AS_ECHO([" pc_next_next = TME_SPARC_FORMAT3_RS1 + TME_SPARC_FORMAT3_RS2;"])
if test ${arch} = 64; then
- $as_echo " pc_next_next &= ic->tme_sparc_address_mask;"
+ AS_ECHO([" pc_next_next &= ic->tme_sparc_address_mask;"])
fi
- $as_echo ""
- $as_echo " /* set the delayed control transfer: */"
- $as_echo " ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_PC_NEXT_NEXT) = pc_next_next;"
- $as_echo ""
- $as_echo " /* check the target address: */"
- $as_echo " ls_faults = TME_SPARC_LS_FAULT_NONE;"
+ AS_ECHO([""])
+ AS_ECHO([" /* set the delayed control transfer: */"])
+ AS_ECHO([" ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_PC_NEXT_NEXT) = pc_next_next;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* check the target address: */"])
+ AS_ECHO([" ls_faults = TME_SPARC_LS_FAULT_NONE;"])
if test ${arch} = 64; then
- $as_echo " if (__tme_predict_false((pc_next_next"
- $as_echo " + ic->tme_sparc${arch}_ireg_va_hole_start)"
- $as_echo " > ((ic->tme_sparc${arch}_ireg_va_hole_start * 2) - 1))) {"
- $as_echo " ls_faults += TME_SPARC64_LS_FAULT_VA_RANGE_NNPC;"
- $as_echo " }"
+ AS_ECHO([" if (__tme_predict_false((pc_next_next"])
+ AS_ECHO([" + ic->tme_sparc${arch}_ireg_va_hole_start)"])
+ AS_ECHO([" > ((ic->tme_sparc${arch}_ireg_va_hole_start * 2) - 1))) {"])
+ AS_ECHO([" ls_faults += TME_SPARC64_LS_FAULT_VA_RANGE_NNPC;"])
+ AS_ECHO([" }"])
fi
- $as_echo " if (__tme_predict_false((pc_next_next % sizeof(tme_uint32_t)) != 0)) {"
- $as_echo " ls_faults += TME_SPARC_LS_FAULT_ADDRESS_NOT_ALIGNED;"
- $as_echo " }"
- $as_echo " if (__tme_predict_false(ls_faults != TME_SPARC_LS_FAULT_NONE)) {"
- $as_echo " tme_sparc_nnpc_trap(ic, ls_faults);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* write the PC of the jmpl into r[[rd]]: */"
- $as_echo " TME_SPARC_FORMAT3_RD = ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_PC);"
- $as_echo ""
- $as_echo " /* log an indirect call instruction, which has 15 (%o7) for rd: */"
- $as_echo " if (TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, TME_SPARC_FORMAT3_MASK_RD) == 15) {"
- $as_echo " tme_sparc_log(ic, 250, TME_OK,"
- $as_echo " (TME_SPARC_LOG_HANDLE(ic),"
- $as_echo " _(\"call 0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch}),"
- $as_echo " pc_next_next));"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* log a ret or retl instruction, which has 0 (%g0) for rd,"
- $as_echo " either 31 (%i7) or 15 (%o7) for rs1, and 8 for simm13: */"
- $as_echo " else if ((TME_SPARC_INSN | (16 << 14))"
- $as_echo " == ((tme_uint32_t) (0x2 << 30) | (0 << 25) | (0x38 << 19) | (31 << 14) | (0x1 << 13) | 8)) {"
- $as_echo " tme_sparc_log(ic, 250, TME_OK,"
- $as_echo " (TME_SPARC_LOG_HANDLE(ic),"
- $as_echo " _(\"retl 0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch}),"
- $as_echo " pc_next_next));"
- $as_echo " }"
- $as_echo ""
- $as_echo " TME_SPARC_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([" if (__tme_predict_false((pc_next_next % sizeof(tme_uint32_t)) != 0)) {"])
+ AS_ECHO([" ls_faults += TME_SPARC_LS_FAULT_ADDRESS_NOT_ALIGNED;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" if (__tme_predict_false(ls_faults != TME_SPARC_LS_FAULT_NONE)) {"])
+ AS_ECHO([" tme_sparc_nnpc_trap(ic, ls_faults);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* write the PC of the jmpl into r[[rd]]: */"])
+ AS_ECHO([" TME_SPARC_FORMAT3_RD = ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_PC);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* log an indirect call instruction, which has 15 (%o7) for rd: */"])
+ AS_ECHO([" if (TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, TME_SPARC_FORMAT3_MASK_RD) == 15) {"])
+ AS_ECHO([" tme_sparc_log(ic, 250, TME_OK,"])
+ AS_ECHO([" (TME_SPARC_LOG_HANDLE(ic),"])
+ AS_ECHO([" _(\"call 0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch}),"])
+ AS_ECHO([" pc_next_next));"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* log a ret or retl instruction, which has 0 (%g0) for rd,"])
+ AS_ECHO([" either 31 (%i7) or 15 (%o7) for rs1, and 8 for simm13: */"])
+ AS_ECHO([" else if ((TME_SPARC_INSN | (16 << 14))"])
+ AS_ECHO([" == ((tme_uint32_t) (0x2 << 30) | (0 << 25) | (0x38 << 19) | (31 << 14) | (0x1 << 13) | 8)) {"])
+ AS_ECHO([" tme_sparc_log(ic, 250, TME_OK,"])
+ AS_ECHO([" (TME_SPARC_LOG_HANDLE(ic),"])
+ AS_ECHO([" _(\"retl 0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch}),"])
+ AS_ECHO([" pc_next_next));"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" TME_SPARC_INSN_OK;"])
+ AS_ECHO(["}"])
fi
# this may be an alternate-space version of a floating-point
@@ -1277,363 +1277,363 @@ for arch in 32 64; do
#
if test ${insn} = "ldf${alternate}"; then
- $as_echo ""
- $as_echo "/* this does a sparc${arch} ${insn}: */"
- $as_echo "TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"
- $as_echo "{"
- $as_echo " tme_uint32_t misaligned;"
- $as_echo " struct tme_float float_buffer;"
- $as_echo " struct tme_float *fpreg;"
- $as_echo ""
- $as_echo " /* get the least significant 32 bits of the address: */"
- $as_echo " misaligned = TME_SPARC_FORMAT3_RS1;"
- $as_echo " misaligned += (tme_uint32_t) TME_SPARC_FORMAT3_RS2;"
+ AS_ECHO([""])
+ AS_ECHO(["/* this does a sparc${arch} ${insn}: */"])
+ AS_ECHO(["TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"])
+ AS_ECHO(["{"])
+ AS_ECHO([" tme_uint32_t misaligned;"])
+ AS_ECHO([" struct tme_float float_buffer;"])
+ AS_ECHO([" struct tme_float *fpreg;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the least significant 32 bits of the address: */"])
+ AS_ECHO([" misaligned = TME_SPARC_FORMAT3_RS1;"])
+ AS_ECHO([" misaligned += (tme_uint32_t) TME_SPARC_FORMAT3_RS2;"])
if test "${arch}${alternate}" = 64a; then
- $as_echo ""
- $as_echo " /* see if the address is misaligned for the ASI: */"
- $as_echo " misaligned = (*ic->_tme_sparc_ls_asi_misaligned)(ic, misaligned);"
+ AS_ECHO([""])
+ AS_ECHO([" /* see if the address is misaligned for the ASI: */"])
+ AS_ECHO([" misaligned = (*ic->_tme_sparc_ls_asi_misaligned)(ic, misaligned);"])
fi
- $as_echo ""
- $as_echo " /* decode rd: */"
- $as_echo " float_buffer.tme_float_format = TME_FLOAT_FORMAT_IEEE754_SINGLE;"
- $as_echo " fpreg"
- $as_echo " = _tme_sparc${arch}_fpu_mem_fpreg(ic,"
- $as_echo " misaligned,"
- $as_echo " &float_buffer);"
- $as_echo ""
- $as_echo " /* do the load: */"
- $as_echo " tme_sparc${arch}_ld${alternate}(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"
- $as_echo ""
- $as_echo " /* set the floating-point register value: */"
- $as_echo " assert (fpreg != &float_buffer);"
- $as_echo " fpreg->tme_float_format = TME_FLOAT_FORMAT_IEEE754_SINGLE;"
- $as_echo " fpreg->tme_float_value_ieee754_single"
- $as_echo " = ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_FPX${reg32_shift});"
- $as_echo ""
- $as_echo " TME_SPARC_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" /* decode rd: */"])
+ AS_ECHO([" float_buffer.tme_float_format = TME_FLOAT_FORMAT_IEEE754_SINGLE;"])
+ AS_ECHO([" fpreg"])
+ AS_ECHO([" = _tme_sparc${arch}_fpu_mem_fpreg(ic,"])
+ AS_ECHO([" misaligned,"])
+ AS_ECHO([" &float_buffer);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do the load: */"])
+ AS_ECHO([" tme_sparc${arch}_ld${alternate}(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"])
+ AS_ECHO([""])
+ AS_ECHO([" /* set the floating-point register value: */"])
+ AS_ECHO([" assert (fpreg != &float_buffer);"])
+ AS_ECHO([" fpreg->tme_float_format = TME_FLOAT_FORMAT_IEEE754_SINGLE;"])
+ AS_ECHO([" fpreg->tme_float_value_ieee754_single"])
+ AS_ECHO([" = ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_FPX${reg32_shift});"])
+ AS_ECHO([""])
+ AS_ECHO([" TME_SPARC_INSN_OK;"])
+ AS_ECHO(["}"])
fi
# the stf instruction:
#
if test ${insn} = "stf${alternate}"; then
- $as_echo ""
- $as_echo "/* this does a sparc${arch} ${insn}: */"
- $as_echo "TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"
- $as_echo "{"
- $as_echo " tme_uint32_t misaligned;"
- $as_echo " struct tme_float float_buffer;"
- $as_echo " const struct tme_float *fpreg;"
- $as_echo " const tme_uint32_t *value_single;"
- $as_echo ""
- $as_echo " /* get the least significant 32 bits of the address: */"
- $as_echo " misaligned = TME_SPARC_FORMAT3_RS1;"
- $as_echo " misaligned += (tme_uint32_t) TME_SPARC_FORMAT3_RS2;"
+ AS_ECHO([""])
+ AS_ECHO(["/* this does a sparc${arch} ${insn}: */"])
+ AS_ECHO(["TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"])
+ AS_ECHO(["{"])
+ AS_ECHO([" tme_uint32_t misaligned;"])
+ AS_ECHO([" struct tme_float float_buffer;"])
+ AS_ECHO([" const struct tme_float *fpreg;"])
+ AS_ECHO([" const tme_uint32_t *value_single;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the least significant 32 bits of the address: */"])
+ AS_ECHO([" misaligned = TME_SPARC_FORMAT3_RS1;"])
+ AS_ECHO([" misaligned += (tme_uint32_t) TME_SPARC_FORMAT3_RS2;"])
if test "${arch}${alternate}" = 64a; then
- $as_echo ""
- $as_echo " /* see if the address is misaligned for the ASI: */"
- $as_echo " misaligned = (*ic->_tme_sparc_ls_asi_misaligned)(ic, misaligned);"
+ AS_ECHO([""])
+ AS_ECHO([" /* see if the address is misaligned for the ASI: */"])
+ AS_ECHO([" misaligned = (*ic->_tme_sparc_ls_asi_misaligned)(ic, misaligned);"])
fi
- $as_echo ""
- $as_echo " /* decode rd: */"
- $as_echo " float_buffer.tme_float_format = TME_FLOAT_FORMAT_IEEE754_SINGLE;"
- $as_echo " fpreg"
- $as_echo " = _tme_sparc${arch}_fpu_mem_fpreg(ic,"
- $as_echo " misaligned,"
- $as_echo " &float_buffer);"
- $as_echo ""
- $as_echo " /* get this single floating-point register in IEEE754 single-precision format: */"
- $as_echo " value_single = tme_ieee754_single_value_get(fpreg, &float_buffer.tme_float_value_ieee754_single);"
- $as_echo ""
- $as_echo " /* set the floating-point register value: */"
- $as_echo " ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_FPX${reg32_shift}) = *value_single;"
- $as_echo ""
- $as_echo " /* do the store: */"
- $as_echo " tme_sparc${arch}_st${alternate}(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"
- $as_echo ""
- $as_echo " assert (fpreg != &float_buffer);"
- $as_echo " TME_SPARC_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" /* decode rd: */"])
+ AS_ECHO([" float_buffer.tme_float_format = TME_FLOAT_FORMAT_IEEE754_SINGLE;"])
+ AS_ECHO([" fpreg"])
+ AS_ECHO([" = _tme_sparc${arch}_fpu_mem_fpreg(ic,"])
+ AS_ECHO([" misaligned,"])
+ AS_ECHO([" &float_buffer);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get this single floating-point register in IEEE754 single-precision format: */"])
+ AS_ECHO([" value_single = tme_ieee754_single_value_get(fpreg, &float_buffer.tme_float_value_ieee754_single);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* set the floating-point register value: */"])
+ AS_ECHO([" ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_FPX${reg32_shift}) = *value_single;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do the store: */"])
+ AS_ECHO([" tme_sparc${arch}_st${alternate}(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"])
+ AS_ECHO([""])
+ AS_ECHO([" assert (fpreg != &float_buffer);"])
+ AS_ECHO([" TME_SPARC_INSN_OK;"])
+ AS_ECHO(["}"])
fi
# the lddf instruction:
#
if test ${insn} = "lddf${alternate}"; then
- $as_echo ""
- $as_echo "/* this does a sparc${arch} ${insn}: */"
- $as_echo "TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"
- $as_echo "{"
- $as_echo " tme_uint${arch}_t address;"
- $as_echo " tme_uint32_t misaligned;"
- $as_echo " struct tme_float float_buffer;"
- $as_echo " struct tme_float *fpreg;"
+ AS_ECHO([""])
+ AS_ECHO(["/* this does a sparc${arch} ${insn}: */"])
+ AS_ECHO(["TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"])
+ AS_ECHO(["{"])
+ AS_ECHO([" tme_uint${arch}_t address;"])
+ AS_ECHO([" tme_uint32_t misaligned;"])
+ AS_ECHO([" struct tme_float float_buffer;"])
+ AS_ECHO([" struct tme_float *fpreg;"])
if test ${arch} != 32; then
- $as_echo " tme_uint${arch}_t offset;"
+ AS_ECHO([" tme_uint${arch}_t offset;"])
fi
- $as_echo ""
- $as_echo " /* get the address: */"
- $as_echo " address = TME_SPARC_FORMAT3_RS1 + TME_SPARC_FORMAT3_RS2;"
- $as_echo ""
- $as_echo " /* get the least significant 32 bits of the address: */"
- $as_echo " misaligned = address;"
+ AS_ECHO([""])
+ AS_ECHO([" /* get the address: */"])
+ AS_ECHO([" address = TME_SPARC_FORMAT3_RS1 + TME_SPARC_FORMAT3_RS2;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the least significant 32 bits of the address: */"])
+ AS_ECHO([" misaligned = address;"])
if test "${arch}${alternate}" = 64a; then
- $as_echo ""
- $as_echo " /* see if the address is misaligned for the ASI: */"
- $as_echo " misaligned = (*ic->_tme_sparc_ls_asi_misaligned)(ic, misaligned);"
+ AS_ECHO([""])
+ AS_ECHO([" /* see if the address is misaligned for the ASI: */"])
+ AS_ECHO([" misaligned = (*ic->_tme_sparc_ls_asi_misaligned)(ic, misaligned);"])
fi
- $as_echo ""
- $as_echo " /* decode rd: */"
- $as_echo " float_buffer.tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"
- $as_echo " fpreg"
- $as_echo " = _tme_sparc${arch}_fpu_mem_fpreg(ic,"
- $as_echo " misaligned,"
- $as_echo " &float_buffer);"
- $as_echo ""
+ AS_ECHO([""])
+ AS_ECHO([" /* decode rd: */"])
+ AS_ECHO([" float_buffer.tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"])
+ AS_ECHO([" fpreg"])
+ AS_ECHO([" = _tme_sparc${arch}_fpu_mem_fpreg(ic,"])
+ AS_ECHO([" misaligned,"])
+ AS_ECHO([" &float_buffer);"])
+ AS_ECHO([""])
if test ${arch} = 32; then
- $as_echo " /* do the load: */"
- $as_echo " tme_sparc${arch}_ldd(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_FPX${reg32_shift}));"
- $as_echo ""
- $as_echo " /* set the double floating-point register value: */"
- $as_echo " assert (fpreg != &float_buffer);"
- $as_echo " fpreg->tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"
- $as_echo " fpreg->tme_float_value_ieee754_double.tme_value64_uint32_hi"
- $as_echo " = ic->tme_sparc_ireg_uint32((TME_SPARC_IREG_FPX${reg32_shift}) + 0);"
- $as_echo " fpreg->tme_float_value_ieee754_double.tme_value64_uint32_lo"
- $as_echo " = ic->tme_sparc_ireg_uint32((TME_SPARC_IREG_FPX${reg32_shift}) + 1);"
+ AS_ECHO([" /* do the load: */"])
+ AS_ECHO([" tme_sparc${arch}_ldd(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_FPX${reg32_shift}));"])
+ AS_ECHO([""])
+ AS_ECHO([" /* set the double floating-point register value: */"])
+ AS_ECHO([" assert (fpreg != &float_buffer);"])
+ AS_ECHO([" fpreg->tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"])
+ AS_ECHO([" fpreg->tme_float_value_ieee754_double.tme_value64_uint32_hi"])
+ AS_ECHO([" = ic->tme_sparc_ireg_uint32((TME_SPARC_IREG_FPX${reg32_shift}) + 0);"])
+ AS_ECHO([" fpreg->tme_float_value_ieee754_double.tme_value64_uint32_lo"])
+ AS_ECHO([" = ic->tme_sparc_ireg_uint32((TME_SPARC_IREG_FPX${reg32_shift}) + 1);"])
else
- $as_echo " /* if bit two of the address is set, and this SPARC supports"
- $as_echo " 32-bit-aligned ${insn} instructions: */"
- $as_echo " if ((misaligned & sizeof(tme_uint32_t))"
- $as_echo " && fpreg != &float_buffer) {"
- $as_echo ""
- $as_echo " /* do two 32-bit loads: */"
- $as_echo " offset = sizeof(tme_uint32_t) * 0;"
- $as_echo " tme_sparc${arch}_ld${alternate}(ic, &address, &offset, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX + 0));"
- $as_echo " offset = sizeof(tme_uint32_t) * 1;"
- $as_echo " tme_sparc${arch}_ld${alternate}(ic, &address, &offset, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX + 1));"
- $as_echo ""
- $as_echo " /* set the double floating-point register value: */"
- $as_echo " fpreg->tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"
- $as_echo " fpreg->tme_float_value_ieee754_double.tme_value64_uint32_hi"
- $as_echo " = ic->tme_sparc_ireg_uint64(TME_SPARC_IREG_FPX + 0);"
- $as_echo " fpreg->tme_float_value_ieee754_double.tme_value64_uint32_lo"
- $as_echo " = ic->tme_sparc_ireg_uint64(TME_SPARC_IREG_FPX + 1);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, bit two of the address is not set, or this SPARC"
- $as_echo " doesn't support 32-bit-aligned ${insn} instructions: */"
- $as_echo " else {"
- $as_echo ""
- $as_echo " /* do an ldx${alternate}-style load: */"
- $as_echo " tme_sparc${arch}_ldx${alternate}(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"
- $as_echo ""
- $as_echo " /* set the double floating-point register value: */"
- $as_echo " assert (fpreg != &float_buffer);"
- $as_echo " fpreg->tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"
- $as_echo " fpreg->tme_float_value_ieee754_double.tme_value64_uint"
- $as_echo " = ic->tme_sparc_ireg_uint64(TME_SPARC_IREG_FPX);"
- $as_echo " }"
+ AS_ECHO([" /* if bit two of the address is set, and this SPARC supports"])
+ AS_ECHO([" 32-bit-aligned ${insn} instructions: */"])
+ AS_ECHO([" if ((misaligned & sizeof(tme_uint32_t))"])
+ AS_ECHO([" && fpreg != &float_buffer) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do two 32-bit loads: */"])
+ AS_ECHO([" offset = sizeof(tme_uint32_t) * 0;"])
+ AS_ECHO([" tme_sparc${arch}_ld${alternate}(ic, &address, &offset, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX + 0));"])
+ AS_ECHO([" offset = sizeof(tme_uint32_t) * 1;"])
+ AS_ECHO([" tme_sparc${arch}_ld${alternate}(ic, &address, &offset, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX + 1));"])
+ AS_ECHO([""])
+ AS_ECHO([" /* set the double floating-point register value: */"])
+ AS_ECHO([" fpreg->tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"])
+ AS_ECHO([" fpreg->tme_float_value_ieee754_double.tme_value64_uint32_hi"])
+ AS_ECHO([" = ic->tme_sparc_ireg_uint64(TME_SPARC_IREG_FPX + 0);"])
+ AS_ECHO([" fpreg->tme_float_value_ieee754_double.tme_value64_uint32_lo"])
+ AS_ECHO([" = ic->tme_sparc_ireg_uint64(TME_SPARC_IREG_FPX + 1);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, bit two of the address is not set, or this SPARC"])
+ AS_ECHO([" doesn't support 32-bit-aligned ${insn} instructions: */"])
+ AS_ECHO([" else {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do an ldx${alternate}-style load: */"])
+ AS_ECHO([" tme_sparc${arch}_ldx${alternate}(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"])
+ AS_ECHO([""])
+ AS_ECHO([" /* set the double floating-point register value: */"])
+ AS_ECHO([" assert (fpreg != &float_buffer);"])
+ AS_ECHO([" fpreg->tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"])
+ AS_ECHO([" fpreg->tme_float_value_ieee754_double.tme_value64_uint"])
+ AS_ECHO([" = ic->tme_sparc_ireg_uint64(TME_SPARC_IREG_FPX);"])
+ AS_ECHO([" }"])
fi
- $as_echo ""
- $as_echo " TME_SPARC_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" TME_SPARC_INSN_OK;"])
+ AS_ECHO(["}"])
fi
# the stdf instruction:
#
if test ${insn} = "stdf${alternate}"; then
- $as_echo ""
- $as_echo "/* this does a sparc${arch} ${insn}: */"
- $as_echo "TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"
- $as_echo "{"
- $as_echo " tme_uint${arch}_t address;"
- $as_echo " tme_uint32_t misaligned;"
- $as_echo " struct tme_float float_buffer;"
- $as_echo " struct tme_float *fpreg;"
- $as_echo " const union tme_value64 *value_double;"
+ AS_ECHO([""])
+ AS_ECHO(["/* this does a sparc${arch} ${insn}: */"])
+ AS_ECHO(["TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"])
+ AS_ECHO(["{"])
+ AS_ECHO([" tme_uint${arch}_t address;"])
+ AS_ECHO([" tme_uint32_t misaligned;"])
+ AS_ECHO([" struct tme_float float_buffer;"])
+ AS_ECHO([" struct tme_float *fpreg;"])
+ AS_ECHO([" const union tme_value64 *value_double;"])
if test ${arch} != 32; then
- $as_echo " tme_uint${arch}_t offset;"
+ AS_ECHO([" tme_uint${arch}_t offset;"])
fi
- $as_echo ""
- $as_echo " /* get the address: */"
- $as_echo " address = TME_SPARC_FORMAT3_RS1 + TME_SPARC_FORMAT3_RS2;"
- $as_echo ""
- $as_echo " /* get the least significant 32 bits of the address: */"
- $as_echo " misaligned = address;"
+ AS_ECHO([""])
+ AS_ECHO([" /* get the address: */"])
+ AS_ECHO([" address = TME_SPARC_FORMAT3_RS1 + TME_SPARC_FORMAT3_RS2;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the least significant 32 bits of the address: */"])
+ AS_ECHO([" misaligned = address;"])
if test "${arch}${alternate}" = 64a; then
- $as_echo ""
- $as_echo " /* see if the address is misaligned for the ASI: */"
- $as_echo " misaligned = (*ic->_tme_sparc_ls_asi_misaligned)(ic, misaligned);"
+ AS_ECHO([""])
+ AS_ECHO([" /* see if the address is misaligned for the ASI: */"])
+ AS_ECHO([" misaligned = (*ic->_tme_sparc_ls_asi_misaligned)(ic, misaligned);"])
fi
- $as_echo ""
- $as_echo " /* decode rd: */"
- $as_echo " float_buffer.tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"
- $as_echo " fpreg"
- $as_echo " = _tme_sparc${arch}_fpu_mem_fpreg(ic,"
- $as_echo " misaligned,"
- $as_echo " &float_buffer);"
- $as_echo ""
- $as_echo " /* get this double floating-point register in IEEE754 double-precision format: */"
- $as_echo " value_double = tme_ieee754_double_value_get(fpreg, &float_buffer.tme_float_value_ieee754_double);"
- $as_echo ""
+ AS_ECHO([""])
+ AS_ECHO([" /* decode rd: */"])
+ AS_ECHO([" float_buffer.tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"])
+ AS_ECHO([" fpreg"])
+ AS_ECHO([" = _tme_sparc${arch}_fpu_mem_fpreg(ic,"])
+ AS_ECHO([" misaligned,"])
+ AS_ECHO([" &float_buffer);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get this double floating-point register in IEEE754 double-precision format: */"])
+ AS_ECHO([" value_double = tme_ieee754_double_value_get(fpreg, &float_buffer.tme_float_value_ieee754_double);"])
+ AS_ECHO([""])
if test ${arch} = 32; then
- $as_echo " /* set the floating-point register value: */"
- $as_echo " ic->tme_sparc_ireg_uint32((TME_SPARC_IREG_FPX${reg32_shift}) + 0)"
- $as_echo " = value_double->tme_value64_uint32_hi;"
- $as_echo " ic->tme_sparc_ireg_uint32((TME_SPARC_IREG_FPX${reg32_shift}) + 1)"
- $as_echo " = value_double->tme_value64_uint32_lo;"
- $as_echo ""
- $as_echo " /* do the store: */"
- $as_echo " tme_sparc${arch}_std(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_FPX${reg32_shift}));"
+ AS_ECHO([" /* set the floating-point register value: */"])
+ AS_ECHO([" ic->tme_sparc_ireg_uint32((TME_SPARC_IREG_FPX${reg32_shift}) + 0)"])
+ AS_ECHO([" = value_double->tme_value64_uint32_hi;"])
+ AS_ECHO([" ic->tme_sparc_ireg_uint32((TME_SPARC_IREG_FPX${reg32_shift}) + 1)"])
+ AS_ECHO([" = value_double->tme_value64_uint32_lo;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do the store: */"])
+ AS_ECHO([" tme_sparc${arch}_std(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_FPX${reg32_shift}));"])
else
- $as_echo " /* if bit two of the address is set, and this SPARC supports"
- $as_echo " 32-bit-aligned ${insn} instructions: */"
- $as_echo " if ((misaligned & sizeof(tme_uint32_t))"
- $as_echo " && fpreg != &float_buffer) {"
- $as_echo ""
- $as_echo " /* set the floating-point register value: */"
- $as_echo " ic->tme_sparc_ireg_uint64(TME_SPARC_IREG_FPX + 0)"
- $as_echo " = value_double->tme_value64_uint32_hi;"
- $as_echo " ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_FPX + 1)"
- $as_echo " = value_double->tme_value64_uint32_lo;"
- $as_echo ""
- $as_echo " /* do two 32-bit stores: */"
- $as_echo " offset = sizeof(tme_uint32_t) * 0;"
- $as_echo " tme_sparc${arch}_st${alternate}(ic, &address, &offset, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX + 0));"
- $as_echo " offset = sizeof(tme_uint32_t) * 1;"
- $as_echo " tme_sparc${arch}_st${alternate}(ic, &address, &offset, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX + 1));"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, bit two of the address is not set, or this SPARC"
- $as_echo " doesn't support 32-bit-aligned ${insn} instructions: */"
- $as_echo " else {"
- $as_echo ""
- $as_echo " /* set the floating-point register value: */"
- $as_echo " ic->tme_sparc_ireg_uint64(TME_SPARC_IREG_FPX)"
- $as_echo " = value_double->tme_value64_uint;"
- $as_echo ""
- $as_echo " /* do an stx${alternate}-style store: */"
- $as_echo " tme_sparc${arch}_stx${alternate}(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"
- $as_echo " }"
+ AS_ECHO([" /* if bit two of the address is set, and this SPARC supports"])
+ AS_ECHO([" 32-bit-aligned ${insn} instructions: */"])
+ AS_ECHO([" if ((misaligned & sizeof(tme_uint32_t))"])
+ AS_ECHO([" && fpreg != &float_buffer) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* set the floating-point register value: */"])
+ AS_ECHO([" ic->tme_sparc_ireg_uint64(TME_SPARC_IREG_FPX + 0)"])
+ AS_ECHO([" = value_double->tme_value64_uint32_hi;"])
+ AS_ECHO([" ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_FPX + 1)"])
+ AS_ECHO([" = value_double->tme_value64_uint32_lo;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do two 32-bit stores: */"])
+ AS_ECHO([" offset = sizeof(tme_uint32_t) * 0;"])
+ AS_ECHO([" tme_sparc${arch}_st${alternate}(ic, &address, &offset, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX + 0));"])
+ AS_ECHO([" offset = sizeof(tme_uint32_t) * 1;"])
+ AS_ECHO([" tme_sparc${arch}_st${alternate}(ic, &address, &offset, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX + 1));"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, bit two of the address is not set, or this SPARC"])
+ AS_ECHO([" doesn't support 32-bit-aligned ${insn} instructions: */"])
+ AS_ECHO([" else {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* set the floating-point register value: */"])
+ AS_ECHO([" ic->tme_sparc_ireg_uint64(TME_SPARC_IREG_FPX)"])
+ AS_ECHO([" = value_double->tme_value64_uint;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do an stx${alternate}-style store: */"])
+ AS_ECHO([" tme_sparc${arch}_stx${alternate}(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"])
+ AS_ECHO([" }"])
fi
- $as_echo ""
- $as_echo " assert (fpreg != &float_buffer);"
- $as_echo " TME_SPARC_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" assert (fpreg != &float_buffer);"])
+ AS_ECHO([" TME_SPARC_INSN_OK;"])
+ AS_ECHO(["}"])
fi
# the ldfsr instruction:
#
if test ${insn} = ldfsr; then
- $as_echo ""
- $as_echo "/* this does a sparc${arch} ${insn}: */"
- $as_echo "TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"
- $as_echo "{"
- $as_echo " tme_uint32_t fsr;"
+ AS_ECHO([""])
+ AS_ECHO(["/* this does a sparc${arch} ${insn}: */"])
+ AS_ECHO(["TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"])
+ AS_ECHO(["{"])
+ AS_ECHO([" tme_uint32_t fsr;"])
if test ${arch} != 32; then
- $as_echo " tme_uint32_t reg_rd;"
- $as_echo ""
- $as_echo " /* see if this is an ldfsr or an ldxfsr: */"
- $as_echo " reg_rd = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, TME_SPARC_FORMAT3_MASK_RD);"
- $as_echo " if (__tme_predict_false(reg_rd > 1)) {"
- $as_echo " TME_SPARC_INSN_ILL(ic);"
- $as_echo " }"
+ AS_ECHO([" tme_uint32_t reg_rd;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* see if this is an ldfsr or an ldxfsr: */"])
+ AS_ECHO([" reg_rd = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, TME_SPARC_FORMAT3_MASK_RD);"])
+ AS_ECHO([" if (__tme_predict_false(reg_rd > 1)) {"])
+ AS_ECHO([" TME_SPARC_INSN_ILL(ic);"])
+ AS_ECHO([" }"])
fi
- $as_echo ""
- $as_echo " _tme_sparc${arch}_fpu_mem(ic);"
- $as_echo ""
+ AS_ECHO([""])
+ AS_ECHO([" _tme_sparc${arch}_fpu_mem(ic);"])
+ AS_ECHO([""])
if test ${arch} = 32; then
- $as_echo " /* do the load: */"
+ AS_ECHO([" /* do the load: */"])
else
- $as_echo " /* if this is an ldxfsr: */"
- $as_echo " if (reg_rd == 1) {"
- $as_echo ""
- $as_echo " /* do the load: */"
- $as_echo " tme_sparc${arch}_ldx(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"
- $as_echo ""
- $as_echo " /* update the extended FSR: */"
- $as_echo " ic->tme_sparc_fpu_xfsr"
- $as_echo " = (ic->tme_sparc_ireg_uint32((TME_SPARC_IREG_FPX${reg32_shift}) + 1)"
- $as_echo " & 0x3f /* fcc3 .. fcc1 */);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, this is an ldfsr. do the load: */"
- $as_echo " else"
- $as_echo_n " "
+ AS_ECHO([" /* if this is an ldxfsr: */"])
+ AS_ECHO([" if (reg_rd == 1) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do the load: */"])
+ AS_ECHO([" tme_sparc${arch}_ldx(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"])
+ AS_ECHO([""])
+ AS_ECHO([" /* update the extended FSR: */"])
+ AS_ECHO([" ic->tme_sparc_fpu_xfsr"])
+ AS_ECHO([" = (ic->tme_sparc_ireg_uint32((TME_SPARC_IREG_FPX${reg32_shift}) + 1)"])
+ AS_ECHO([" & 0x3f /* fcc3 .. fcc1 */);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, this is an ldfsr. do the load: */"])
+ AS_ECHO([" else"])
+ AS_ECHO_N([" "])
fi
- $as_echo " tme_sparc${arch}_ld(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"
- $as_echo ""
- $as_echo " /* update the FSR: */"
- $as_echo " fsr = ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_FPX${reg32_shift});"
- $as_echo " /* \"An LDFSR instruction does not affect ftt.\" */"
- $as_echo " /* \"The LDFSR instruction does not affect qne.\" */"
- $as_echo " fsr &= ~(TME_SPARC_FSR_VER | TME_SPARC_FSR_FTT | TME_SPARC_FSR_QNE);"
- $as_echo " ic->tme_sparc_fpu_fsr = (ic->tme_sparc_fpu_fsr & (TME_SPARC_FSR_VER | TME_SPARC_FSR_FTT | TME_SPARC_FSR_QNE)) | fsr;"
- $as_echo ""
- $as_echo " TME_SPARC_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([" tme_sparc${arch}_ld(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"])
+ AS_ECHO([""])
+ AS_ECHO([" /* update the FSR: */"])
+ AS_ECHO([" fsr = ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_FPX${reg32_shift});"])
+ AS_ECHO([" /* \"An LDFSR instruction does not affect ftt.\" */"])
+ AS_ECHO([" /* \"The LDFSR instruction does not affect qne.\" */"])
+ AS_ECHO([" fsr &= ~(TME_SPARC_FSR_VER | TME_SPARC_FSR_FTT | TME_SPARC_FSR_QNE);"])
+ AS_ECHO([" ic->tme_sparc_fpu_fsr = (ic->tme_sparc_fpu_fsr & (TME_SPARC_FSR_VER | TME_SPARC_FSR_FTT | TME_SPARC_FSR_QNE)) | fsr;"])
+ AS_ECHO([""])
+ AS_ECHO([" TME_SPARC_INSN_OK;"])
+ AS_ECHO(["}"])
fi
# the stfsr instruction:
#
if test ${insn} = stfsr; then
- $as_echo ""
- $as_echo "/* this does a sparc${arch} ${insn}: */"
- $as_echo "TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"
- $as_echo "{"
+ AS_ECHO([""])
+ AS_ECHO(["/* this does a sparc${arch} ${insn}: */"])
+ AS_ECHO(["TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"])
+ AS_ECHO(["{"])
if test ${arch} = 64; then
- $as_echo " tme_uint32_t reg_rd;"
- $as_echo ""
- $as_echo " /* see if this is an stfsr or an stxfsr: */"
- $as_echo " reg_rd = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, TME_SPARC_FORMAT3_MASK_RD);"
- $as_echo " if (__tme_predict_false(reg_rd > 1)) {"
- $as_echo " TME_SPARC_INSN_ILL(ic);"
- $as_echo " }"
+ AS_ECHO([" tme_uint32_t reg_rd;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* see if this is an stfsr or an stxfsr: */"])
+ AS_ECHO([" reg_rd = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, TME_SPARC_FORMAT3_MASK_RD);"])
+ AS_ECHO([" if (__tme_predict_false(reg_rd > 1)) {"])
+ AS_ECHO([" TME_SPARC_INSN_ILL(ic);"])
+ AS_ECHO([" }"])
fi
- $as_echo ""
- $as_echo " _tme_sparc${arch}_fpu_mem(ic);"
- $as_echo ""
- $as_echo " /* set the FSR value to store: */"
- $as_echo " ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_FPX${reg32_shift}) = ic->tme_sparc_fpu_fsr;"
- $as_echo ""
+ AS_ECHO([""])
+ AS_ECHO([" _tme_sparc${arch}_fpu_mem(ic);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* set the FSR value to store: */"])
+ AS_ECHO([" ic->tme_sparc_ireg_uint32(TME_SPARC_IREG_FPX${reg32_shift}) = ic->tme_sparc_fpu_fsr;"])
+ AS_ECHO([""])
if test ${arch} = 32; then
- $as_echo " /* do the store: */"
+ AS_ECHO([" /* do the store: */"])
else
- $as_echo " /* if this is an stxfsr: */"
- $as_echo " if (reg_rd == 1) {"
- $as_echo ""
- $as_echo " /* set in the extended FSR to store and do the store: */"
- $as_echo " ic->tme_sparc_ireg_uint32((TME_SPARC_IREG_FPX${reg32_shift}) + 1) = ic->tme_sparc_fpu_xfsr;"
- $as_echo " tme_sparc${arch}_stx(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, this is a stfsr. do the store: */"
- $as_echo " else"
- $as_echo_n " "
+ AS_ECHO([" /* if this is an stxfsr: */"])
+ AS_ECHO([" if (reg_rd == 1) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* set in the extended FSR to store and do the store: */"])
+ AS_ECHO([" ic->tme_sparc_ireg_uint32((TME_SPARC_IREG_FPX${reg32_shift}) + 1) = ic->tme_sparc_fpu_xfsr;"])
+ AS_ECHO([" tme_sparc${arch}_stx(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, this is a stfsr. do the store: */"])
+ AS_ECHO([" else"])
+ AS_ECHO_N([" "])
fi
- $as_echo " tme_sparc${arch}_st(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"
- $as_echo ""
- $as_echo " TME_SPARC_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([" tme_sparc${arch}_st(ic, _rs1, _rs2, &ic->tme_sparc_ireg_uint${arch}(TME_SPARC_IREG_FPX));"])
+ AS_ECHO([""])
+ AS_ECHO([" TME_SPARC_INSN_OK;"])
+ AS_ECHO(["}"])
fi
# the fpop1 and fpop2 instructions:
#
if test ${insn} = fpop1 || test ${insn} = fpop2; then
- $as_echo ""
- $as_echo "/* this does a sparc${arch} ${insn}: */"
- $as_echo "TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"
- $as_echo "{"
- $as_echo " TME_SPARC_INSN_FPU;"
- $as_echo " tme_sparc_fpu_${insn}(ic);"
- $as_echo " TME_SPARC_INSN_OK;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO(["/* this does a sparc${arch} ${insn}: */"])
+ AS_ECHO(["TME_SPARC_FORMAT3(tme_sparc${arch}_${insn}, tme_uint${arch}_t)"])
+ AS_ECHO(["{"])
+ AS_ECHO([" TME_SPARC_INSN_FPU;"])
+ AS_ECHO([" tme_sparc_fpu_${insn}(ic);"])
+ AS_ECHO([" TME_SPARC_INSN_OK;"])
+ AS_ECHO(["}"])
fi
done
@@ -1641,145 +1641,145 @@ for arch in 32 64; do
# the slow atomic function:
#
if $header; then
- $as_echo "void tme_sparc${arch}_atomic _TME_P((struct tme_sparc *, struct tme_sparc_ls *));"
+ AS_ECHO(["void tme_sparc${arch}_atomic _TME_P((struct tme_sparc *, struct tme_sparc_ls *));"])
else
- $as_echo ""
- $as_echo "/* this does a slow atomic operation: */"
- $as_echo "void"
- $as_echo "tme_sparc${arch}_atomic(struct tme_sparc *ic, struct tme_sparc_ls *ls)"
- $as_echo "{"
- $as_echo " tme_uint32_t endian_little;"
- $as_echo " tme_uint32_t insn;"
+ AS_ECHO([""])
+ AS_ECHO(["/* this does a slow atomic operation: */"])
+ AS_ECHO(["void"])
+ AS_ECHO(["tme_sparc${arch}_atomic(struct tme_sparc *ic, struct tme_sparc_ls *ls)"])
+ AS_ECHO(["{"])
+ AS_ECHO([" tme_uint32_t endian_little;"])
+ AS_ECHO([" tme_uint32_t insn;"])
if test ${arch} = 64; then
- $as_echo " tme_uint${arch}_t value${arch};"
- $as_echo " tme_uint${arch}_t value_swap${arch};"
- $as_echo " unsigned int reg_rs2;"
+ AS_ECHO([" tme_uint${arch}_t value${arch};"])
+ AS_ECHO([" tme_uint${arch}_t value_swap${arch};"])
+ AS_ECHO([" unsigned int reg_rs2;"])
fi
- $as_echo " tme_uint32_t value32;"
- $as_echo " tme_uint32_t value_swap32;"
- $as_echo " tme_uint32_t size;"
- $as_echo ""
- $as_echo " /* if this is the beginning of the operation: */"
- $as_echo " if (ls->tme_sparc_ls_state == 0) {"
- $as_echo ""
- $as_echo " /* start the load part of the operation: */"
- $as_echo " ls->tme_sparc_ls_state = ls->tme_sparc_ls_size;"
- $as_echo " assert (ls->tme_sparc_ls_state != 0"
- $as_echo " && (ls->tme_sparc_ls_state & TME_BIT(7)) == 0);"
- $as_echo ""
- $as_echo " /* the load must start at the beginning of the buffer: */"
- $as_echo " assert (ls->tme_sparc_ls_buffer_offset == 0);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* if this is the load part of the operation: */"
- $as_echo " if ((ls->tme_sparc_ls_state & TME_BIT(7)) == 0) {"
- $as_echo ""
- $as_echo " /* do one slow load cycle: */"
- $as_echo " tme_sparc${arch}_load(ic, ls);"
- $as_echo ""
- $as_echo " /* if the slow load cycle did not load all of the data: */"
- $as_echo " if (__tme_predict_false(ls->tme_sparc_ls_size != 0)) {"
- $as_echo " return;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* get the byte order of this transfer: */"
+ AS_ECHO([" tme_uint32_t value32;"])
+ AS_ECHO([" tme_uint32_t value_swap32;"])
+ AS_ECHO([" tme_uint32_t size;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is the beginning of the operation: */"])
+ AS_ECHO([" if (ls->tme_sparc_ls_state == 0) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* start the load part of the operation: */"])
+ AS_ECHO([" ls->tme_sparc_ls_state = ls->tme_sparc_ls_size;"])
+ AS_ECHO([" assert (ls->tme_sparc_ls_state != 0"])
+ AS_ECHO([" && (ls->tme_sparc_ls_state & TME_BIT(7)) == 0);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* the load must start at the beginning of the buffer: */"])
+ AS_ECHO([" assert (ls->tme_sparc_ls_buffer_offset == 0);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is the load part of the operation: */"])
+ AS_ECHO([" if ((ls->tme_sparc_ls_state & TME_BIT(7)) == 0) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do one slow load cycle: */"])
+ AS_ECHO([" tme_sparc${arch}_load(ic, ls);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the slow load cycle did not load all of the data: */"])
+ AS_ECHO([" if (__tme_predict_false(ls->tme_sparc_ls_size != 0)) {"])
+ AS_ECHO([" return;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the byte order of this transfer: */"])
if test ${arch} = 32; then
- $as_echo " endian_little = FALSE;"
+ AS_ECHO([" endian_little = FALSE;"])
else
- $as_echo " endian_little = ls->tme_sparc_ls_lsinfo & TME_SPARC_LSINFO_ENDIAN_LITTLE;"
+ AS_ECHO([" endian_little = ls->tme_sparc_ls_lsinfo & TME_SPARC_LSINFO_ENDIAN_LITTLE;"])
fi
- $as_echo ""
- $as_echo " /* dispatch on the op3 of the instruction: */"
- $as_echo " insn = TME_SPARC_INSN;"
- $as_echo " switch ((insn >> 19) & 0x3f) {"
+ AS_ECHO([""])
+ AS_ECHO([" /* dispatch on the op3 of the instruction: */"])
+ AS_ECHO([" insn = TME_SPARC_INSN;"])
+ AS_ECHO([" switch ((insn >> 19) & 0x3f) {"])
if test ${arch} = 64; then
for size in 32 64; do
- $as_echo ""
+ AS_ECHO([""])
if test ${size} = 32; then
- $as_echo " case 0x3c: /* casa */"
+ AS_ECHO([" case 0x3c: /* casa */"])
else
- $as_echo " case 0x3e: /* casxa */"
+ AS_ECHO([" case 0x3e: /* casxa */"])
fi
- $as_echo ""
- $as_echo " /* finish the load part of the compare and swap: */"
- $as_echo " assert (ls->tme_sparc_ls_state == sizeof(tme_uint${size}_t));"
- $as_echo " value${size} = ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer${size}s[[0]];"
- $as_echo " value_swap${size} = *ls->tme_sparc_ls_rd64;"
- $as_echo " if (endian_little) {"
- $as_echo " value${size} = tme_letoh_u${size}(value${size});"
- $as_echo " value_swap${size} = tme_htole_u${size}(value_swap${size});"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " value${size} = tme_betoh_u${size}(value${size});"
- $as_echo " value_swap${size} = tme_htobe_u${size}(value_swap${size});"
- $as_echo " }"
- $as_echo " *ls->tme_sparc_ls_rd64 = value${size};"
- $as_echo ""
- $as_echo " /* if the comparison fails: */"
- $as_echo " reg_rs2 = TME_FIELD_MASK_EXTRACTU(insn, TME_SPARC_FORMAT3_MASK_RS2);"
- $as_echo " TME_SPARC_REG_INDEX(ic, reg_rs2);"
- $as_echo " if (value${size} != (tme_uint${size}_t) ic->tme_sparc_ireg_uint${arch}(reg_rs2)) {"
- $as_echo " return;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* start the store part of the compare and swap: */"
- $as_echo " ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer${size}s[[0]] = value_swap${size};"
- $as_echo " break;"
+ AS_ECHO([""])
+ AS_ECHO([" /* finish the load part of the compare and swap: */"])
+ AS_ECHO([" assert (ls->tme_sparc_ls_state == sizeof(tme_uint${size}_t));"])
+ AS_ECHO([" value${size} = ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer${size}s[[0]];"])
+ AS_ECHO([" value_swap${size} = *ls->tme_sparc_ls_rd64;"])
+ AS_ECHO([" if (endian_little) {"])
+ AS_ECHO([" value${size} = tme_letoh_u${size}(value${size});"])
+ AS_ECHO([" value_swap${size} = tme_htole_u${size}(value_swap${size});"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" value${size} = tme_betoh_u${size}(value${size});"])
+ AS_ECHO([" value_swap${size} = tme_htobe_u${size}(value_swap${size});"])
+ AS_ECHO([" }"])
+ AS_ECHO([" *ls->tme_sparc_ls_rd64 = value${size};"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the comparison fails: */"])
+ AS_ECHO([" reg_rs2 = TME_FIELD_MASK_EXTRACTU(insn, TME_SPARC_FORMAT3_MASK_RS2);"])
+ AS_ECHO([" TME_SPARC_REG_INDEX(ic, reg_rs2);"])
+ AS_ECHO([" if (value${size} != (tme_uint${size}_t) ic->tme_sparc_ireg_uint${arch}(reg_rs2)) {"])
+ AS_ECHO([" return;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* start the store part of the compare and swap: */"])
+ AS_ECHO([" ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer${size}s[[0]] = value_swap${size};"])
+ AS_ECHO([" break;"])
done
fi
- $as_echo ""
- $as_echo " case 0x0d: /* ldstub */"
- $as_echo " case 0x1d: /* ldstuba */"
- $as_echo ""
- $as_echo " /* finish the load part of the ldstub: */"
- $as_echo " assert (ls->tme_sparc_ls_state == sizeof(tme_uint8_t));"
- $as_echo " *ls->tme_sparc_ls_rd${arch} = ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer8s[[0]];"
- $as_echo ""
- $as_echo " /* start the store part of the ldstub: */"
- $as_echo " ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer8s[[0]] = 0xff;"
- $as_echo " break;"
- $as_echo ""
- $as_echo " /* otherwise, this must be swap: */"
- $as_echo " default:"
- $as_echo " assert (((insn >> 19) & 0x2f) == 0x0f /* swap, swapa */);"
- $as_echo ""
- $as_echo " /* finish the load part of the swap: */"
- $as_echo " assert (ls->tme_sparc_ls_state == sizeof(tme_uint32_t));"
- $as_echo " value32 = ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer32s[[0]];"
- $as_echo " value_swap32 = *ls->tme_sparc_ls_rd${arch};"
- $as_echo " if (endian_little) {"
- $as_echo " value32 = tme_letoh_u32(value32);"
- $as_echo " value_swap32 = tme_htole_u32(value32);"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " value32 = tme_betoh_u32(value32);"
- $as_echo " value_swap32 = tme_htobe_u32(value32);"
- $as_echo " }"
- $as_echo " *ls->tme_sparc_ls_rd${arch} = value32;"
- $as_echo ""
- $as_echo " /* start the store part of the swap: */"
- $as_echo " ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer32s[[0]] = value_swap32;"
- $as_echo " break;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* start the store part of the operation: */"
- $as_echo " size = ls->tme_sparc_ls_state;"
- $as_echo " ls->tme_sparc_ls_address${arch} -= size;"
- $as_echo " ls->tme_sparc_ls_size = size;"
- $as_echo " ls->tme_sparc_ls_buffer_offset = 0;"
- $as_echo " ls->tme_sparc_ls_state = size | TME_BIT(7);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* this is the store part of the operation: */"
- $as_echo ""
- $as_echo " /* do one slow store cycle: */"
- $as_echo " tme_sparc${arch}_store(ic, ls);"
- $as_echo ""
- $as_echo " /* if the slow store cycle did not store all of the data: */"
- $as_echo " if (__tme_predict_false(ls->tme_sparc_ls_size != 0)) {"
- $as_echo " return;"
- $as_echo " }"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" case 0x0d: /* ldstub */"])
+ AS_ECHO([" case 0x1d: /* ldstuba */"])
+ AS_ECHO([""])
+ AS_ECHO([" /* finish the load part of the ldstub: */"])
+ AS_ECHO([" assert (ls->tme_sparc_ls_state == sizeof(tme_uint8_t));"])
+ AS_ECHO([" *ls->tme_sparc_ls_rd${arch} = ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer8s[[0]];"])
+ AS_ECHO([""])
+ AS_ECHO([" /* start the store part of the ldstub: */"])
+ AS_ECHO([" ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer8s[[0]] = 0xff;"])
+ AS_ECHO([" break;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, this must be swap: */"])
+ AS_ECHO([" default:"])
+ AS_ECHO([" assert (((insn >> 19) & 0x2f) == 0x0f /* swap, swapa */);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* finish the load part of the swap: */"])
+ AS_ECHO([" assert (ls->tme_sparc_ls_state == sizeof(tme_uint32_t));"])
+ AS_ECHO([" value32 = ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer32s[[0]];"])
+ AS_ECHO([" value_swap32 = *ls->tme_sparc_ls_rd${arch};"])
+ AS_ECHO([" if (endian_little) {"])
+ AS_ECHO([" value32 = tme_letoh_u32(value32);"])
+ AS_ECHO([" value_swap32 = tme_htole_u32(value32);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" value32 = tme_betoh_u32(value32);"])
+ AS_ECHO([" value_swap32 = tme_htobe_u32(value32);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" *ls->tme_sparc_ls_rd${arch} = value32;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* start the store part of the swap: */"])
+ AS_ECHO([" ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer32s[[0]] = value_swap32;"])
+ AS_ECHO([" break;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* start the store part of the operation: */"])
+ AS_ECHO([" size = ls->tme_sparc_ls_state;"])
+ AS_ECHO([" ls->tme_sparc_ls_address${arch} -= size;"])
+ AS_ECHO([" ls->tme_sparc_ls_size = size;"])
+ AS_ECHO([" ls->tme_sparc_ls_buffer_offset = 0;"])
+ AS_ECHO([" ls->tme_sparc_ls_state = size | TME_BIT(7);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* this is the store part of the operation: */"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do one slow store cycle: */"])
+ AS_ECHO([" tme_sparc${arch}_store(ic, ls);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the slow store cycle did not store all of the data: */"])
+ AS_ECHO([" if (__tme_predict_false(ls->tme_sparc_ls_size != 0)) {"])
+ AS_ECHO([" return;"])
+ AS_ECHO([" }"])
+ AS_ECHO(["}"])
fi
# the slow load and store functions:
@@ -1794,774 +1794,774 @@ for arch in 32 64; do
capcycle="WRITE"
fi
if $header; then
- $as_echo "void tme_sparc${arch}_${slow} _TME_P((struct tme_sparc *, struct tme_sparc_ls *));"
+ AS_ECHO(["void tme_sparc${arch}_${slow} _TME_P((struct tme_sparc *, struct tme_sparc_ls *));"])
continue
fi
- $as_echo ""
- $as_echo "/* this does one slow ${slow} cycle: */"
- $as_echo "void"
- $as_echo "tme_sparc${arch}_${slow}(struct tme_sparc *ic, "
- $as_echo " struct tme_sparc_ls *ls)"
- $as_echo "{"
+ AS_ECHO([""])
+ AS_ECHO(["/* this does one slow ${slow} cycle: */"])
+ AS_ECHO(["void"])
+ AS_ECHO(["tme_sparc${arch}_${slow}(struct tme_sparc *ic, "])
+ AS_ECHO([" struct tme_sparc_ls *ls)"])
+ AS_ECHO(["{"])
# our locals:
#
- $as_echo " struct tme_sparc_tlb *tlb;"
- $as_echo " tme_uint${arch}_t address;"
- $as_echo " unsigned int cycle_size;"
- $as_echo " tme_bus_addr_t physical_address;"
- $as_echo " int shift;"
- $as_echo " int err;"
-
- $as_echo ""
- $as_echo " /* get the TLB entry: */"
- $as_echo " tlb = ls->tme_sparc_ls_tlb;"
- $as_echo ""
- $as_echo " /* the TLB entry must be busy and valid: */"
- $as_echo " assert (tme_bus_tlb_is_valid(&tlb->tme_sparc_tlb_bus_tlb));"
- $as_echo ""
- $as_echo " /* start the bus cycle structure: */"
- $as_echo " ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_type = TME_BUS_CYCLE_${capcycle};"
- $as_echo ""
- $as_echo " /* get the buffer: */"
- $as_echo " ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_buffer = &ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer8s[[ls->tme_sparc_ls_buffer_offset]];"
- $as_echo " ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_buffer_increment = 1;"
- $as_echo ""
- $as_echo " /* get the current address: */"
- $as_echo " address = ls->tme_sparc_ls_address${arch};"
- $as_echo " ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_address = address;"
- $as_echo ""
- $as_echo " /* start the cycle size: */"
- $as_echo " cycle_size = ls->tme_sparc_ls_size;"
- $as_echo " assert (cycle_size > 0);"
- $as_echo " cycle_size--;"
- $as_echo " cycle_size = TME_MIN(cycle_size, (((tme_bus_addr${arch}_t) tlb->tme_sparc_tlb_addr_last) - address)) + 1;"
- $as_echo ""
- $as_echo " /* if this TLB entry allows fast ${cycle}s: */"
- $as_echo " if (__tme_predict_true(tlb->tme_sparc_tlb_emulator_off_${cycle} != TME_EMULATOR_OFF_UNDEF)) {"
- $as_echo ""
- $as_echo " /* do a ${cycle}: */"
- $as_echo " ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_size = cycle_size;"
- $as_echo " tme_memory_bus_${cycle}_buffer((tlb->tme_sparc_tlb_emulator_off_${cycle} + (tme_uint${arch}_t) ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_address),"
- $as_echo " ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_buffer,"
- $as_echo " ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_size,"
- $as_echo " tlb->tme_sparc_tlb_bus_rwlock,"
- $as_echo " sizeof(tme_uint8_t),"
- $as_echo " sizeof(tme_uint${arch}_t));"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, this TLB entry does not allow fast ${cycle}s: */"
- $as_echo " else {"
- $as_echo ""
- $as_echo " /* finish the cycle size: */"
- $as_echo " cycle_size = TME_MIN(cycle_size, 1 + ((~ (unsigned int) address) % sizeof(tme_uint${arch}_t)));"
- $as_echo " ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_size = cycle_size;"
- $as_echo ""
- $as_echo " /* form the physical address for the bus cycle handler: */"
- $as_echo " physical_address = ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_address;"
- $as_echo " physical_address += tlb->tme_sparc_tlb_addr_offset;"
- $as_echo " shift = tlb->tme_sparc_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 " ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_address = physical_address;"
- $as_echo ""
- $as_echo " /* finish the bus cycle structure: */"
- $as_echo " (*ic->_tme_sparc_ls_bus_cycle)(ic, ls);"
-
- $as_echo " tme_sparc_log(ic, 10000, TME_OK,"
- $as_echo " (TME_SPARC_LOG_HANDLE(ic),"
- $as_echo " _(\"cycle-${slow}%u\t0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch}),"
- $as_echo " (unsigned int) (ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_size * 8),"
- $as_echo " (tme_bus_addr${arch}_t) ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_address));"
-
- $as_echo ""
- $as_echo " /* callout the bus cycle: */"
- $as_echo " tme_sparc_tlb_unbusy(tlb);"
- $as_echo " tme_sparc_callout_unlock(ic);"
- $as_echo " err = (*tlb->tme_sparc_tlb_bus_tlb.tme_bus_tlb_cycle)"
- $as_echo " (tlb->tme_sparc_tlb_bus_tlb.tme_bus_tlb_cycle_private,"
- $as_echo " &ls->tme_sparc_ls_bus_cycle);"
- $as_echo " tme_sparc_callout_relock(ic);"
- $as_echo " tme_sparc_tlb_busy(tlb);"
- $as_echo ""
- $as_echo " /* the TLB entry can't have been invalidated before the ${slow}: */"
- $as_echo " assert (err != EBADF);"
- $as_echo ""
- $as_echo " /* if the bus cycle didn't complete normally: */"
- $as_echo " if (err != TME_OK) {"
- $as_echo ""
- $as_echo " /* if a real bus fault may have happened, instead of"
- $as_echo " some synchronous event: */"
- $as_echo " if (err != TME_BUS_CYCLE_SYNCHRONOUS_EVENT) {"
- $as_echo ""
- $as_echo " /* call the bus fault handlers: */"
- $as_echo " err = tme_bus_tlb_fault(&tlb->tme_sparc_tlb_bus_tlb, &ls->tme_sparc_ls_bus_cycle, err);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* if some synchronous event has happened: */"
- $as_echo " 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_sparc_instruction_burst_remaining = 0;"
- $as_echo " ic->_tme_sparc_instruction_burst_other = TRUE;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, if no real bus fault happened: */"
- $as_echo " else if (err == TME_OK) {"
- $as_echo ""
- $as_echo " /* nothing to do */"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, a real bus fault happened: */"
- $as_echo " else {"
- $as_echo " (*ic->_tme_sparc_ls_bus_fault)(ic, ls, err);"
- $as_echo " return;"
- $as_echo " }"
- $as_echo " }"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* some data must have been transferred: */"
- $as_echo " assert (ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_size > 0);"
+ AS_ECHO([" struct tme_sparc_tlb *tlb;"])
+ AS_ECHO([" tme_uint${arch}_t address;"])
+ AS_ECHO([" unsigned int cycle_size;"])
+ AS_ECHO([" tme_bus_addr_t physical_address;"])
+ AS_ECHO([" int shift;"])
+ AS_ECHO([" int err;"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* get the TLB entry: */"])
+ AS_ECHO([" tlb = ls->tme_sparc_ls_tlb;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* the TLB entry must be busy and valid: */"])
+ AS_ECHO([" assert (tme_bus_tlb_is_valid(&tlb->tme_sparc_tlb_bus_tlb));"])
+ AS_ECHO([""])
+ AS_ECHO([" /* start the bus cycle structure: */"])
+ AS_ECHO([" ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_type = TME_BUS_CYCLE_${capcycle};"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the buffer: */"])
+ AS_ECHO([" ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_buffer = &ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer8s[[ls->tme_sparc_ls_buffer_offset]];"])
+ AS_ECHO([" ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_buffer_increment = 1;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the current address: */"])
+ AS_ECHO([" address = ls->tme_sparc_ls_address${arch};"])
+ AS_ECHO([" ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_address = address;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* start the cycle size: */"])
+ AS_ECHO([" cycle_size = ls->tme_sparc_ls_size;"])
+ AS_ECHO([" assert (cycle_size > 0);"])
+ AS_ECHO([" cycle_size--;"])
+ AS_ECHO([" cycle_size = TME_MIN(cycle_size, (((tme_bus_addr${arch}_t) tlb->tme_sparc_tlb_addr_last) - address)) + 1;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this TLB entry allows fast ${cycle}s: */"])
+ AS_ECHO([" if (__tme_predict_true(tlb->tme_sparc_tlb_emulator_off_${cycle} != TME_EMULATOR_OFF_UNDEF)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* do a ${cycle}: */"])
+ AS_ECHO([" ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_size = cycle_size;"])
+ AS_ECHO([" tme_memory_bus_${cycle}_buffer((tlb->tme_sparc_tlb_emulator_off_${cycle} + (tme_uint${arch}_t) ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_address),"])
+ AS_ECHO([" ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_buffer,"])
+ AS_ECHO([" ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_size,"])
+ AS_ECHO([" tlb->tme_sparc_tlb_bus_rwlock,"])
+ AS_ECHO([" sizeof(tme_uint8_t),"])
+ AS_ECHO([" sizeof(tme_uint${arch}_t));"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, this TLB entry does not allow fast ${cycle}s: */"])
+ AS_ECHO([" else {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* finish the cycle size: */"])
+ AS_ECHO([" cycle_size = TME_MIN(cycle_size, 1 + ((~ (unsigned int) address) % sizeof(tme_uint${arch}_t)));"])
+ AS_ECHO([" ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_size = cycle_size;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* form the physical address for the bus cycle handler: */"])
+ AS_ECHO([" physical_address = ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_address;"])
+ AS_ECHO([" physical_address += tlb->tme_sparc_tlb_addr_offset;"])
+ AS_ECHO([" shift = tlb->tme_sparc_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([" ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_address = physical_address;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* finish the bus cycle structure: */"])
+ AS_ECHO([" (*ic->_tme_sparc_ls_bus_cycle)(ic, ls);"])
+
+ AS_ECHO([" tme_sparc_log(ic, 10000, TME_OK,"])
+ AS_ECHO([" (TME_SPARC_LOG_HANDLE(ic),"])
+ AS_ECHO([" _(\"cycle-${slow}%u\t0x%0"`expr ${arch} / 4`"\" TME_PRIx${arch}),"])
+ AS_ECHO([" (unsigned int) (ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_size * 8),"])
+ AS_ECHO([" (tme_bus_addr${arch}_t) ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_address));"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* callout the bus cycle: */"])
+ AS_ECHO([" tme_sparc_tlb_unbusy(tlb);"])
+ AS_ECHO([" tme_sparc_callout_unlock(ic);"])
+ AS_ECHO([" err = (*tlb->tme_sparc_tlb_bus_tlb.tme_bus_tlb_cycle)"])
+ AS_ECHO([" (tlb->tme_sparc_tlb_bus_tlb.tme_bus_tlb_cycle_private,"])
+ AS_ECHO([" &ls->tme_sparc_ls_bus_cycle);"])
+ AS_ECHO([" tme_sparc_callout_relock(ic);"])
+ AS_ECHO([" tme_sparc_tlb_busy(tlb);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* the TLB entry can't have been invalidated before the ${slow}: */"])
+ AS_ECHO([" assert (err != EBADF);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the bus cycle didn't complete normally: */"])
+ AS_ECHO([" if (err != TME_OK) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if a real bus fault may have happened, instead of"])
+ AS_ECHO([" some synchronous event: */"])
+ AS_ECHO([" if (err != TME_BUS_CYCLE_SYNCHRONOUS_EVENT) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* call the bus fault handlers: */"])
+ AS_ECHO([" err = tme_bus_tlb_fault(&tlb->tme_sparc_tlb_bus_tlb, &ls->tme_sparc_ls_bus_cycle, err);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if some synchronous event has happened: */"])
+ AS_ECHO([" 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_sparc_instruction_burst_remaining = 0;"])
+ AS_ECHO([" ic->_tme_sparc_instruction_burst_other = TRUE;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, if no real bus fault happened: */"])
+ AS_ECHO([" else if (err == TME_OK) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* nothing to do */"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, a real bus fault happened: */"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" (*ic->_tme_sparc_ls_bus_fault)(ic, ls, err);"])
+ AS_ECHO([" return;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* some data must have been transferred: */"])
+ AS_ECHO([" assert (ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_size > 0);"])
if test ${slow} = store; then
- $as_echo ""
- $as_echo " /* if this was an atomic operation: */"
- $as_echo " if (__tme_predict_false(ls->tme_sparc_ls_lsinfo & TME_SPARC_LSINFO_OP_ATOMIC)) {"
- $as_echo ""
- $as_echo " /* we do not support atomic operations in TLB entries that"
- $as_echo " do not support both fast reads and fast writes. assuming"
- $as_echo " that all atomic operations are to regular memory, we"
- $as_echo " should always get fast read and fast write TLBs. when"
- $as_echo " we do not, it should only be because the memory has been"
- $as_echo " made read-only in the MMU. the write above was supposed"
- $as_echo " to cause a fault (with the instruction rerun later with"
- $as_echo " a fast read and fast write TLB entry), but instead it"
- $as_echo " succeeded and transferred some data. we have modified"
- $as_echo " memory and cannot recover: */"
- $as_echo " abort();"
- $as_echo " }"
+ AS_ECHO([""])
+ AS_ECHO([" /* if this was an atomic operation: */"])
+ AS_ECHO([" if (__tme_predict_false(ls->tme_sparc_ls_lsinfo & TME_SPARC_LSINFO_OP_ATOMIC)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* we do not support atomic operations in TLB entries that"])
+ AS_ECHO([" do not support both fast reads and fast writes. assuming"])
+ AS_ECHO([" that all atomic operations are to regular memory, we"])
+ AS_ECHO([" should always get fast read and fast write TLBs. when"])
+ AS_ECHO([" we do not, it should only be because the memory has been"])
+ AS_ECHO([" made read-only in the MMU. the write above was supposed"])
+ AS_ECHO([" to cause a fault (with the instruction rerun later with"])
+ AS_ECHO([" a fast read and fast write TLB entry), but instead it"])
+ AS_ECHO([" succeeded and transferred some data. we have modified"])
+ AS_ECHO([" memory and cannot recover: */"])
+ AS_ECHO([" abort();"])
+ AS_ECHO([" }"])
fi
- $as_echo ""
- $as_echo " /* update: */"
- $as_echo " cycle_size = ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_size;"
- $as_echo " ls->tme_sparc_ls_address${arch} += cycle_size;"
- $as_echo " ls->tme_sparc_ls_buffer_offset += cycle_size;"
- $as_echo " ls->tme_sparc_ls_size -= cycle_size;"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" /* update: */"])
+ AS_ECHO([" cycle_size = ls->tme_sparc_ls_bus_cycle.tme_bus_cycle_size;"])
+ AS_ECHO([" ls->tme_sparc_ls_address${arch} += cycle_size;"])
+ AS_ECHO([" ls->tme_sparc_ls_buffer_offset += cycle_size;"])
+ AS_ECHO([" ls->tme_sparc_ls_size -= cycle_size;"])
+ AS_ECHO(["}"])
done
# the load/store function:
#
if $header; then
- $as_echo "tme_shared tme_uint8_t *tme_sparc${arch}_ls _TME_P((struct tme_sparc *, tme_uint${arch}_t, tme_uint${arch}_t *, tme_uint32_t));"
+ AS_ECHO(["tme_shared tme_uint8_t *tme_sparc${arch}_ls _TME_P((struct tme_sparc *, tme_uint${arch}_t, tme_uint${arch}_t *, tme_uint32_t));"])
else
- $as_echo ""
- $as_echo "/* this does a slow load or store: */"
- $as_echo "tme_shared tme_uint8_t *"
- $as_echo "tme_sparc${arch}_ls(struct tme_sparc *ic,"
- $as_echo " tme_uint${arch}_t const address_first,"
- $as_echo " tme_uint${arch}_t *_rd,"
- $as_echo " tme_uint32_t lsinfo)"
- $as_echo "{"
- $as_echo " struct tme_sparc_ls ls;"
- $as_echo " tme_uint32_t size;"
- $as_echo " tme_uint32_t asi;"
- $as_echo " tme_uint32_t asi_mask_flags;"
- $as_echo " tme_uint32_t asi_mask;"
- $as_echo " tme_bus_context_t context;"
- $as_echo " tme_uint32_t tlb_hash;"
- $as_echo " unsigned long tlb_i;"
- $as_echo " unsigned long handler_i;"
- $as_echo " struct tme_sparc_tlb *tlb;"
- $as_echo " unsigned int cycle_type;"
- $as_echo " tme_uint${arch}_t address;"
- $as_echo " void (*address_map) _TME_P((struct tme_sparc *, struct tme_sparc_ls *));"
- $as_echo " tme_bus_addr_t address_bus;"
- $as_echo " int rc;"
- $as_echo " const tme_shared tme_uint8_t *emulator_off;"
- $as_echo " unsigned int buffer_offset;"
- $as_echo " tme_uint${arch}_t value;"
- $as_echo " tme_uint32_t value32;"
- $as_echo ""
- $as_echo " /* we must not be replaying instructions: */"
- $as_echo " assert (tme_sparc_recode_verify_replay_last_pc(ic) == 0);"
- $as_echo ""
- $as_echo " /* initialize the pointer to the rd register: */"
- $as_echo " ls.tme_sparc_ls_rd${arch} = _rd;"
- $as_echo ""
- $as_echo "#ifndef NDEBUG"
- $as_echo ""
- $as_echo " /* initialize the cycle function: */"
- $as_echo " ls.tme_sparc_ls_cycle = NULL;"
- $as_echo ""
- $as_echo " /* initialize the TLB entry pointer: */"
- $as_echo " ls.tme_sparc_ls_tlb = NULL;"
- $as_echo ""
- $as_echo "#endif /* NDEBUG */"
- $as_echo ""
- $as_echo " /* initialize the faults: */"
- $as_echo " ls.tme_sparc_ls_faults = TME_SPARC_LS_FAULT_NONE;"
- $as_echo ""
- $as_echo " /* initialize the address: */"
- $as_echo " ls.tme_sparc_ls_address${arch} = address_first;"
- $as_echo ""
- $as_echo " /* initialize the size: */"
- $as_echo " size = TME_SPARC_LSINFO_WHICH_SIZE(lsinfo);"
- $as_echo " ls.tme_sparc_ls_size = size;"
- $as_echo ""
- $as_echo " /* initialize the info: */"
- $as_echo " ls.tme_sparc_ls_lsinfo = lsinfo;"
- $as_echo ""
- $as_echo " /* if the address is not aligned: */"
- $as_echo " if (__tme_predict_false(((size - 1) & (tme_uint32_t) address_first) != 0)) {"
- $as_echo " ls.tme_sparc_ls_faults |= TME_SPARC_LS_FAULT_ADDRESS_NOT_ALIGNED;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, the address is aligned: */"
- $as_echo " else {"
- $as_echo ""
- $as_echo " /* the transfer must not cross a 32-bit boundary: */"
- $as_echo " assert ((size - 1) <= (tme_uint32_t) ~address_first);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* initialize the address map: */"
- $as_echo " ls.tme_sparc_ls_address_map = ic->_tme_sparc_ls_address_map;"
- $as_echo ""
- $as_echo " /* if this is a ldd, ldda, std, or stda, or an instruction"
- $as_echo " that loads or stores in the same way: */"
- $as_echo " if (lsinfo & TME_SPARC_LSINFO_LDD_STD) {"
- $as_echo ""
- $as_echo " /* if the rd register is odd: */"
- $as_echo " /* NB: we don't check the rd field in the instruction,"
- $as_echo " because the register number there might be encoded"
- $as_echo " in some way, or the architecture might ignore bit"
- $as_echo " zero in the rd field (for example, the sparc32 lddf)."
- $as_echo " instead, we test the rd register pointer: */"
- $as_echo " if (__tme_predict_false((ls.tme_sparc_ls_rd${arch}"
- $as_echo " - ic->tme_sparc_ic.tme_ic_iregs.tme_ic_iregs_uint${arch}s)"
- $as_echo " % 2)) {"
- $as_echo " ls.tme_sparc_ls_faults |= TME_SPARC_LS_FAULT_LDD_STD_RD_ODD;"
- $as_echo " }"
- $as_echo " }"
+ AS_ECHO([""])
+ AS_ECHO(["/* this does a slow load or store: */"])
+ AS_ECHO(["tme_shared tme_uint8_t *"])
+ AS_ECHO(["tme_sparc${arch}_ls(struct tme_sparc *ic,"])
+ AS_ECHO([" tme_uint${arch}_t const address_first,"])
+ AS_ECHO([" tme_uint${arch}_t *_rd,"])
+ AS_ECHO([" tme_uint32_t lsinfo)"])
+ AS_ECHO(["{"])
+ AS_ECHO([" struct tme_sparc_ls ls;"])
+ AS_ECHO([" tme_uint32_t size;"])
+ AS_ECHO([" tme_uint32_t asi;"])
+ AS_ECHO([" tme_uint32_t asi_mask_flags;"])
+ AS_ECHO([" tme_uint32_t asi_mask;"])
+ AS_ECHO([" tme_bus_context_t context;"])
+ AS_ECHO([" tme_uint32_t tlb_hash;"])
+ AS_ECHO([" unsigned long tlb_i;"])
+ AS_ECHO([" unsigned long handler_i;"])
+ AS_ECHO([" struct tme_sparc_tlb *tlb;"])
+ AS_ECHO([" unsigned int cycle_type;"])
+ AS_ECHO([" tme_uint${arch}_t address;"])
+ AS_ECHO([" void (*address_map) _TME_P((struct tme_sparc *, struct tme_sparc_ls *));"])
+ AS_ECHO([" tme_bus_addr_t address_bus;"])
+ AS_ECHO([" int rc;"])
+ AS_ECHO([" const tme_shared tme_uint8_t *emulator_off;"])
+ AS_ECHO([" unsigned int buffer_offset;"])
+ AS_ECHO([" tme_uint${arch}_t value;"])
+ AS_ECHO([" tme_uint32_t value32;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* we must not be replaying instructions: */"])
+ AS_ECHO([" assert (tme_sparc_recode_verify_replay_last_pc(ic) == 0);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* initialize the pointer to the rd register: */"])
+ AS_ECHO([" ls.tme_sparc_ls_rd${arch} = _rd;"])
+ AS_ECHO([""])
+ AS_ECHO(["#ifndef NDEBUG"])
+ AS_ECHO([""])
+ AS_ECHO([" /* initialize the cycle function: */"])
+ AS_ECHO([" ls.tme_sparc_ls_cycle = NULL;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* initialize the TLB entry pointer: */"])
+ AS_ECHO([" ls.tme_sparc_ls_tlb = NULL;"])
+ AS_ECHO([""])
+ AS_ECHO(["#endif /* NDEBUG */"])
+ AS_ECHO([""])
+ AS_ECHO([" /* initialize the faults: */"])
+ AS_ECHO([" ls.tme_sparc_ls_faults = TME_SPARC_LS_FAULT_NONE;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* initialize the address: */"])
+ AS_ECHO([" ls.tme_sparc_ls_address${arch} = address_first;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* initialize the size: */"])
+ AS_ECHO([" size = TME_SPARC_LSINFO_WHICH_SIZE(lsinfo);"])
+ AS_ECHO([" ls.tme_sparc_ls_size = size;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* initialize the info: */"])
+ AS_ECHO([" ls.tme_sparc_ls_lsinfo = lsinfo;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the address is not aligned: */"])
+ AS_ECHO([" if (__tme_predict_false(((size - 1) & (tme_uint32_t) address_first) != 0)) {"])
+ AS_ECHO([" ls.tme_sparc_ls_faults |= TME_SPARC_LS_FAULT_ADDRESS_NOT_ALIGNED;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, the address is aligned: */"])
+ AS_ECHO([" else {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* the transfer must not cross a 32-bit boundary: */"])
+ AS_ECHO([" assert ((size - 1) <= (tme_uint32_t) ~address_first);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* initialize the address map: */"])
+ AS_ECHO([" ls.tme_sparc_ls_address_map = ic->_tme_sparc_ls_address_map;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is a ldd, ldda, std, or stda, or an instruction"])
+ AS_ECHO([" that loads or stores in the same way: */"])
+ AS_ECHO([" if (lsinfo & TME_SPARC_LSINFO_LDD_STD) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the rd register is odd: */"])
+ AS_ECHO([" /* NB: we don't check the rd field in the instruction,"])
+ AS_ECHO([" because the register number there might be encoded"])
+ AS_ECHO([" in some way, or the architecture might ignore bit"])
+ AS_ECHO([" zero in the rd field (for example, the sparc32 lddf)."])
+ AS_ECHO([" instead, we test the rd register pointer: */"])
+ AS_ECHO([" if (__tme_predict_false((ls.tme_sparc_ls_rd${arch}"])
+ AS_ECHO([" - ic->tme_sparc_ic.tme_ic_iregs.tme_ic_iregs_uint${arch}s)"])
+ AS_ECHO([" % 2)) {"])
+ AS_ECHO([" ls.tme_sparc_ls_faults |= TME_SPARC_LS_FAULT_LDD_STD_RD_ODD;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
- $as_echo ""
- $as_echo " /* if the ASI has been specified: */"
- $as_echo " if (lsinfo & TME_SPARC_LSINFO_A) {"
- $as_echo ""
- $as_echo " /* get the ASI: */"
- $as_echo " asi = TME_SPARC_LSINFO_WHICH_ASI(lsinfo);"
- $as_echo ""
- $as_echo " /* get the flags for this ASI: */"
- $as_echo " asi_mask_flags = ic->tme_sparc_asis[[asi]].tme_sparc_asi_mask_flags;"
- $as_echo ""
+ AS_ECHO([""])
+ AS_ECHO([" /* if the ASI has been specified: */"])
+ AS_ECHO([" if (lsinfo & TME_SPARC_LSINFO_A) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the ASI: */"])
+ AS_ECHO([" asi = TME_SPARC_LSINFO_WHICH_ASI(lsinfo);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the flags for this ASI: */"])
+ AS_ECHO([" asi_mask_flags = ic->tme_sparc_asis[[asi]].tme_sparc_asi_mask_flags;"])
+ AS_ECHO([""])
if test ${arch} = 32; then
- $as_echo " /* make the ASI mask: */"
- $as_echo " if (asi_mask_flags & TME_SPARC32_ASI_MASK_FLAG_SPECIAL) {"
- $as_echo " asi_mask"
- $as_echo " = TME_SPARC_ASI_MASK_SPECIAL(asi, TRUE);"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " asi_mask = TME_SPARC32_ASI_MASK(asi, asi);"
- $as_echo " }"
+ AS_ECHO([" /* make the ASI mask: */"])
+ AS_ECHO([" if (asi_mask_flags & TME_SPARC32_ASI_MASK_FLAG_SPECIAL) {"])
+ AS_ECHO([" asi_mask"])
+ AS_ECHO([" = TME_SPARC_ASI_MASK_SPECIAL(asi, TRUE);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" asi_mask = TME_SPARC32_ASI_MASK(asi, asi);"])
+ AS_ECHO([" }"])
elif test ${arch} = 64; then
- $as_echo " /* if this is a nonprivileged access: */"
- $as_echo " if (!TME_SPARC_PRIV(ic)) {"
- $as_echo ""
- $as_echo " /* if this is a restricted ASI: */"
- $as_echo " if (__tme_predict_false((asi & TME_SPARC64_ASI_FLAG_UNRESTRICTED) == 0)) {"
- $as_echo " ls.tme_sparc_ls_faults |= TME_SPARC64_LS_FAULT_PRIVILEGED_ASI;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* force a nonprivileged access with the ASI: */"
- $as_echo " asi_mask_flags |= TME_SPARC64_ASI_MASK_FLAG_INSN_AS_IF_USER;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* make the ASI mask: */"
- $as_echo " if (asi_mask_flags & TME_SPARC64_ASI_MASK_FLAG_SPECIAL) {"
- $as_echo " asi_mask"
- $as_echo " = (asi_mask_flags"
- $as_echo " + TME_SPARC_ASI_MASK_SPECIAL(asi,"
- $as_echo " (asi_mask_flags & TME_SPARC64_ASI_MASK_FLAG_INSN_AS_IF_USER) == 0));"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " asi_mask = TME_SPARC64_ASI_MASK(asi, asi_mask_flags);"
- $as_echo " }"
+ AS_ECHO([" /* if this is a nonprivileged access: */"])
+ AS_ECHO([" if (!TME_SPARC_PRIV(ic)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is a restricted ASI: */"])
+ AS_ECHO([" if (__tme_predict_false((asi & TME_SPARC64_ASI_FLAG_UNRESTRICTED) == 0)) {"])
+ AS_ECHO([" ls.tme_sparc_ls_faults |= TME_SPARC64_LS_FAULT_PRIVILEGED_ASI;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* force a nonprivileged access with the ASI: */"])
+ AS_ECHO([" asi_mask_flags |= TME_SPARC64_ASI_MASK_FLAG_INSN_AS_IF_USER;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* make the ASI mask: */"])
+ AS_ECHO([" if (asi_mask_flags & TME_SPARC64_ASI_MASK_FLAG_SPECIAL) {"])
+ AS_ECHO([" asi_mask"])
+ AS_ECHO([" = (asi_mask_flags"])
+ AS_ECHO([" + TME_SPARC_ASI_MASK_SPECIAL(asi,"])
+ AS_ECHO([" (asi_mask_flags & TME_SPARC64_ASI_MASK_FLAG_INSN_AS_IF_USER) == 0));"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" asi_mask = TME_SPARC64_ASI_MASK(asi, asi_mask_flags);"])
+ AS_ECHO([" }"])
fi
- $as_echo " ls.tme_sparc_ls_asi_mask = asi_mask;"
+ AS_ECHO([" ls.tme_sparc_ls_asi_mask = asi_mask;"])
if test ${arch} = 64; then
- $as_echo ""
- $as_echo " /* if this is a no-fault ASI with a non-load instruction: */"
- $as_echo " if (asi_mask & TME_SPARC64_ASI_FLAG_NO_FAULT) {"
- $as_echo " if (__tme_predict_false(lsinfo & (TME_SPARC_LSINFO_OP_ST | TME_SPARC_LSINFO_OP_ATOMIC))) {"
- $as_echo " ls.tme_sparc_ls_faults |= TME_SPARC64_LS_FAULT_NO_FAULT_NON_LOAD;"
- $as_echo " }"
- $as_echo " }"
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is a no-fault ASI with a non-load instruction: */"])
+ AS_ECHO([" if (asi_mask & TME_SPARC64_ASI_FLAG_NO_FAULT) {"])
+ AS_ECHO([" if (__tme_predict_false(lsinfo & (TME_SPARC_LSINFO_OP_ST | TME_SPARC_LSINFO_OP_ATOMIC))) {"])
+ AS_ECHO([" ls.tme_sparc_ls_faults |= TME_SPARC64_LS_FAULT_NO_FAULT_NON_LOAD;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
fi
- $as_echo ""
- $as_echo " /* get the context for the alternate address space: */"
+ AS_ECHO([""])
+ AS_ECHO([" /* get the context for the alternate address space: */"])
if test ${arch} = 32; then
- $as_echo " context = ic->tme_sparc_memory_context_default;"
+ AS_ECHO([" context = ic->tme_sparc_memory_context_default;"])
elif test ${arch} = 64; then
- $as_echo " context = ic->tme_sparc_memory_context_primary;"
- $as_echo " if (asi_mask & TME_SPARC64_ASI_FLAG_SECONDARY) {"
- $as_echo " context = ic->tme_sparc_memory_context_secondary;"
- $as_echo " }"
- $as_echo " if (__tme_predict_false(asi_mask & TME_SPARC64_ASI_MASK_FLAG_INSN_NUCLEUS)) {"
- $as_echo " if (TME_SPARC_MEMORY_FLAGS(ic) & TME_SPARC_MEMORY_FLAG_HAS_NUCLEUS) {"
- $as_echo " context = 0;"
- $as_echo " }"
- $as_echo " }"
+ AS_ECHO([" context = ic->tme_sparc_memory_context_primary;"])
+ AS_ECHO([" if (asi_mask & TME_SPARC64_ASI_FLAG_SECONDARY) {"])
+ AS_ECHO([" context = ic->tme_sparc_memory_context_secondary;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" if (__tme_predict_false(asi_mask & TME_SPARC64_ASI_MASK_FLAG_INSN_NUCLEUS)) {"])
+ AS_ECHO([" if (TME_SPARC_MEMORY_FLAGS(ic) & TME_SPARC_MEMORY_FLAG_HAS_NUCLEUS) {"])
+ AS_ECHO([" context = 0;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
fi
- $as_echo " ls.tme_sparc_ls_context = context;"
- $as_echo ""
- $as_echo " /* get the default TLB entry index: */"
- $as_echo " tlb_hash = TME_SPARC_TLB_HASH(ic, context, address_first);"
- $as_echo " if (lsinfo & TME_SPARC_LSINFO_OP_FETCH) {"
- $as_echo " tlb_i = TME_SPARC_ITLB_ENTRY(ic, tlb_hash);"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " tlb_i = TME_SPARC_DTLB_ENTRY(ic, tlb_hash);"
- $as_echo " }"
- $as_echo " ls.tme_sparc_ls_tlb_i = tlb_i;"
- $as_echo ""
- $as_echo " /* call any special handler for this ASI: */"
- $as_echo " handler_i = ic->tme_sparc_asis[[TME_SPARC_ASI_MASK_WHICH(asi_mask)]].tme_sparc_asi_handler;"
- $as_echo " if (__tme_predict_false(handler_i != 0)) {"
- $as_echo " (*ic->_tme_sparc_ls_asi_handlers[[handler_i]])(ic, &ls);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* get the final TLB entry index: */"
- $as_echo " tlb_i = ls.tme_sparc_ls_tlb_i;"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* otherwise, the ASI has not been specified: */"
- $as_echo " else {"
- $as_echo ""
- $as_echo " /* get the ASI mask: */"
- $as_echo " asi_mask = ic->tme_sparc_asi_mask_data;"
- $as_echo ""
- $as_echo " /* add in any ASI mask flags from the instruction: */"
+ AS_ECHO([" ls.tme_sparc_ls_context = context;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the default TLB entry index: */"])
+ AS_ECHO([" tlb_hash = TME_SPARC_TLB_HASH(ic, context, address_first);"])
+ AS_ECHO([" if (lsinfo & TME_SPARC_LSINFO_OP_FETCH) {"])
+ AS_ECHO([" tlb_i = TME_SPARC_ITLB_ENTRY(ic, tlb_hash);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" tlb_i = TME_SPARC_DTLB_ENTRY(ic, tlb_hash);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" ls.tme_sparc_ls_tlb_i = tlb_i;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* call any special handler for this ASI: */"])
+ AS_ECHO([" handler_i = ic->tme_sparc_asis[[TME_SPARC_ASI_MASK_WHICH(asi_mask)]].tme_sparc_asi_handler;"])
+ AS_ECHO([" if (__tme_predict_false(handler_i != 0)) {"])
+ AS_ECHO([" (*ic->_tme_sparc_ls_asi_handlers[[handler_i]])(ic, &ls);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the final TLB entry index: */"])
+ AS_ECHO([" tlb_i = ls.tme_sparc_ls_tlb_i;"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, the ASI has not been specified: */"])
+ AS_ECHO([" else {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the ASI mask: */"])
+ AS_ECHO([" asi_mask = ic->tme_sparc_asi_mask_data;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* add in any ASI mask flags from the instruction: */"])
if test ${arch} = 64; then
- $as_echo " /* NB: initially, TME_SPARC64_ASI_FLAG_NO_FAULT is the"
- $as_echo " only flag allowed, and only the flush instruction"
- $as_echo " can use it: */"
+ AS_ECHO([" /* NB: initially, TME_SPARC64_ASI_FLAG_NO_FAULT is the"])
+ AS_ECHO([" only flag allowed, and only the flush instruction"])
+ AS_ECHO([" can use it: */"])
fi
- $as_echo " assert (TME_SPARC_LSINFO_WHICH_ASI_FLAGS(lsinfo) == 0"
+ AS_ECHO([" assert (TME_SPARC_LSINFO_WHICH_ASI_FLAGS(lsinfo) == 0"])
if test ${arch} = 64; then
- $as_echo " || (TME_SPARC_LSINFO_WHICH_ASI_FLAGS(lsinfo) == TME_SPARC64_ASI_FLAG_NO_FAULT"
- $as_echo " && ((ic->_tme_sparc_insn >> 19) & 0x3f) == 0x3b)"
+ AS_ECHO([" || (TME_SPARC_LSINFO_WHICH_ASI_FLAGS(lsinfo) == TME_SPARC64_ASI_FLAG_NO_FAULT"])
+ AS_ECHO([" && ((ic->_tme_sparc_insn >> 19) & 0x3f) == 0x3b)"])
fi
- $as_echo " );"
- $as_echo " asi_mask |= TME_SPARC_LSINFO_WHICH_ASI_FLAGS(lsinfo);"
- $as_echo ""
- $as_echo " /* set the ASI mask: */"
- $as_echo " ls.tme_sparc_ls_asi_mask = asi_mask;"
- $as_echo ""
- $as_echo " /* get the context: */"
- $as_echo " context = ic->tme_sparc_memory_context_default;"
- $as_echo " ls.tme_sparc_ls_context = context;"
- $as_echo ""
- $as_echo " /* this must not be a fetch: */"
- $as_echo " assert ((lsinfo & TME_SPARC_LSINFO_OP_FETCH) == 0);"
- $as_echo ""
- $as_echo " /* get the TLB entry index: */"
- $as_echo " tlb_hash = TME_SPARC_TLB_HASH(ic, context, address_first);"
- $as_echo " tlb_i = TME_SPARC_DTLB_ENTRY(ic, tlb_hash);"
- $as_echo " ls.tme_sparc_ls_tlb_i = tlb_i;"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* get the TLB entry pointer: */"
- $as_echo " tlb = &ic->tme_sparc_tlbs[[tlb_i]];"
- $as_echo " ls.tme_sparc_ls_tlb = tlb;"
-
- $as_echo ""
- $as_echo " /* get the cycle type: */"
- $as_echo " /* NB: we deliberately set this once, now, since the lsinfo"
- $as_echo " may change once we start transferring: */"
- $as_echo " cycle_type"
- $as_echo " = ((lsinfo"
- $as_echo " & (TME_SPARC_LSINFO_OP_ST"
- $as_echo " | TME_SPARC_LSINFO_OP_ATOMIC))"
- $as_echo " ? TME_BUS_CYCLE_WRITE"
- $as_echo " : TME_BUS_CYCLE_READ);"
-
- $as_echo ""
- $as_echo " /* loop until the transfer is complete: */"
- $as_echo " for (;;) {"
-
- $as_echo ""
- $as_echo " /* if we have faulted: */"
- $as_echo " if (__tme_predict_false(ls.tme_sparc_ls_faults != TME_SPARC_LS_FAULT_NONE)) {"
- $as_echo ""
- $as_echo " /* unbusy this TLB, since the trap function may not return: */"
- $as_echo " tme_bus_tlb_unbusy(&tlb->tme_sparc_tlb_bus_tlb);"
- $as_echo ""
- $as_echo " /* call the trap function, which will not return if it traps: */"
- $as_echo " (*ic->_tme_sparc_ls_trap)(ic, &ls);"
- $as_echo ""
- $as_echo " /* rebusy this TLB: */"
- $as_echo " tme_bus_tlb_busy(&tlb->tme_sparc_tlb_bus_tlb);"
- $as_echo ""
- $as_echo " /* since the trap function returned, it must have cleared the fault: */"
- $as_echo " assert (ls.tme_sparc_ls_faults == TME_SPARC_LS_FAULT_NONE);"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* if the transfer is complete, stop now: */"
- $as_echo " if (__tme_predict_false(ls.tme_sparc_ls_size == 0)) {"
- $as_echo " break;"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* get the current address: */"
- $as_echo " address = ls.tme_sparc_ls_address${arch};"
-
- $as_echo ""
- $as_echo " /* if this TLB entry does not apply or is invalid: */"
- $as_echo " if ((tlb->tme_sparc_tlb_context != ls.tme_sparc_ls_context"
- $as_echo " && tlb->tme_sparc_tlb_context <= ic->tme_sparc_memory_context_max)"
- $as_echo " || address < (tme_bus_addr${arch}_t) tlb->tme_sparc_tlb_addr_first"
- $as_echo " || address > (tme_bus_addr${arch}_t) tlb->tme_sparc_tlb_addr_last"
- $as_echo " || !TME_SPARC_TLB_ASI_MASK_OK(tlb, ls.tme_sparc_ls_asi_mask)"
- $as_echo " || ((tlb->tme_sparc_tlb_cycles_ok & cycle_type) == 0"
- $as_echo " && (cycle_type == TME_BUS_CYCLE_READ"
- $as_echo " ? tlb->tme_sparc_tlb_emulator_off_read"
- $as_echo " : tlb->tme_sparc_tlb_emulator_off_write) == TME_EMULATOR_OFF_UNDEF)"
- $as_echo " || tme_bus_tlb_is_invalid(&tlb->tme_sparc_tlb_bus_tlb)) {"
- $as_echo ""
- $as_echo " /* unbusy this TLB entry for filling: */"
- $as_echo " tme_bus_tlb_unbusy_fill(&tlb->tme_sparc_tlb_bus_tlb);"
- $as_echo ""
- $as_echo " /* if we haven't mapped this address yet: */"
- $as_echo " address_map = ls.tme_sparc_ls_address_map;"
- $as_echo " if (address_map != NULL) {"
- $as_echo " ls.tme_sparc_ls_address_map = NULL;"
- $as_echo ""
- $as_echo " /* count this mapping: */"
- $as_echo " if (ls.tme_sparc_ls_lsinfo & TME_SPARC_LSINFO_OP_FETCH) {"
- $as_echo " TME_SPARC_STAT(ic, tme_sparc_stats_itlb_map);"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " TME_SPARC_STAT(ic, tme_sparc_stats_dtlb_map);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* initialize the ASI mask and context on this TLB entry: */"
- $as_echo " /* NB that the ASI mask will likely be updated by either the"
- $as_echo " address mapping or the TLB fill: */"
- $as_echo " tlb->tme_sparc_tlb_asi_mask"
- $as_echo " = (ls.tme_sparc_ls_asi_mask"
- $as_echo " & ~TME_SPARC_ASI_MASK_FLAGS_AVAIL);"
- $as_echo " tlb->tme_sparc_tlb_context = ls.tme_sparc_ls_context;"
- $as_echo ""
- $as_echo " /* NB: if the address mapping traps, we won't get a chance"
- $as_echo " to finish updating this TLB entry, which is currently in"
- $as_echo " an inconsistent state - but not necessarily an unusable"
- $as_echo " state. poison it to be unusable, including any recode"
- $as_echo " TLB entry: */"
- $as_echo " tlb->tme_sparc_tlb_addr_first = 1;"
- $as_echo " tlb->tme_sparc_tlb_addr_last = 0;"
- $as_echo "#if TME_SPARC_HAVE_RECODE(ic)"
- $as_echo " if (ls.tme_sparc_ls_lsinfo & TME_SPARC_LSINFO_OP_FETCH) {"
- $as_echo " tme_sparc${arch}_recode_chain_tlb_update(ic, &ls);"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " tme_sparc${arch}_recode_ls_tlb_update(ic, &ls);"
- $as_echo " }"
- $as_echo "#endif /* TME_SPARC_HAVE_RECODE(ic) */"
- $as_echo ""
- $as_echo "#ifndef NDEBUG"
- $as_echo ""
- $as_echo " /* initialize the mapping TLB entry: */"
- $as_echo " ls.tme_sparc_ls_tlb_map.tme_bus_tlb_addr_first = 0 - (tme_bus_addr_t) 1;"
- $as_echo " ls.tme_sparc_ls_tlb_map.tme_bus_tlb_addr_last = 0 - (tme_bus_addr_t) 2;"
- $as_echo " ls.tme_sparc_ls_tlb_map.tme_bus_tlb_cycles_ok = 0;"
- $as_echo " ls.tme_sparc_ls_tlb_map.tme_bus_tlb_addr_offset = 0 - (tme_bus_addr_t) 1;"
- $as_echo ""
- $as_echo "#endif /* !NDEBUG */"
- $as_echo ""
- $as_echo " /* map the address: */"
- $as_echo " (*address_map)(ic, &ls);"
- $as_echo ""
- $as_echo " /* the address mapping must do any trapping itself: */"
- $as_echo " assert (ls.tme_sparc_ls_faults == TME_SPARC_LS_FAULT_NONE);"
- $as_echo ""
- $as_echo " /* if the address mapping completed the transfer: */"
- $as_echo " if (__tme_predict_false(ls.tme_sparc_ls_size == 0)) {"
- $as_echo ""
- $as_echo " /* rebusy the TLB entry: */"
- $as_echo " tme_sparc_tlb_busy(tlb);"
- $as_echo ""
- $as_echo " /* stop now: */"
- $as_echo " break;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* the mapping must have actually made a mapping: */"
- $as_echo " assert (ls.tme_sparc_ls_tlb_map.tme_bus_tlb_addr_first != 0 - (tme_bus_addr_t) 1);"
- $as_echo " assert (ls.tme_sparc_ls_tlb_map.tme_bus_tlb_addr_last != 0 - (tme_bus_addr_t) 2);"
- $as_echo " assert (ls.tme_sparc_ls_tlb_map.tme_bus_tlb_cycles_ok != 0);"
- $as_echo " assert (ls.tme_sparc_ls_tlb_map.tme_bus_tlb_addr_offset != 0 - (tme_bus_addr_t) 1);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* count this fill: */"
- $as_echo " if (ls.tme_sparc_ls_lsinfo & TME_SPARC_LSINFO_OP_FETCH) {"
- $as_echo " TME_SPARC_STAT(ic, tme_sparc_stats_itlb_fill);"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " TME_SPARC_STAT(ic, tme_sparc_stats_dtlb_fill);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* get the bus address: */"
- $as_echo " address_bus = ls.tme_sparc_ls_address${arch} + ls.tme_sparc_ls_tlb_map.tme_bus_tlb_addr_offset;"
- $as_echo ""
- $as_echo " /* fill the TLB entry: */"
- $as_echo " tme_sparc_callout_unlock(ic);"
- $as_echo " rc = (*ic->_tme_sparc_bus_connection->tme_sparc_bus_tlb_fill)"
- $as_echo " (ic->_tme_sparc_bus_connection,"
- $as_echo " tlb,"
- $as_echo " ls.tme_sparc_ls_asi_mask,"
- $as_echo " address_bus,"
- $as_echo " cycle_type);"
- $as_echo " assert (rc == TME_OK);"
- $as_echo " tme_sparc_callout_relock(ic);"
- $as_echo ""
- $as_echo " /* map the TLB entry: */"
- $as_echo " tme_bus_tlb_map(&tlb->tme_sparc_tlb_bus_tlb, address_bus,"
- $as_echo " &ls.tme_sparc_ls_tlb_map, ls.tme_sparc_ls_address${arch});"
- $as_echo ""
- $as_echo " /* update any recode TLB entry: */"
- $as_echo "#if TME_SPARC_HAVE_RECODE(ic)"
- $as_echo " if (ls.tme_sparc_ls_lsinfo & TME_SPARC_LSINFO_OP_FETCH) {"
- $as_echo " tme_sparc${arch}_recode_chain_tlb_update(ic, &ls);"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " tme_sparc${arch}_recode_ls_tlb_update(ic, &ls);"
- $as_echo " }"
- $as_echo "#endif /* TME_SPARC_HAVE_RECODE(ic) */"
- $as_echo ""
- $as_echo " /* rebusy the TLB entry: */"
- $as_echo " tme_sparc_tlb_busy(tlb);"
- $as_echo ""
- $as_echo " /* if this TLB entry is already invalid: */"
- $as_echo " if (tme_bus_tlb_is_invalid(&tlb->tme_sparc_tlb_bus_tlb)) {"
- $as_echo " continue;"
- $as_echo " }"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* this TLB entry must apply: */"
- $as_echo " assert ((tlb->tme_sparc_tlb_context == ls.tme_sparc_ls_context"
- $as_echo " || tlb->tme_sparc_tlb_context > ic->tme_sparc_memory_context_max)"
- $as_echo " && ls.tme_sparc_ls_address${arch} >= (tme_bus_addr${arch}_t) tlb->tme_sparc_tlb_addr_first"
- $as_echo " && ls.tme_sparc_ls_address${arch} <= (tme_bus_addr${arch}_t) tlb->tme_sparc_tlb_addr_last"
- $as_echo " && ((tlb->tme_sparc_tlb_cycles_ok & cycle_type)"
- $as_echo " || (cycle_type == TME_BUS_CYCLE_READ"
- $as_echo " ? tlb->tme_sparc_tlb_emulator_off_read"
- $as_echo " : tlb->tme_sparc_tlb_emulator_off_write) != TME_EMULATOR_OFF_UNDEF)"
- $as_echo " && TME_SPARC_TLB_ASI_MASK_OK(tlb, ls.tme_sparc_ls_asi_mask));"
-
- $as_echo ""
- $as_echo " /* get the current lsinfo: */"
- $as_echo " lsinfo = ls.tme_sparc_ls_lsinfo;"
-
- $as_echo ""
- $as_echo " /* if we have to check the TLB: */"
- $as_echo " if (__tme_predict_true((lsinfo & TME_SPARC_LSINFO_NO_CHECK_TLB) == 0)) {"
- $as_echo ""
- $as_echo " /* get the ASI mask for this TLB entry: */"
- $as_echo " asi_mask = tlb->tme_sparc_tlb_asi_mask;"
+ AS_ECHO([" );"])
+ AS_ECHO([" asi_mask |= TME_SPARC_LSINFO_WHICH_ASI_FLAGS(lsinfo);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* set the ASI mask: */"])
+ AS_ECHO([" ls.tme_sparc_ls_asi_mask = asi_mask;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the context: */"])
+ AS_ECHO([" context = ic->tme_sparc_memory_context_default;"])
+ AS_ECHO([" ls.tme_sparc_ls_context = context;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* this must not be a fetch: */"])
+ AS_ECHO([" assert ((lsinfo & TME_SPARC_LSINFO_OP_FETCH) == 0);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the TLB entry index: */"])
+ AS_ECHO([" tlb_hash = TME_SPARC_TLB_HASH(ic, context, address_first);"])
+ AS_ECHO([" tlb_i = TME_SPARC_DTLB_ENTRY(ic, tlb_hash);"])
+ AS_ECHO([" ls.tme_sparc_ls_tlb_i = tlb_i;"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* get the TLB entry pointer: */"])
+ AS_ECHO([" tlb = &ic->tme_sparc_tlbs[[tlb_i]];"])
+ AS_ECHO([" ls.tme_sparc_ls_tlb = tlb;"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* get the cycle type: */"])
+ AS_ECHO([" /* NB: we deliberately set this once, now, since the lsinfo"])
+ AS_ECHO([" may change once we start transferring: */"])
+ AS_ECHO([" cycle_type"])
+ AS_ECHO([" = ((lsinfo"])
+ AS_ECHO([" & (TME_SPARC_LSINFO_OP_ST"])
+ AS_ECHO([" | TME_SPARC_LSINFO_OP_ATOMIC))"])
+ AS_ECHO([" ? TME_BUS_CYCLE_WRITE"])
+ AS_ECHO([" : TME_BUS_CYCLE_READ);"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* loop until the transfer is complete: */"])
+ AS_ECHO([" for (;;) {"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* if we have faulted: */"])
+ AS_ECHO([" if (__tme_predict_false(ls.tme_sparc_ls_faults != TME_SPARC_LS_FAULT_NONE)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* unbusy this TLB, since the trap function may not return: */"])
+ AS_ECHO([" tme_bus_tlb_unbusy(&tlb->tme_sparc_tlb_bus_tlb);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* call the trap function, which will not return if it traps: */"])
+ AS_ECHO([" (*ic->_tme_sparc_ls_trap)(ic, &ls);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* rebusy this TLB: */"])
+ AS_ECHO([" tme_bus_tlb_busy(&tlb->tme_sparc_tlb_bus_tlb);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* since the trap function returned, it must have cleared the fault: */"])
+ AS_ECHO([" assert (ls.tme_sparc_ls_faults == TME_SPARC_LS_FAULT_NONE);"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* if the transfer is complete, stop now: */"])
+ AS_ECHO([" if (__tme_predict_false(ls.tme_sparc_ls_size == 0)) {"])
+ AS_ECHO([" break;"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* get the current address: */"])
+ AS_ECHO([" address = ls.tme_sparc_ls_address${arch};"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* if this TLB entry does not apply or is invalid: */"])
+ AS_ECHO([" if ((tlb->tme_sparc_tlb_context != ls.tme_sparc_ls_context"])
+ AS_ECHO([" && tlb->tme_sparc_tlb_context <= ic->tme_sparc_memory_context_max)"])
+ AS_ECHO([" || address < (tme_bus_addr${arch}_t) tlb->tme_sparc_tlb_addr_first"])
+ AS_ECHO([" || address > (tme_bus_addr${arch}_t) tlb->tme_sparc_tlb_addr_last"])
+ AS_ECHO([" || !TME_SPARC_TLB_ASI_MASK_OK(tlb, ls.tme_sparc_ls_asi_mask)"])
+ AS_ECHO([" || ((tlb->tme_sparc_tlb_cycles_ok & cycle_type) == 0"])
+ AS_ECHO([" && (cycle_type == TME_BUS_CYCLE_READ"])
+ AS_ECHO([" ? tlb->tme_sparc_tlb_emulator_off_read"])
+ AS_ECHO([" : tlb->tme_sparc_tlb_emulator_off_write) == TME_EMULATOR_OFF_UNDEF)"])
+ AS_ECHO([" || tme_bus_tlb_is_invalid(&tlb->tme_sparc_tlb_bus_tlb)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* unbusy this TLB entry for filling: */"])
+ AS_ECHO([" tme_bus_tlb_unbusy_fill(&tlb->tme_sparc_tlb_bus_tlb);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if we haven't mapped this address yet: */"])
+ AS_ECHO([" address_map = ls.tme_sparc_ls_address_map;"])
+ AS_ECHO([" if (address_map != NULL) {"])
+ AS_ECHO([" ls.tme_sparc_ls_address_map = NULL;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* count this mapping: */"])
+ AS_ECHO([" if (ls.tme_sparc_ls_lsinfo & TME_SPARC_LSINFO_OP_FETCH) {"])
+ AS_ECHO([" TME_SPARC_STAT(ic, tme_sparc_stats_itlb_map);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" TME_SPARC_STAT(ic, tme_sparc_stats_dtlb_map);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* initialize the ASI mask and context on this TLB entry: */"])
+ AS_ECHO([" /* NB that the ASI mask will likely be updated by either the"])
+ AS_ECHO([" address mapping or the TLB fill: */"])
+ AS_ECHO([" tlb->tme_sparc_tlb_asi_mask"])
+ AS_ECHO([" = (ls.tme_sparc_ls_asi_mask"])
+ AS_ECHO([" & ~TME_SPARC_ASI_MASK_FLAGS_AVAIL);"])
+ AS_ECHO([" tlb->tme_sparc_tlb_context = ls.tme_sparc_ls_context;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* NB: if the address mapping traps, we won't get a chance"])
+ AS_ECHO([" to finish updating this TLB entry, which is currently in"])
+ AS_ECHO([" an inconsistent state - but not necessarily an unusable"])
+ AS_ECHO([" state. poison it to be unusable, including any recode"])
+ AS_ECHO([" TLB entry: */"])
+ AS_ECHO([" tlb->tme_sparc_tlb_addr_first = 1;"])
+ AS_ECHO([" tlb->tme_sparc_tlb_addr_last = 0;"])
+ AS_ECHO(["#if TME_SPARC_HAVE_RECODE(ic)"])
+ AS_ECHO([" if (ls.tme_sparc_ls_lsinfo & TME_SPARC_LSINFO_OP_FETCH) {"])
+ AS_ECHO([" tme_sparc${arch}_recode_chain_tlb_update(ic, &ls);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" tme_sparc${arch}_recode_ls_tlb_update(ic, &ls);"])
+ AS_ECHO([" }"])
+ AS_ECHO(["#endif /* TME_SPARC_HAVE_RECODE(ic) */"])
+ AS_ECHO([""])
+ AS_ECHO(["#ifndef NDEBUG"])
+ AS_ECHO([""])
+ AS_ECHO([" /* initialize the mapping TLB entry: */"])
+ AS_ECHO([" ls.tme_sparc_ls_tlb_map.tme_bus_tlb_addr_first = 0 - (tme_bus_addr_t) 1;"])
+ AS_ECHO([" ls.tme_sparc_ls_tlb_map.tme_bus_tlb_addr_last = 0 - (tme_bus_addr_t) 2;"])
+ AS_ECHO([" ls.tme_sparc_ls_tlb_map.tme_bus_tlb_cycles_ok = 0;"])
+ AS_ECHO([" ls.tme_sparc_ls_tlb_map.tme_bus_tlb_addr_offset = 0 - (tme_bus_addr_t) 1;"])
+ AS_ECHO([""])
+ AS_ECHO(["#endif /* !NDEBUG */"])
+ AS_ECHO([""])
+ AS_ECHO([" /* map the address: */"])
+ AS_ECHO([" (*address_map)(ic, &ls);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* the address mapping must do any trapping itself: */"])
+ AS_ECHO([" assert (ls.tme_sparc_ls_faults == TME_SPARC_LS_FAULT_NONE);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if the address mapping completed the transfer: */"])
+ AS_ECHO([" if (__tme_predict_false(ls.tme_sparc_ls_size == 0)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* rebusy the TLB entry: */"])
+ AS_ECHO([" tme_sparc_tlb_busy(tlb);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* stop now: */"])
+ AS_ECHO([" break;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* the mapping must have actually made a mapping: */"])
+ AS_ECHO([" assert (ls.tme_sparc_ls_tlb_map.tme_bus_tlb_addr_first != 0 - (tme_bus_addr_t) 1);"])
+ AS_ECHO([" assert (ls.tme_sparc_ls_tlb_map.tme_bus_tlb_addr_last != 0 - (tme_bus_addr_t) 2);"])
+ AS_ECHO([" assert (ls.tme_sparc_ls_tlb_map.tme_bus_tlb_cycles_ok != 0);"])
+ AS_ECHO([" assert (ls.tme_sparc_ls_tlb_map.tme_bus_tlb_addr_offset != 0 - (tme_bus_addr_t) 1);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* count this fill: */"])
+ AS_ECHO([" if (ls.tme_sparc_ls_lsinfo & TME_SPARC_LSINFO_OP_FETCH) {"])
+ AS_ECHO([" TME_SPARC_STAT(ic, tme_sparc_stats_itlb_fill);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" TME_SPARC_STAT(ic, tme_sparc_stats_dtlb_fill);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the bus address: */"])
+ AS_ECHO([" address_bus = ls.tme_sparc_ls_address${arch} + ls.tme_sparc_ls_tlb_map.tme_bus_tlb_addr_offset;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* fill the TLB entry: */"])
+ AS_ECHO([" tme_sparc_callout_unlock(ic);"])
+ AS_ECHO([" rc = (*ic->_tme_sparc_bus_connection->tme_sparc_bus_tlb_fill)"])
+ AS_ECHO([" (ic->_tme_sparc_bus_connection,"])
+ AS_ECHO([" tlb,"])
+ AS_ECHO([" ls.tme_sparc_ls_asi_mask,"])
+ AS_ECHO([" address_bus,"])
+ AS_ECHO([" cycle_type);"])
+ AS_ECHO([" assert (rc == TME_OK);"])
+ AS_ECHO([" tme_sparc_callout_relock(ic);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* map the TLB entry: */"])
+ AS_ECHO([" tme_bus_tlb_map(&tlb->tme_sparc_tlb_bus_tlb, address_bus,"])
+ AS_ECHO([" &ls.tme_sparc_ls_tlb_map, ls.tme_sparc_ls_address${arch});"])
+ AS_ECHO([""])
+ AS_ECHO([" /* update any recode TLB entry: */"])
+ AS_ECHO(["#if TME_SPARC_HAVE_RECODE(ic)"])
+ AS_ECHO([" if (ls.tme_sparc_ls_lsinfo & TME_SPARC_LSINFO_OP_FETCH) {"])
+ AS_ECHO([" tme_sparc${arch}_recode_chain_tlb_update(ic, &ls);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" tme_sparc${arch}_recode_ls_tlb_update(ic, &ls);"])
+ AS_ECHO([" }"])
+ AS_ECHO(["#endif /* TME_SPARC_HAVE_RECODE(ic) */"])
+ AS_ECHO([""])
+ AS_ECHO([" /* rebusy the TLB entry: */"])
+ AS_ECHO([" tme_sparc_tlb_busy(tlb);"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this TLB entry is already invalid: */"])
+ AS_ECHO([" if (tme_bus_tlb_is_invalid(&tlb->tme_sparc_tlb_bus_tlb)) {"])
+ AS_ECHO([" continue;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* this TLB entry must apply: */"])
+ AS_ECHO([" assert ((tlb->tme_sparc_tlb_context == ls.tme_sparc_ls_context"])
+ AS_ECHO([" || tlb->tme_sparc_tlb_context > ic->tme_sparc_memory_context_max)"])
+ AS_ECHO([" && ls.tme_sparc_ls_address${arch} >= (tme_bus_addr${arch}_t) tlb->tme_sparc_tlb_addr_first"])
+ AS_ECHO([" && ls.tme_sparc_ls_address${arch} <= (tme_bus_addr${arch}_t) tlb->tme_sparc_tlb_addr_last"])
+ AS_ECHO([" && ((tlb->tme_sparc_tlb_cycles_ok & cycle_type)"])
+ AS_ECHO([" || (cycle_type == TME_BUS_CYCLE_READ"])
+ AS_ECHO([" ? tlb->tme_sparc_tlb_emulator_off_read"])
+ AS_ECHO([" : tlb->tme_sparc_tlb_emulator_off_write) != TME_EMULATOR_OFF_UNDEF)"])
+ AS_ECHO([" && TME_SPARC_TLB_ASI_MASK_OK(tlb, ls.tme_sparc_ls_asi_mask));"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* get the current lsinfo: */"])
+ AS_ECHO([" lsinfo = ls.tme_sparc_ls_lsinfo;"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* if we have to check the TLB: */"])
+ AS_ECHO([" if (__tme_predict_true((lsinfo & TME_SPARC_LSINFO_NO_CHECK_TLB) == 0)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* get the ASI mask for this TLB entry: */"])
+ AS_ECHO([" asi_mask = tlb->tme_sparc_tlb_asi_mask;"])
if test ${arch} = 64; then
- $as_echo ""
- $as_echo " /* if this TLB entry is for no-fault accesses only: */"
- $as_echo " if (__tme_predict_false(asi_mask & TME_SPARC64_ASI_FLAG_NO_FAULT)) {"
- $as_echo ""
- $as_echo " /* if this access is not using a no-fault ASI: */"
- $as_echo " if (__tme_predict_false((ls.tme_sparc_ls_asi_mask & TME_SPARC64_ASI_FLAG_NO_FAULT) == 0)) {"
- $as_echo " ls.tme_sparc_ls_faults |= TME_SPARC64_LS_FAULT_NO_FAULT_FAULT;"
- $as_echo " continue;"
- $as_echo " }"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* if this TLB entry is for addresses with side effects: */"
- $as_echo " if (asi_mask & TME_SPARC64_ASI_MASK_FLAG_TLB_SIDE_EFFECTS) {"
- $as_echo ""
- $as_echo " /* if this access is using a no-fault ASI: */"
- $as_echo " /* NB: a flush may be implemented as a load with a no-fault ASI: */"
- $as_echo " if (__tme_predict_false(ls.tme_sparc_ls_asi_mask & TME_SPARC64_ASI_FLAG_NO_FAULT)) {"
- $as_echo " ls.tme_sparc_ls_faults |= TME_SPARC64_LS_FAULT_SIDE_EFFECTS;"
- $as_echo " continue;"
- $as_echo " }"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* if this TLB entry is for uncacheable addresses: */"
- $as_echo " if (asi_mask & TME_SPARC64_ASI_MASK_FLAG_TLB_UNCACHEABLE) {"
- $as_echo ""
- $as_echo " /* if this is an atomic access: */"
- $as_echo " if (__tme_predict_false(lsinfo & TME_SPARC_LSINFO_OP_ATOMIC)) {"
- $as_echo " ls.tme_sparc_ls_faults |= TME_SPARC64_LS_FAULT_UNCACHEABLE;"
- $as_echo " continue;"
- $as_echo " }"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* see if this is a little-endian instruction: */"
- $as_echo " lsinfo"
- $as_echo " = ((lsinfo"
- $as_echo " & ~TME_SPARC_LSINFO_ENDIAN_LITTLE)"
- $as_echo " + ((ls.tme_sparc_ls_asi_mask"
- $as_echo " & TME_SPARC64_ASI_FLAG_LITTLE)"
- $as_echo "#if TME_SPARC_LSINFO_ENDIAN_LITTLE < TME_SPARC64_ASI_FLAG_LITTLE"
- $as_echo "#error \"TME_SPARC_LSINFO_ENDIAN_ values changed\""
- $as_echo "#endif"
- $as_echo " * (TME_SPARC_LSINFO_ENDIAN_LITTLE"
- $as_echo " / TME_SPARC64_ASI_FLAG_LITTLE)));"
- $as_echo ""
- $as_echo " /* if this TLB entry has its little-endian bit set: */"
- $as_echo " if (__tme_predict_false(asi_mask & TME_SPARC64_ASI_FLAG_LITTLE)) {"
- $as_echo " assert (TME_SPARC_MEMORY_FLAGS(ic) & TME_SPARC_MEMORY_FLAG_HAS_INVERT_ENDIAN);"
- $as_echo " if (TRUE) {"
- $as_echo " lsinfo ^= TME_SPARC_LSINFO_ENDIAN_LITTLE;"
- $as_echo " }"
- $as_echo " }"
+ AS_ECHO([""])
+ AS_ECHO([" /* if this TLB entry is for no-fault accesses only: */"])
+ AS_ECHO([" if (__tme_predict_false(asi_mask & TME_SPARC64_ASI_FLAG_NO_FAULT)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this access is not using a no-fault ASI: */"])
+ AS_ECHO([" if (__tme_predict_false((ls.tme_sparc_ls_asi_mask & TME_SPARC64_ASI_FLAG_NO_FAULT) == 0)) {"])
+ AS_ECHO([" ls.tme_sparc_ls_faults |= TME_SPARC64_LS_FAULT_NO_FAULT_FAULT;"])
+ AS_ECHO([" continue;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this TLB entry is for addresses with side effects: */"])
+ AS_ECHO([" if (asi_mask & TME_SPARC64_ASI_MASK_FLAG_TLB_SIDE_EFFECTS) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this access is using a no-fault ASI: */"])
+ AS_ECHO([" /* NB: a flush may be implemented as a load with a no-fault ASI: */"])
+ AS_ECHO([" if (__tme_predict_false(ls.tme_sparc_ls_asi_mask & TME_SPARC64_ASI_FLAG_NO_FAULT)) {"])
+ AS_ECHO([" ls.tme_sparc_ls_faults |= TME_SPARC64_LS_FAULT_SIDE_EFFECTS;"])
+ AS_ECHO([" continue;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this TLB entry is for uncacheable addresses: */"])
+ AS_ECHO([" if (asi_mask & TME_SPARC64_ASI_MASK_FLAG_TLB_UNCACHEABLE) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is an atomic access: */"])
+ AS_ECHO([" if (__tme_predict_false(lsinfo & TME_SPARC_LSINFO_OP_ATOMIC)) {"])
+ AS_ECHO([" ls.tme_sparc_ls_faults |= TME_SPARC64_LS_FAULT_UNCACHEABLE;"])
+ AS_ECHO([" continue;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* see if this is a little-endian instruction: */"])
+ AS_ECHO([" lsinfo"])
+ AS_ECHO([" = ((lsinfo"])
+ AS_ECHO([" & ~TME_SPARC_LSINFO_ENDIAN_LITTLE)"])
+ AS_ECHO([" + ((ls.tme_sparc_ls_asi_mask"])
+ AS_ECHO([" & TME_SPARC64_ASI_FLAG_LITTLE)"])
+ AS_ECHO(["#if TME_SPARC_LSINFO_ENDIAN_LITTLE < TME_SPARC64_ASI_FLAG_LITTLE"])
+ AS_ECHO(["#error \"TME_SPARC_LSINFO_ENDIAN_ values changed\""])
+ AS_ECHO(["#endif"])
+ AS_ECHO([" * (TME_SPARC_LSINFO_ENDIAN_LITTLE"])
+ AS_ECHO([" / TME_SPARC64_ASI_FLAG_LITTLE)));"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this TLB entry has its little-endian bit set: */"])
+ AS_ECHO([" if (__tme_predict_false(asi_mask & TME_SPARC64_ASI_FLAG_LITTLE)) {"])
+ AS_ECHO([" assert (TME_SPARC_MEMORY_FLAGS(ic) & TME_SPARC_MEMORY_FLAG_HAS_INVERT_ENDIAN);"])
+ AS_ECHO([" if (TRUE) {"])
+ AS_ECHO([" lsinfo ^= TME_SPARC_LSINFO_ENDIAN_LITTLE;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
fi
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* if we might not have to call a slow cycle function: */"
- $as_echo " if (__tme_predict_true((lsinfo & TME_SPARC_LSINFO_SLOW_CYCLES) == 0)) {"
- $as_echo ""
- $as_echo " /* if this TLB entry allows fast transfer of all of the addresses: */"
- $as_echo " if (__tme_predict_true(((tme_bus_addr${arch}_t) tlb->tme_sparc_tlb_addr_last) >= (address_first + (ls.tme_sparc_ls_size - 1)))) {"
- $as_echo " emulator_off = tlb->tme_sparc_tlb_emulator_off_read;"
- $as_echo " if (lsinfo & TME_SPARC_LSINFO_OP_ST) {"
- $as_echo " emulator_off = tlb->tme_sparc_tlb_emulator_off_write;"
- $as_echo " }"
- $as_echo " if (__tme_predict_true(emulator_off != TME_EMULATOR_OFF_UNDEF"
- $as_echo " && (((lsinfo & TME_SPARC_LSINFO_OP_ATOMIC) == 0)"
- $as_echo " || emulator_off == tlb->tme_sparc_tlb_emulator_off_write))) {"
- $as_echo ""
- $as_echo " /* return and let our caller do the transfer: */"
- $as_echo " /* NB: we break const here: */"
- $as_echo " return ((tme_shared tme_uint8_t *) emulator_off);"
- $as_echo " }"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* we have to call a slow cycle function: */"
- $as_echo " lsinfo |= TME_SPARC_LSINFO_SLOW_CYCLES;"
- $as_echo " assert (ls.tme_sparc_ls_cycle == NULL);"
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* if we might not have to call a slow cycle function: */"])
+ AS_ECHO([" if (__tme_predict_true((lsinfo & TME_SPARC_LSINFO_SLOW_CYCLES) == 0)) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this TLB entry allows fast transfer of all of the addresses: */"])
+ AS_ECHO([" if (__tme_predict_true(((tme_bus_addr${arch}_t) tlb->tme_sparc_tlb_addr_last) >= (address_first + (ls.tme_sparc_ls_size - 1)))) {"])
+ AS_ECHO([" emulator_off = tlb->tme_sparc_tlb_emulator_off_read;"])
+ AS_ECHO([" if (lsinfo & TME_SPARC_LSINFO_OP_ST) {"])
+ AS_ECHO([" emulator_off = tlb->tme_sparc_tlb_emulator_off_write;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" if (__tme_predict_true(emulator_off != TME_EMULATOR_OFF_UNDEF"])
+ AS_ECHO([" && (((lsinfo & TME_SPARC_LSINFO_OP_ATOMIC) == 0)"])
+ AS_ECHO([" || emulator_off == tlb->tme_sparc_tlb_emulator_off_write))) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* return and let our caller do the transfer: */"])
+ AS_ECHO([" /* NB: we break const here: */"])
+ AS_ECHO([" return ((tme_shared tme_uint8_t *) emulator_off);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* we have to call a slow cycle function: */"])
+ AS_ECHO([" lsinfo |= TME_SPARC_LSINFO_SLOW_CYCLES;"])
+ AS_ECHO([" assert (ls.tme_sparc_ls_cycle == NULL);"])
if test ${arch} = 32; then
endian_little="FALSE"
else
endian_little="(lsinfo & TME_SPARC_LSINFO_ENDIAN_LITTLE)"
fi
- $as_echo ""
- $as_echo " /* assume that this operation will transfer the start of the buffer: */"
- $as_echo " buffer_offset = 0;"
- $as_echo ""
- $as_echo " /* assume that this is a load or a fetch: */"
- $as_echo " ls.tme_sparc_ls_cycle = tme_sparc${arch}_load;"
- $as_echo ""
- $as_echo " /* if this is a store: */"
- $as_echo " if (lsinfo & TME_SPARC_LSINFO_OP_ST) {"
- $as_echo ""
- $as_echo " /* put the (first) register to store in the memory buffer: */"
- $as_echo " value = TME_SPARC_FORMAT3_RD;"
- $as_echo " value = (${endian_little} ? tme_htole_u${arch}(value) : tme_htobe_u${arch}(value));"
- $as_echo " ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer${arch}s[[0]] = value;"
- $as_echo ""
- $as_echo " /* find the offset in the memory buffer corresponding to the"
- $as_echo " first address: */"
- $as_echo " buffer_offset = sizeof(tme_uint${arch}_t) - ls.tme_sparc_ls_size;"
- $as_echo " if (${endian_little}) {"
- $as_echo " buffer_offset = 0;"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* if this is a std or stda: */"
- $as_echo " if (lsinfo & TME_SPARC_LSINFO_LDD_STD) {"
- $as_echo ""
- $as_echo " /* put the odd 32-bit register to store in the memory buffer"
- $as_echo " after the even 32-bit register. exactly where this is depends"
- $as_echo " on the architecture and on the byte order of the store: */"
- $as_echo " value32 = TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch});"
- $as_echo " if (${endian_little}) {"
- $as_echo " value32 = tme_htole_u32(value32);"
- $as_echo " ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer32s[[1]] = value32;"
- $as_echo " buffer_offset = 0;"
- $as_echo " }"
- $as_echo " else {"
- $as_echo " value32 = tme_htobe_u32(value32);"
- $as_echo " ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer32s[[(${arch} / 32)]] = value32;"
- $as_echo " buffer_offset = sizeof(tme_uint${arch}_t) - sizeof(tme_uint32_t);"
- $as_echo " }"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* set the cycle function: */"
- $as_echo " ls.tme_sparc_ls_cycle = tme_sparc${arch}_store;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, if this is an atomic: */"
- $as_echo " else if (lsinfo & TME_SPARC_LSINFO_OP_ATOMIC) {"
- $as_echo ""
- $as_echo " /* set the cycle function: */"
- $as_echo " ls.tme_sparc_ls_cycle = tme_sparc${arch}_atomic;"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* set the buffer offset for the (first) slow cycle: */"
- $as_echo " ls.tme_sparc_ls_buffer_offset = buffer_offset;"
- $as_echo ""
- $as_echo " /* clear the state for this operation: */"
- $as_echo " ls.tme_sparc_ls_state = 0;"
- $as_echo " }"
-
- $as_echo ""
- $as_echo " /* assume that we won't have to check the TLB again: */"
- $as_echo " ls.tme_sparc_ls_lsinfo = lsinfo | TME_SPARC_LSINFO_NO_CHECK_TLB;"
-
- $as_echo " /* call the slow cycle function: */"
- $as_echo " (*ls.tme_sparc_ls_cycle)(ic, &ls);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* if this was a load that has already completed, a store,"
- $as_echo " or an atomic, make sure our caller doesn't try to complete"
- $as_echo " a fast transfer: */"
- $as_echo " if (ls.tme_sparc_ls_lsinfo"
- $as_echo " & (TME_SPARC_LSINFO_LD_COMPLETED"
- $as_echo " | TME_SPARC_LSINFO_OP_ST"
- $as_echo " | TME_SPARC_LSINFO_OP_ATOMIC)) {"
- $as_echo " return (TME_EMULATOR_OFF_UNDEF);"
- $as_echo " }"
- $as_echo ""
- $as_echo " /* otherwise, this was a load that did slow cycles into the"
- $as_echo " memory buffer and hasn't updated rd yet. return a pointer"
- $as_echo " to the memory buffer so our caller can complete the load: */"
- $as_echo " return (ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer8s"
- $as_echo " - address_first);"
- $as_echo "}"
+ AS_ECHO([""])
+ AS_ECHO([" /* assume that this operation will transfer the start of the buffer: */"])
+ AS_ECHO([" buffer_offset = 0;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* assume that this is a load or a fetch: */"])
+ AS_ECHO([" ls.tme_sparc_ls_cycle = tme_sparc${arch}_load;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is a store: */"])
+ AS_ECHO([" if (lsinfo & TME_SPARC_LSINFO_OP_ST) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* put the (first) register to store in the memory buffer: */"])
+ AS_ECHO([" value = TME_SPARC_FORMAT3_RD;"])
+ AS_ECHO([" value = (${endian_little} ? tme_htole_u${arch}(value) : tme_htobe_u${arch}(value));"])
+ AS_ECHO([" ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer${arch}s[[0]] = value;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* find the offset in the memory buffer corresponding to the"])
+ AS_ECHO([" first address: */"])
+ AS_ECHO([" buffer_offset = sizeof(tme_uint${arch}_t) - ls.tme_sparc_ls_size;"])
+ AS_ECHO([" if (${endian_little}) {"])
+ AS_ECHO([" buffer_offset = 0;"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* if this is a std or stda: */"])
+ AS_ECHO([" if (lsinfo & TME_SPARC_LSINFO_LDD_STD) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* put the odd 32-bit register to store in the memory buffer"])
+ AS_ECHO([" after the even 32-bit register. exactly where this is depends"])
+ AS_ECHO([" on the architecture and on the byte order of the store: */"])
+ AS_ECHO([" value32 = TME_SPARC_FORMAT3_RD_ODD(tme_ic_ireg_uint${arch});"])
+ AS_ECHO([" if (${endian_little}) {"])
+ AS_ECHO([" value32 = tme_htole_u32(value32);"])
+ AS_ECHO([" ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer32s[[1]] = value32;"])
+ AS_ECHO([" buffer_offset = 0;"])
+ AS_ECHO([" }"])
+ AS_ECHO([" else {"])
+ AS_ECHO([" value32 = tme_htobe_u32(value32);"])
+ AS_ECHO([" ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer32s[[(${arch} / 32)]] = value32;"])
+ AS_ECHO([" buffer_offset = sizeof(tme_uint${arch}_t) - sizeof(tme_uint32_t);"])
+ AS_ECHO([" }"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* set the cycle function: */"])
+ AS_ECHO([" ls.tme_sparc_ls_cycle = tme_sparc${arch}_store;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, if this is an atomic: */"])
+ AS_ECHO([" else if (lsinfo & TME_SPARC_LSINFO_OP_ATOMIC) {"])
+ AS_ECHO([""])
+ AS_ECHO([" /* set the cycle function: */"])
+ AS_ECHO([" ls.tme_sparc_ls_cycle = tme_sparc${arch}_atomic;"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* set the buffer offset for the (first) slow cycle: */"])
+ AS_ECHO([" ls.tme_sparc_ls_buffer_offset = buffer_offset;"])
+ AS_ECHO([""])
+ AS_ECHO([" /* clear the state for this operation: */"])
+ AS_ECHO([" ls.tme_sparc_ls_state = 0;"])
+ AS_ECHO([" }"])
+
+ AS_ECHO([""])
+ AS_ECHO([" /* assume that we won't have to check the TLB again: */"])
+ AS_ECHO([" ls.tme_sparc_ls_lsinfo = lsinfo | TME_SPARC_LSINFO_NO_CHECK_TLB;"])
+
+ AS_ECHO([" /* call the slow cycle function: */"])
+ AS_ECHO([" (*ls.tme_sparc_ls_cycle)(ic, &ls);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* if this was a load that has already completed, a store,"])
+ AS_ECHO([" or an atomic, make sure our caller doesn't try to complete"])
+ AS_ECHO([" a fast transfer: */"])
+ AS_ECHO([" if (ls.tme_sparc_ls_lsinfo"])
+ AS_ECHO([" & (TME_SPARC_LSINFO_LD_COMPLETED"])
+ AS_ECHO([" | TME_SPARC_LSINFO_OP_ST"])
+ AS_ECHO([" | TME_SPARC_LSINFO_OP_ATOMIC)) {"])
+ AS_ECHO([" return (TME_EMULATOR_OFF_UNDEF);"])
+ AS_ECHO([" }"])
+ AS_ECHO([""])
+ AS_ECHO([" /* otherwise, this was a load that did slow cycles into the"])
+ AS_ECHO([" memory buffer and hasn't updated rd yet. return a pointer"])
+ AS_ECHO([" to the memory buffer so our caller can complete the load: */"])
+ AS_ECHO([" return (ic->tme_sparc_memory_buffer.tme_sparc_memory_buffer8s"])
+ AS_ECHO([" - address_first);"])
+ AS_ECHO(["}"])
fi
# unfix the architecture version:
#
if $header; then :; else
- $as_echo ""
- $as_echo "#undef TME_SPARC_VERSION"
- $as_echo "#define TME_SPARC_VERSION(ic) _TME_SPARC_VERSION(ic)"
+ AS_ECHO([""])
+ AS_ECHO(["#undef TME_SPARC_VERSION"])
+ AS_ECHO(["#define TME_SPARC_VERSION(ic) _TME_SPARC_VERSION(ic)"])
fi
# the sparc64 support depends on a 64-bit integer type:
#
if test ${arch} = 64; then
- $as_echo ""
- $as_echo "#endif /* TME_HAVE_INT64_T */"
+ AS_ECHO([""])
+ AS_ECHO(["#endif /* TME_HAVE_INT64_T */"])
fi
done
diff --git a/ic/sparc/sparc-misc-auto.m4 b/ic/sparc/sparc-misc-auto.m4
index f439705..e5720a5 100644
--- a/ic/sparc/sparc-misc-auto.m4
+++ b/ic/sparc/sparc-misc-auto.m4
@@ -53,15 +53,15 @@ EOF
# emit the register mapping macros:
if $header; then
- $as_echo ""
- $as_echo "/* the register mapping: */"
- $as_echo "#define TME_SPARC_IREG_UNDEF (-1)"
+ AS_ECHO([""])
+ AS_ECHO(["/* the register mapping: */"])
+ AS_ECHO(["#define TME_SPARC_IREG_UNDEF (-1)"])
ireg_next=0
# all integer registers start from register number zero:
#
for regnum in 0 1 2 3 4 5 6 7; do
- $as_echo "#define TME_SPARC_IREG_G${regnum} (${ireg_next})"
+ AS_ECHO(["#define TME_SPARC_IREG_G${regnum} (${ireg_next})"])
ireg_next=`expr ${ireg_next} + 1`
done
@@ -72,33 +72,33 @@ if $header; then
# the sparc64 alternate, MMU, and interrupt globals:
#
- $as_echo "#define TME_SPARC64_IREG_AG_G0 (${ireg_base} + ${ireg_next} + (8 * 0))"
- $as_echo "#define TME_SPARC64_IREG_MG_G0 (${ireg_base} + ${ireg_next} + (8 * 1))"
- $as_echo "#define TME_SPARC64_IREG_IG_G0 (${ireg_base} + ${ireg_next} + (8 * 2))"
+ AS_ECHO(["#define TME_SPARC64_IREG_AG_G0 (${ireg_base} + ${ireg_next} + (8 * 0))"])
+ AS_ECHO(["#define TME_SPARC64_IREG_MG_G0 (${ireg_base} + ${ireg_next} + (8 * 1))"])
+ AS_ECHO(["#define TME_SPARC64_IREG_IG_G0 (${ireg_base} + ${ireg_next} + (8 * 2))"])
ireg_next=`expr ${ireg_next} + 24`
# the current, next, and next-next program counter:
#
- $as_echo "#define TME_SPARC_IREG_PC (${ireg_base} + ${ireg_next})"
+ AS_ECHO(["#define TME_SPARC_IREG_PC (${ireg_base} + ${ireg_next})"])
ireg_next=`expr ${ireg_next} + 1`
- $as_echo "#define TME_SPARC_IREG_PC_NEXT (${ireg_base} + ${ireg_next})"
+ AS_ECHO(["#define TME_SPARC_IREG_PC_NEXT (${ireg_base} + ${ireg_next})"])
ireg_next=`expr ${ireg_next} + 1`
- $as_echo "#define TME_SPARC_IREG_PC_NEXT_NEXT (${ireg_base} + ${ireg_next})"
+ AS_ECHO(["#define TME_SPARC_IREG_PC_NEXT_NEXT (${ireg_base} + ${ireg_next})"])
ireg_next=`expr ${ireg_next} + 1`
# the instruction register:
#
- $as_echo "#define TME_SPARC_IREG_INSN (${ireg_base} + ${ireg_next})"
+ AS_ECHO(["#define TME_SPARC_IREG_INSN (${ireg_base} + ${ireg_next})"])
ireg_next=`expr ${ireg_next} + 1`
# some temporary registers:
#
- $as_echo "#define TME_SPARC_IREG_TMP(x) (${ireg_base} + ${ireg_next} + (x))"
+ AS_ECHO(["#define TME_SPARC_IREG_TMP(x) (${ireg_base} + ${ireg_next} + (x))"])
ireg_next=`expr ${ireg_next} + 3`
# the Y multiply/divide register:
#
- $as_echo "#define TME_SPARC_IREG_Y (${ireg_base} + ${ireg_next})"
+ AS_ECHO(["#define TME_SPARC_IREG_Y (${ireg_base} + ${ireg_next})"])
ireg_next=`expr ${ireg_next} + 1`
# the floating-point transfer registers. since these are often
@@ -107,87 +107,87 @@ if $header; then
# assume that ${ireg_base} is aligned to at least four:
#
while test `expr ${ireg_next} % 4` != 0; do ireg_next=`expr ${ireg_next} + 1`; done
- $as_echo "#define TME_SPARC_IREG_FPX (${ireg_base} + ${ireg_next})"
+ AS_ECHO(["#define TME_SPARC_IREG_FPX (${ireg_base} + ${ireg_next})"])
ireg_next=`expr ${ireg_next} + 4`
# the sparc32 PSR, and the sparc64 PSTATE:
#
- $as_echo "#define TME_SPARC32_IREG_PSR (${ireg_base} + ${ireg_next})"
- $as_echo "#define tme_sparc32_ireg_psr tme_sparc_ireg_uint32(TME_SPARC32_IREG_PSR)"
- $as_echo "#define tme_sparc64_ireg_pstate tme_sparc_ireg_uint32((${ireg_base} + ${ireg_next}) << 1)"
+ AS_ECHO(["#define TME_SPARC32_IREG_PSR (${ireg_base} + ${ireg_next})"])
+ AS_ECHO(["#define tme_sparc32_ireg_psr tme_sparc_ireg_uint32(TME_SPARC32_IREG_PSR)"])
+ AS_ECHO(["#define tme_sparc64_ireg_pstate tme_sparc_ireg_uint32((${ireg_base} + ${ireg_next}) << 1)"])
ireg_next=`expr ${ireg_next} + 1`
# the sparc32 WIM, and the common sparc64 register-window state registers:
#
- $as_echo "#define tme_sparc32_ireg_wim tme_sparc_ireg_uint32(${ireg_base} + ${ireg_next})"
- $as_echo "#define tme_sparc64_ireg_winstates tme_sparc_ireg_uint32(((${ireg_base} + ${ireg_next}) << 1) + 0)"
- $as_echo "#define TME_SPARC64_WINSTATES_CWP(x) (((x) & 0x3f) << (8 * 0))"
- $as_echo "#define tme_sparc64_ireg_cwp tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 0)"
- $as_echo "#define TME_SPARC64_WINSTATES_CANRESTORE(x) (((x) & 0x3f) << (8 * 1))"
- $as_echo "#define tme_sparc64_ireg_canrestore tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 1)"
- $as_echo "#define TME_SPARC64_WINSTATES_CANSAVE(x) (((x) & 0x3f) << (8 * 2))"
- $as_echo "#define tme_sparc64_ireg_cansave tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 2)"
- $as_echo "#define TME_SPARC64_WINSTATES_OTHERWIN(x) (((x) & 0x3f) << (8 * 3))"
- $as_echo "#define tme_sparc64_ireg_otherwin tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 3)"
- $as_echo "#define tme_sparc64_ireg_winstates_mask tme_sparc_ireg_uint32(((${ireg_base} + ${ireg_next}) << 1) + 1)"
+ AS_ECHO(["#define tme_sparc32_ireg_wim tme_sparc_ireg_uint32(${ireg_base} + ${ireg_next})"])
+ AS_ECHO(["#define tme_sparc64_ireg_winstates tme_sparc_ireg_uint32(((${ireg_base} + ${ireg_next}) << 1) + 0)"])
+ AS_ECHO(["#define TME_SPARC64_WINSTATES_CWP(x) (((x) & 0x3f) << (8 * 0))"])
+ AS_ECHO(["#define tme_sparc64_ireg_cwp tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 0)"])
+ AS_ECHO(["#define TME_SPARC64_WINSTATES_CANRESTORE(x) (((x) & 0x3f) << (8 * 1))"])
+ AS_ECHO(["#define tme_sparc64_ireg_canrestore tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 1)"])
+ AS_ECHO(["#define TME_SPARC64_WINSTATES_CANSAVE(x) (((x) & 0x3f) << (8 * 2))"])
+ AS_ECHO(["#define tme_sparc64_ireg_cansave tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 2)"])
+ AS_ECHO(["#define TME_SPARC64_WINSTATES_OTHERWIN(x) (((x) & 0x3f) << (8 * 3))"])
+ AS_ECHO(["#define tme_sparc64_ireg_otherwin tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 3)"])
+ AS_ECHO(["#define tme_sparc64_ireg_winstates_mask tme_sparc_ireg_uint32(((${ireg_base} + ${ireg_next}) << 1) + 1)"])
ireg_next=`expr ${ireg_next} + 1`
# the sparc32 TBR register, and the sparc64 TBA register:
#
- $as_echo "#define tme_sparc32_ireg_tbr tme_sparc_ireg_uint32(${ireg_base} + ${ireg_next})"
- $as_echo "#define tme_sparc64_ireg_tba tme_sparc_ireg_uint64(${ireg_base} + ${ireg_next})"
+ AS_ECHO(["#define tme_sparc32_ireg_tbr tme_sparc_ireg_uint32(${ireg_base} + ${ireg_next})"])
+ AS_ECHO(["#define tme_sparc64_ireg_tba tme_sparc_ireg_uint64(${ireg_base} + ${ireg_next})"])
ireg_next=`expr ${ireg_next} + 1`
# the sparc64 trap PC, NPC, state, and type registers:
#
- $as_echo "#define tme_sparc64_ireg_tpc(tl) tme_sparc_ireg_uint64(${ireg_base} + (TME_SPARC_TL_MAX * 0) + ${ireg_next} + ((tl) - 1))"
- $as_echo "#define tme_sparc64_ireg_tnpc(tl) tme_sparc_ireg_uint64(${ireg_base} + (TME_SPARC_TL_MAX * 1) + ${ireg_next} + ((tl) - 1))"
- $as_echo "#define TME_SPARC64_IREG_TSTATE(tl) (${ireg_base} + (TME_SPARC_TL_MAX * 2) + ${ireg_next} + ((tl) - 1))"
- $as_echo "#define tme_sparc64_ireg_tstate(tl) tme_sparc_ireg_uint64(TME_SPARC64_IREG_TSTATE(tl))"
- $as_echo "#define tme_sparc64_ireg_tstate_ccr(tl) tme_sparc_ireg_uint8((TME_SPARC64_IREG_TSTATE(tl) << 3) + sizeof(tme_uint32_t))"
- $as_echo "#if TME_SPARC_TL_MAX > 8"
- $as_echo "#error \"TME_SPARC_TL_MAX changed\""
- $as_echo "#endif"
- $as_echo "#define tme_sparc64_ireg_tt(tl) tme_sparc_ireg_uint8(((${ireg_base} + (TME_SPARC_TL_MAX * 3) + ${ireg_next}) << 3) + ((tl) - 1))"
+ AS_ECHO(["#define tme_sparc64_ireg_tpc(tl) tme_sparc_ireg_uint64(${ireg_base} + (TME_SPARC_TL_MAX * 0) + ${ireg_next} + ((tl) - 1))"])
+ AS_ECHO(["#define tme_sparc64_ireg_tnpc(tl) tme_sparc_ireg_uint64(${ireg_base} + (TME_SPARC_TL_MAX * 1) + ${ireg_next} + ((tl) - 1))"])
+ AS_ECHO(["#define TME_SPARC64_IREG_TSTATE(tl) (${ireg_base} + (TME_SPARC_TL_MAX * 2) + ${ireg_next} + ((tl) - 1))"])
+ AS_ECHO(["#define tme_sparc64_ireg_tstate(tl) tme_sparc_ireg_uint64(TME_SPARC64_IREG_TSTATE(tl))"])
+ AS_ECHO(["#define tme_sparc64_ireg_tstate_ccr(tl) tme_sparc_ireg_uint8((TME_SPARC64_IREG_TSTATE(tl) << 3) + sizeof(tme_uint32_t))"])
+ AS_ECHO(["#if TME_SPARC_TL_MAX > 8"])
+ AS_ECHO(["#error \"TME_SPARC_TL_MAX changed\""])
+ AS_ECHO(["#endif"])
+ AS_ECHO(["#define tme_sparc64_ireg_tt(tl) tme_sparc_ireg_uint8(((${ireg_base} + (TME_SPARC_TL_MAX * 3) + ${ireg_next}) << 3) + ((tl) - 1))"])
ireg_base="(${ireg_base} + (TME_SPARC_TL_MAX * 3) + 1)"
# the sparc64 TL, PIL, ASI, FPRS, remaining register-window state registers, and TICK.NPT:
#
- $as_echo "#define tme_sparc64_ireg_tl tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 0)"
- $as_echo "#define tme_sparc64_ireg_pil tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 1)"
- $as_echo "#define tme_sparc64_ireg_asi tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 2)"
- $as_echo "#define tme_sparc64_ireg_fprs tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 3)"
- $as_echo "#define tme_sparc64_ireg_wstate tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 4)"
- $as_echo "#define tme_sparc64_ireg_cleanwin tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 5)"
- $as_echo "#define tme_sparc64_ireg_tick_npt tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 6)"
+ AS_ECHO(["#define tme_sparc64_ireg_tl tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 0)"])
+ AS_ECHO(["#define tme_sparc64_ireg_pil tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 1)"])
+ AS_ECHO(["#define tme_sparc64_ireg_asi tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 2)"])
+ AS_ECHO(["#define tme_sparc64_ireg_fprs tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 3)"])
+ AS_ECHO(["#define tme_sparc64_ireg_wstate tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 4)"])
+ AS_ECHO(["#define tme_sparc64_ireg_cleanwin tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 5)"])
+ AS_ECHO(["#define tme_sparc64_ireg_tick_npt tme_sparc_ireg_uint8(((${ireg_base} + ${ireg_next}) << 3) + 6)"])
ireg_next=`expr ${ireg_next} + 1`
# the sparc64 TICK (offset) register:
#
- $as_echo "#define tme_sparc64_ireg_tick_offset tme_sparc_ireg_uint64(${ireg_base} + ${ireg_next})"
+ AS_ECHO(["#define tme_sparc64_ireg_tick_offset tme_sparc_ireg_uint64(${ireg_base} + ${ireg_next})"])
ireg_next=`expr ${ireg_next} + 1`
# the sparc64 version register:
#
- $as_echo "#define tme_sparc64_ireg_ver tme_sparc_ireg_uint64(${ireg_base} + ${ireg_next})"
+ AS_ECHO(["#define tme_sparc64_ireg_ver tme_sparc_ireg_uint64(${ireg_base} + ${ireg_next})"])
ireg_next=`expr ${ireg_next} + 1`
# the sparc64 CCR:
# NB: this is a separate register for recode; can it maybe be combined
# with the block of 8-bit registers above, as the first byte?
#
- $as_echo "#define TME_SPARC64_IREG_CCR (${ireg_base} + ${ireg_next})"
- $as_echo "#define tme_sparc64_ireg_ccr tme_sparc_ireg_uint8(TME_SPARC64_IREG_CCR << 3)"
+ AS_ECHO(["#define TME_SPARC64_IREG_CCR (${ireg_base} + ${ireg_next})"])
+ AS_ECHO(["#define tme_sparc64_ireg_ccr tme_sparc_ireg_uint8(TME_SPARC64_IREG_CCR << 3)"])
ireg_next=`expr ${ireg_next} + 1`
# our internal sparc64 RCC register:
#
- $as_echo "#define TME_SPARC64_IREG_RCC (${ireg_base} + ${ireg_next})"
+ AS_ECHO(["#define TME_SPARC64_IREG_RCC (${ireg_base} + ${ireg_next})"])
ireg_next=`expr ${ireg_next} + 1`
# our internal virtual address hole start:
#
- $as_echo "#define tme_sparc64_ireg_va_hole_start tme_sparc_ireg_uint64(${ireg_base} + ${ireg_next})"
+ AS_ECHO(["#define tme_sparc64_ireg_va_hole_start tme_sparc_ireg_uint64(${ireg_base} + ${ireg_next})"])
ireg_next=`expr ${ireg_next} + 1`
fi
@@ -196,9 +196,9 @@ fi
# indexable with the condition codes value:
#
if $header; then :; else
- $as_echo ""
- $as_echo "/* the icc->conditions mapping: */"
- $as_echo "const tme_uint8_t _tme_sparc_conds_icc[[16]] = {"
+ AS_ECHO([""])
+ AS_ECHO(["/* the icc->conditions mapping: */"])
+ AS_ECHO(["const tme_uint8_t _tme_sparc_conds_icc[[16]] = {"])
for nflag in 0 1; do
for zflag in 0 1; do
for vflag in 0 1; do
@@ -206,56 +206,56 @@ if $header; then :; else
# the Never condition:
#
- $as_echo_n " 0"
+ AS_ECHO_N([" 0"])
# the Equal condition:
#
if test $zflag = 1; then
- $as_echo_n " | TME_BIT(1)"
+ AS_ECHO_N([" | TME_BIT(1)"])
fi
# the Less or Equal condition:
#
if test $zflag = 1 || test $nflag != $vflag; then
- $as_echo_n " | TME_BIT(2)"
+ AS_ECHO_N([" | TME_BIT(2)"])
fi
# the Less condition:
#
if test $nflag != $vflag; then
- $as_echo_n " | TME_BIT(3)"
+ AS_ECHO_N([" | TME_BIT(3)"])
fi
# the Less or Equal Unsigned condition:
#
if test $cflag = 1 || test $zflag = 1; then
- $as_echo_n " | TME_BIT(4)"
+ AS_ECHO_N([" | TME_BIT(4)"])
fi
# the Carry Set condition:
#
if test $cflag = 1; then
- $as_echo_n " | TME_BIT(5)"
+ AS_ECHO_N([" | TME_BIT(5)"])
fi
# the Negative condition:
#
if test $nflag = 1; then
- $as_echo_n " | TME_BIT(6)"
+ AS_ECHO_N([" | TME_BIT(6)"])
fi
# the Overflow Set condition:
#
if test $vflag = 1; then
- $as_echo_n " | TME_BIT(7)"
+ AS_ECHO_N([" | TME_BIT(7)"])
fi
- $as_echo ","
+ AS_ECHO([","])
done
done
done
done
- $as_echo "};"
+ AS_ECHO(["};"])
fi
# done:
diff --git a/ic/sparc/sparc-vis-auto.m4 b/ic/sparc/sparc-vis-auto.m4
index b3bb82b..db7d821 100644
--- a/ic/sparc/sparc-vis-auto.m4
+++ b/ic/sparc/sparc-vis-auto.m4
@@ -51,45 +51,45 @@ cat <<EOF
_TME_RCSID("\$Id: sparc-vis-auto.sh,v 1.4 2010/02/20 22:01:40 fredette Exp $");
EOF
-$as_echo ""
-$as_echo "/* this handles VIS instructions: */"
-$as_echo "void"
-$as_echo "tme_sparc_vis(struct tme_sparc *ic)"
-$as_echo "{"
-$as_echo " unsigned int opf;"
-$as_echo " unsigned int fpreg_rd_number_encoded;"
-$as_echo " const struct tme_float *fpreg_rs1;"
-$as_echo " const struct tme_float *fpreg_rs2;"
-$as_echo " unsigned int fpreg_rd_format;"
-$as_echo " unsigned int fpreg_rd_number;"
-$as_echo " struct tme_float fpreg_rd;"
-$as_echo " tme_uint64_t value_fpreg_rs1;"
-$as_echo " tme_uint64_t value_fpreg_rs2;"
-$as_echo " unsigned int compare_result;"
-$as_echo " unsigned int reg_rd;"
-$as_echo " unsigned int alignaddr_off;"
-$as_echo ""
-$as_echo " TME_SPARC_INSN_FPU;"
-$as_echo ""
-$as_echo " /* extract the opf field: */"
-$as_echo " opf = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, (0x1ff << 5));"
-$as_echo ""
-$as_echo " /* extract the encoded rd: */"
-$as_echo " fpreg_rd_number_encoded = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, TME_SPARC_FORMAT3_MASK_RD);"
-
-$as_echo ""
-$as_echo "#ifdef _TME_SPARC_RECODE_VERIFY"
-$as_echo " /* clear the rd buffer: */"
-$as_echo " memset(&fpreg_rd, 0, sizeof(fpreg_rd));"
-$as_echo "#endif /* _TME_SPARC_RECODE_VERIFY */"
-
-$as_echo ""
-$as_echo " /* dispatch on the opf field: */"
-$as_echo " switch (opf) {"
-$as_echo "#define _TME_SPARC_FPU_FORMAT_RS1(format) fpreg_rs1 = tme_sparc_fpu_fpreg_read(ic, TME_SPARC_FORMAT3_MASK_RS1, (format))"
-$as_echo "#define _TME_SPARC_FPU_FORMAT_RS2(format) fpreg_rs2 = tme_sparc_fpu_fpreg_read(ic, TME_SPARC_FORMAT3_MASK_RS2, (format))"
-$as_echo "#define _TME_SPARC_FPU_FORMAT_RD(format) do { fpreg_rd_format = (format) | TME_IEEE754_FPREG_FORMAT_BUILTIN; fpreg_rd_number = tme_sparc_fpu_fpreg_decode(ic, fpreg_rd_number_encoded, fpreg_rd_format); } while (/* CONSTCOND */ 0)"
-$as_echo ""
+AS_ECHO([""])
+AS_ECHO(["/* this handles VIS instructions: */"])
+AS_ECHO(["void"])
+AS_ECHO(["tme_sparc_vis(struct tme_sparc *ic)"])
+AS_ECHO(["{"])
+AS_ECHO([" unsigned int opf;"])
+AS_ECHO([" unsigned int fpreg_rd_number_encoded;"])
+AS_ECHO([" const struct tme_float *fpreg_rs1;"])
+AS_ECHO([" const struct tme_float *fpreg_rs2;"])
+AS_ECHO([" unsigned int fpreg_rd_format;"])
+AS_ECHO([" unsigned int fpreg_rd_number;"])
+AS_ECHO([" struct tme_float fpreg_rd;"])
+AS_ECHO([" tme_uint64_t value_fpreg_rs1;"])
+AS_ECHO([" tme_uint64_t value_fpreg_rs2;"])
+AS_ECHO([" unsigned int compare_result;"])
+AS_ECHO([" unsigned int reg_rd;"])
+AS_ECHO([" unsigned int alignaddr_off;"])
+AS_ECHO([""])
+AS_ECHO([" TME_SPARC_INSN_FPU;"])
+AS_ECHO([""])
+AS_ECHO([" /* extract the opf field: */"])
+AS_ECHO([" opf = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, (0x1ff << 5));"])
+AS_ECHO([""])
+AS_ECHO([" /* extract the encoded rd: */"])
+AS_ECHO([" fpreg_rd_number_encoded = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, TME_SPARC_FORMAT3_MASK_RD);"])
+
+AS_ECHO([""])
+AS_ECHO(["#ifdef _TME_SPARC_RECODE_VERIFY"])
+AS_ECHO([" /* clear the rd buffer: */"])
+AS_ECHO([" memset(&fpreg_rd, 0, sizeof(fpreg_rd));"])
+AS_ECHO(["#endif /* _TME_SPARC_RECODE_VERIFY */"])
+
+AS_ECHO([""])
+AS_ECHO([" /* dispatch on the opf field: */"])
+AS_ECHO([" switch (opf) {"])
+AS_ECHO(["#define _TME_SPARC_FPU_FORMAT_RS1(format) fpreg_rs1 = tme_sparc_fpu_fpreg_read(ic, TME_SPARC_FORMAT3_MASK_RS1, (format))"])
+AS_ECHO(["#define _TME_SPARC_FPU_FORMAT_RS2(format) fpreg_rs2 = tme_sparc_fpu_fpreg_read(ic, TME_SPARC_FORMAT3_MASK_RS2, (format))"])
+AS_ECHO(["#define _TME_SPARC_FPU_FORMAT_RD(format) do { fpreg_rd_format = (format) | TME_IEEE754_FPREG_FORMAT_BUILTIN; fpreg_rd_number = tme_sparc_fpu_fpreg_decode(ic, fpreg_rd_number_encoded, fpreg_rd_format); } while (/* CONSTCOND */ 0)"])
+AS_ECHO([""])
# permute over the opf field:
#
@@ -120,7 +120,7 @@ while test ${opf_decimal} != 511; do
case "${opf}" in
00010???0)
- compareopf=`$as_echo ${opf} | sed -e 's/^00010\(.*\)0$/\1/'`
+ compareopf=`AS_ECHO([${opf}]) | sed -e 's/^00010\(.*\)0$/\1/'`
case "${compareopf}" in
?1?) compareopsize=32 ;;
?0?) compareopsize=16 ;;
@@ -131,48 +131,48 @@ while test ${opf_decimal} != 511; do
0?1) compareopname="NE" ; compareop="!=" ;;
1?1) compareopname="EQ" ; compareop="==" ;;
esac
- $as_echo " case ${opf_decimal}: /* ${opf} FCMP${compareopname}${compareopsize}: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " value_fpreg_rs1 = fpreg_rs1->tme_float_value_ieee754_double.tme_value64_uint;"
- $as_echo " value_fpreg_rs2 = fpreg_rs2->tme_float_value_ieee754_double.tme_value64_uint;"
- $as_echo " compare_result = 0;"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FCMP${compareopname}${compareopsize}: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" value_fpreg_rs1 = fpreg_rs1->tme_float_value_ieee754_double.tme_value64_uint;"])
+ AS_ECHO([" value_fpreg_rs2 = fpreg_rs2->tme_float_value_ieee754_double.tme_value64_uint;"])
+ AS_ECHO([" compare_result = 0;"])
compare_off=0
while test ${compare_off} != 64; do
- $as_echo " if (((tme_uint${compareopsize}_t) value_fpreg_rs1)"
- $as_echo " ${compareop} (tme_uint${compareopsize}_t) value_fpreg_rs2) {"
- $as_echo " compare_result += (1 << (${compare_off} / ${compareopsize}));"
- $as_echo " }"
- $as_echo " value_fpreg_rs1 >>= ${compareopsize};"
- $as_echo " value_fpreg_rs2 >>= ${compareopsize};"
+ AS_ECHO([" if (((tme_uint${compareopsize}_t) value_fpreg_rs1)"])
+ AS_ECHO([" ${compareop} (tme_uint${compareopsize}_t) value_fpreg_rs2) {"])
+ AS_ECHO([" compare_result += (1 << (${compare_off} / ${compareopsize}));"])
+ AS_ECHO([" }"])
+ AS_ECHO([" value_fpreg_rs1 >>= ${compareopsize};"])
+ AS_ECHO([" value_fpreg_rs2 >>= ${compareopsize};"])
compare_off=`expr ${compare_off} + ${compareopsize}`
done
- $as_echo " reg_rd = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, TME_SPARC_FORMAT3_MASK_RD);"
- $as_echo " TME_SPARC_REG_INDEX(ic, reg_rd);"
- $as_echo " ic->tme_sparc_ireg_uint64(reg_rd) = compare_result;"
- $as_echo " fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
- $as_echo " fpreg_rd_number = 0;"
+ AS_ECHO([" reg_rd = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, TME_SPARC_FORMAT3_MASK_RD);"])
+ AS_ECHO([" TME_SPARC_REG_INDEX(ic, reg_rd);"])
+ AS_ECHO([" ic->tme_sparc_ireg_uint64(reg_rd) = compare_result;"])
+ AS_ECHO([" fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"])
+ AS_ECHO([" fpreg_rd_number = 0;"])
;;
001001000)
- $as_echo " case ${opf_decimal}: /* ${opf} FALIGNDATA: */"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
- $as_echo " fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"
- $as_echo " fpreg_rd.tme_float_value_ieee754_double = fpreg_rs1->tme_float_value_ieee754_double;"
- $as_echo " alignaddr_off = TME_FIELD_MASK_EXTRACTU(ic->tme_sparc_vis_gsr, TME_SPARC_VIS_GSR_ALIGNADDR_OFF);"
- $as_echo " if (alignaddr_off) {"
- $as_echo " fpreg_rd.tme_float_value_ieee754_double.tme_value64_uint"
- $as_echo " = ((fpreg_rd.tme_float_value_ieee754_double.tme_value64_uint"
- $as_echo " << (8 * alignaddr_off))"
- $as_echo " + (fpreg_rs2->tme_float_value_ieee754_double.tme_value64_uint"
- $as_echo " >> (64 - (8 * alignaddr_off))));"
- $as_echo " }"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} FALIGNDATA: */"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"])
+ AS_ECHO([" fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_DOUBLE;"])
+ AS_ECHO([" fpreg_rd.tme_float_value_ieee754_double = fpreg_rs1->tme_float_value_ieee754_double;"])
+ AS_ECHO([" alignaddr_off = TME_FIELD_MASK_EXTRACTU(ic->tme_sparc_vis_gsr, TME_SPARC_VIS_GSR_ALIGNADDR_OFF);"])
+ AS_ECHO([" if (alignaddr_off) {"])
+ AS_ECHO([" fpreg_rd.tme_float_value_ieee754_double.tme_value64_uint"])
+ AS_ECHO([" = ((fpreg_rd.tme_float_value_ieee754_double.tme_value64_uint"])
+ AS_ECHO([" << (8 * alignaddr_off))"])
+ AS_ECHO([" + (fpreg_rs2->tme_float_value_ieee754_double.tme_value64_uint"])
+ AS_ECHO([" >> (64 - (8 * alignaddr_off))));"])
+ AS_ECHO([" }"])
;;
0011?????)
- logicalopf=`$as_echo ${opf} | sed -e 's/^0011\(.*\)[[01]]$/\1/'`
+ logicalopf=`AS_ECHO([${opf}]) | sed -e 's/^0011\(.*\)[[01]]$/\1/'`
logicalopname=
logicalop=
case "${logicalopf}" in
@@ -240,7 +240,7 @@ while test ${opf_decimal} != 511; do
logicalopname="ANDNOT2"
logicalop="(src1 & ~src2)"
;;
- *) $as_echo "$0 internal error: unknown VIS logical op ${logicalopf}" 1>&2 ; exit 1 ;;
+ *) AS_ECHO(["$0 internal error: unknown VIS logical op ${logicalopf}"]) 1>&2 ; exit 1 ;;
esac
case "${opf}" in
@@ -248,53 +248,53 @@ while test ${opf_decimal} != 511; do
*0) capprecision="DOUBLE"; size="64" ; value="double.tme_value64_uint" ;;
esac
- $as_echo " case ${opf_decimal}: /* ${opf} (${logicalopf}) F${logicalopname}: */"
+ AS_ECHO([" case ${opf_decimal}: /* ${opf} (${logicalopf}) F${logicalopname}: */"])
- logicalop=`$as_echo "${logicalop}" | sed -e "s/type/tme_uint${size}_t/g"`
+ logicalop=`AS_ECHO(["${logicalop}" | sed -e "s/type/tme_uint${size}_t/g"])`
- logicalop_next=`$as_echo "${logicalop}" | sed -e "s/src1/fpreg_rs1->tme_float_value_ieee754_${value}/"`
+ logicalop_next=`AS_ECHO(["${logicalop}" | sed -e "s/src1/fpreg_rs1->tme_float_value_ieee754_${value}/"])`
if test "${logicalop_next}" != "${logicalop}"; then
- $as_echo " _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_${capprecision});"
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_${capprecision});"])
logicalop="${logicalop_next}"
fi
- logicalop_next=`$as_echo "${logicalop}" | sed -e "s/src2/fpreg_rs2->tme_float_value_ieee754_${value}/"`
+ logicalop_next=`AS_ECHO(["${logicalop}" | sed -e "s/src2/fpreg_rs2->tme_float_value_ieee754_${value}/"])`
if test "${logicalop_next}" != "${logicalop}"; then
- $as_echo " _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_${capprecision});"
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_${capprecision});"])
logicalop="${logicalop_next}"
fi
- $as_echo " _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_${capprecision});"
- $as_echo " _TME_SPARC_FPU_BEGIN;"
- $as_echo " fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_${capprecision};"
- $as_echo " fpreg_rd.tme_float_value_ieee754_${value} = ${logicalop};"
+ AS_ECHO([" _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_${capprecision});"])
+ AS_ECHO([" _TME_SPARC_FPU_BEGIN;"])
+ AS_ECHO([" fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_${capprecision};"])
+ AS_ECHO([" fpreg_rd.tme_float_value_ieee754_${value} = ${logicalop};"])
;;
*) default=true ;;
esac
- if $default; then :; else $as_echo " break;"; $as_echo ""; fi
+ if $default; then :; else AS_ECHO([" break;"]); AS_ECHO([""]); fi
done
-$as_echo " default:"
-$as_echo " _TME_SPARC_FPU_UNIMPL;"
-$as_echo " fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
-$as_echo " fpreg_rd_number = 0;"
-$as_echo " break;"
-$as_echo ""
-$as_echo "#undef _TME_SPARC_FPU_FORMAT_RS1"
-$as_echo "#undef _TME_SPARC_FPU_FORMAT_RS2"
-$as_echo "#undef _TME_SPARC_FPU_FORMAT_RD"
-$as_echo " }"
-
-$as_echo ""
-$as_echo " /* store any destination: */"
-$as_echo " if (fpreg_rd_format != TME_IEEE754_FPREG_FORMAT_NULL) {"
-$as_echo " tme_sparc_fpu_fpreg_format(ic, fpreg_rd_number, fpreg_rd_format);"
-$as_echo " ic->tme_sparc_fpu_fpregs[[fpreg_rd_number]] = fpreg_rd;"
-$as_echo " TME_SPARC_FPU_DIRTY(ic, fpreg_rd_number);"
-$as_echo " }"
-
-$as_echo ""
-$as_echo "}"
+AS_ECHO([" default:"])
+AS_ECHO([" _TME_SPARC_FPU_UNIMPL;"])
+AS_ECHO([" fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"])
+AS_ECHO([" fpreg_rd_number = 0;"])
+AS_ECHO([" break;"])
+AS_ECHO([""])
+AS_ECHO(["#undef _TME_SPARC_FPU_FORMAT_RS1"])
+AS_ECHO(["#undef _TME_SPARC_FPU_FORMAT_RS2"])
+AS_ECHO(["#undef _TME_SPARC_FPU_FORMAT_RD"])
+AS_ECHO([" }"])
+
+AS_ECHO([""])
+AS_ECHO([" /* store any destination: */"])
+AS_ECHO([" if (fpreg_rd_format != TME_IEEE754_FPREG_FORMAT_NULL) {"])
+AS_ECHO([" tme_sparc_fpu_fpreg_format(ic, fpreg_rd_number, fpreg_rd_format);"])
+AS_ECHO([" ic->tme_sparc_fpu_fpregs[[fpreg_rd_number]] = fpreg_rd;"])
+AS_ECHO([" TME_SPARC_FPU_DIRTY(ic, fpreg_rd_number);"])
+AS_ECHO([" }"])
+
+AS_ECHO([""])
+AS_ECHO(["}"])
# permute over architecture:
#
@@ -306,7 +306,7 @@ for arch in 64; do
case "${arch}:${size}" in
*:64) insn="d" ; format="DOUBLE" ; value="double.tme_value64_uint" ;;
- *) $as_echo "$0 internal error: unknown architecture PST word size ${arch}:${size}" 1>&2 ; exit 1 ;;
+ *) AS_ECHO(["$0 internal error: unknown architecture PST word size ${arch}:${size}"]) 1>&2 ; exit 1 ;;
esac
cat <<EOF
--
2.47.0