diff --git a/3B2/3b2_mau.c b/3B2/3b2_mau.c index fcac8cda..f050544f 100644 --- a/3B2/3b2_mau.c +++ b/3B2/3b2_mau.c @@ -144,21 +144,21 @@ static void sub_128(t_uint64 a0, t_uint64 a1, static void mul_64_to_128(t_uint64 a, t_uint64 b, t_uint64 *r_low, t_uint64 *r_high); static void mul_64_by_shifted_32_to_128(t_uint64 a, uint32 b, t_mau_128 *result); static t_uint64 estimate_div_128_to_64(t_uint64 a0, t_uint64 a1, t_uint64 b); -static uint32 round_pack_int(t_bool sign, t_uint64 frac, RM rounding_mode); -static t_int64 round_pack_int64(t_bool sign, +static uint32 round_pack_int(uint32 sign, t_uint64 frac, RM rounding_mode); +static t_int64 round_pack_int64(uint32 sign, t_uint64 abs_0, t_uint64 abs_1, RM rounding_mode); -static SFP round_pack_sfp(t_bool sign, int16 exp, +static SFP round_pack_sfp(uint32 sign, int16 exp, uint32 frac, RM rounding_mode); -static DFP round_pack_dfp(t_bool sign, int16 exp, t_uint64 frac, +static DFP round_pack_dfp(uint32 sign, int16 exp, t_uint64 frac, t_bool xfp_sticky, RM rounding_mode); -static void round_pack_xfp(t_bool sign, int32 exp, +static void round_pack_xfp(uint32 sign, int32 exp, t_uint64 frac_a, t_uint64 frac_b, RM rounding_mode, XFP *result); static void propagate_xfp_nan(XFP *a, XFP *b, XFP *result); static void propagate_xfp_nan_128(XFP* a, XFP* b, t_mau_128* result); -static void normalize_round_pack_xfp(t_bool sign, int32 exp, +static void normalize_round_pack_xfp(uint32 sign, int32 exp, t_uint64 frac_0, t_uint64 frac_1, RM rounding_mode, XFP *result); static void normalize_sfp_subnormal(uint32 in_frac, int16 *out_exp, uint32 *out_frac); @@ -926,7 +926,7 @@ static uint32 approx_recip_sqrt_32(uint32 oddExpA, uint32 a) * * Derived from the SoftFloat 2c package (see copyright notice above) */ -static uint32 round_pack_int(t_bool sign, t_uint64 frac, RM rounding_mode) +static uint32 round_pack_int(uint32 sign, t_uint64 frac, RM rounding_mode) { int8 round_increment, round_bits; int32 result; @@ -980,7 +980,7 @@ static uint32 round_pack_int(t_bool sign, t_uint64 frac, RM rounding_mode) * * Derived from the SoftFloat 2c package (see copyright notice above) */ -static t_int64 round_pack_int64(t_bool sign, +static t_int64 round_pack_int64(uint32 sign, t_uint64 abs_0, t_uint64 abs_1, RM rounding_mode) { @@ -1035,7 +1035,7 @@ static t_int64 round_pack_int64(t_bool sign, * * Derived from the SoftFloat 2c package (see copyright notice above) */ -static SFP round_pack_sfp(t_bool sign, int16 exp, uint32 frac, RM rounding_mode) +static SFP round_pack_sfp(uint32 sign, int16 exp, uint32 frac, RM rounding_mode) { int8 round_increment, round_bits; uint8 is_tiny; @@ -1101,7 +1101,7 @@ static SFP round_pack_sfp(t_bool sign, int16 exp, uint32 frac, RM rounding_mode) * * Derived from the SoftFloat 2c package (see copyright notice above) */ -static DFP round_pack_dfp(t_bool sign, int16 exp, t_uint64 frac, +static DFP round_pack_dfp(uint32 sign, int16 exp, t_uint64 frac, t_bool xfp_sticky, RM rounding_mode) { int16 round_increment, round_bits; @@ -1178,7 +1178,7 @@ static DFP round_pack_dfp(t_bool sign, int16 exp, t_uint64 frac, * * Derived from the SoftFloat 2c package (see copyright notice above) */ -static void round_pack_xfp(t_bool sign, int32 exp, +static void round_pack_xfp(uint32 sign, int32 exp, t_uint64 frac_a, t_uint64 frac_b, RM rounding_mode, XFP *result) { @@ -1313,7 +1313,7 @@ static void propagate_xfp_nan_128(XFP* a, XFP* b, t_mau_128* result) * Partially derived from the SoftFloat 2c package (see copyright * notice above) */ -static void normalize_round_pack_xfp(t_bool sign, int32 exp, +static void normalize_round_pack_xfp(uint32 sign, int32 exp, t_uint64 frac_0, t_uint64 frac_1, RM rounding_mode, XFP *result) { @@ -1412,7 +1412,7 @@ static T_NAN sfp_to_common_nan(SFP val) mau_state.trapping_nan = TRUE; } - nan.sign = val >> 31; + nan.sign = (val >> 31) & 1; nan.low = 0; nan.high = ((t_uint64) val) << 41; @@ -1454,7 +1454,7 @@ static T_NAN xfp_to_common_nan(XFP *val) mau_state.trapping_nan = TRUE; } - nan.sign = val->sign_exp >> 15; + nan.sign = (val->sign_exp >> 15) & 1; nan.low = 0; nan.high = val->frac << 1; @@ -1507,7 +1507,7 @@ static void common_nan_to_xfp(T_NAN nan, XFP *result) */ static void sfp_to_xfp(SFP val, XFP *result) { - t_bool sign; + uint32 sign; int16 exp; uint32 frac; @@ -1542,7 +1542,7 @@ static void sfp_to_xfp(SFP val, XFP *result) */ void dfp_to_xfp(DFP val, XFP *result) { - t_bool sign; + uint32 sign; int16 exp; t_uint64 frac; @@ -1580,7 +1580,7 @@ void dfp_to_xfp(DFP val, XFP *result) */ static SFP xfp_to_sfp(XFP *val, RM rounding_mode) { - t_bool sign; + uint32 sign; int32 exp; t_uint64 frac; uint32 dst_frac; @@ -1615,7 +1615,7 @@ static SFP xfp_to_sfp(XFP *val, RM rounding_mode) */ static DFP xfp_to_dfp(XFP *val, RM rounding_mode) { - t_bool sign; + uint32 sign; int32 exp; t_uint64 frac; @@ -1711,7 +1711,7 @@ static uint32 xfp_lt(XFP *a, XFP *b) void mau_int_to_xfp(int32 val, XFP *result) { int32 shift_width; - t_bool sign; + uint32 sign; uint32 abs_val; uint16 sign_exp = 0; t_uint64 frac = 0; @@ -1744,7 +1744,7 @@ void mau_int_to_xfp(int32 val, XFP *result) */ t_int64 xfp_to_int64(XFP *val, RM rounding_mode) { - t_bool sign; + uint32 sign; int32 exp, shift_count; t_uint64 frac, frac_extra; @@ -1770,7 +1770,7 @@ t_int64 xfp_to_int64(XFP *val, RM rounding_mode) void mau_int64_to_xfp(t_uint64 val, XFP *result) { - t_bool sign; + uint32 sign; t_uint64 abs; int8 shift_count; @@ -1797,7 +1797,7 @@ void xfp_to_decimal(XFP *a, DEC *d, RM rounding_mode) { t_int64 tmp; int i; - t_bool sign; + uint32 sign; uint16 digits[19] = {0}; tmp = xfp_to_int64(a, rounding_mode); @@ -1848,7 +1848,7 @@ void xfp_to_decimal(XFP *a, DEC *d, RM rounding_mode) void mau_decimal_to_xfp(DEC *d, XFP *a) { int i; - t_bool sign; + uint32 sign; uint16 digits[18] = {0}; t_uint64 multiplier = 1; t_uint64 tmp; @@ -1923,7 +1923,7 @@ void mau_decimal_to_xfp(DEC *d, XFP *a) */ uint32 xfp_to_int(XFP *val, RM rounding_mode) { - t_bool sign; + uint32 sign; int32 exp, shift_count; t_uint64 frac; @@ -1954,7 +1954,7 @@ uint32 xfp_to_int(XFP *val, RM rounding_mode) */ void mau_round_xfp_to_int(XFP *val, XFP *result, RM rounding_mode) { - t_bool sign; + uint32 sign; int32 exp; t_uint64 last_bit_mask, round_bits_mask; @@ -2042,7 +2042,7 @@ void mau_round_xfp_to_int(XFP *val, XFP *result, RM rounding_mode) /* * Derived from the SoftFloat 2c package (see copyright notice above) */ -static void xfp_add_fracs(XFP *a, XFP *b, t_bool sign, XFP *result, RM rounding_mode) +static void xfp_add_fracs(XFP *a, XFP *b, uint32 sign, XFP *result, RM rounding_mode) { int32 a_exp, b_exp, r_exp; t_uint64 a_frac, b_frac, r_frac_0, r_frac_1; @@ -2129,7 +2129,7 @@ static void xfp_add_fracs(XFP *a, XFP *b, t_bool sign, XFP *result, RM rounding_ /* * Derived from the SoftFloat 2c package (see copyright notice above) */ -static void xfp_sub_fracs(XFP *a, XFP *b, t_bool sign, XFP *result, RM rounding_mode) +static void xfp_sub_fracs(XFP *a, XFP *b, uint32 sign, XFP *result, RM rounding_mode) { int32 a_exp, b_exp, r_exp; t_uint64 a_frac, b_frac, r_frac_0, r_frac_1; diff --git a/3B2/3b2_mau.h b/3B2/3b2_mau.h index 811c1748..40648333 100644 --- a/3B2/3b2_mau.h +++ b/3B2/3b2_mau.h @@ -301,7 +301,7 @@ typedef struct { * Not-a-Number Type */ typedef struct { - t_bool sign; + uint32 sign; t_uint64 high; t_uint64 low; } T_NAN; diff --git a/3B2/3b2_scsi.c b/3B2/3b2_scsi.c index 66ff3c40..e64f145c 100644 --- a/3B2/3b2_scsi.c +++ b/3B2/3b2_scsi.c @@ -420,14 +420,7 @@ void ha_express(uint8 slot) cio_entry rqe; uint8 rapp_data[RAPP_LEN] = {0}; - sim_debug(HA_TRACE, &ha_dev, - "[ha_express] Handling Express Request. pump_state=%d, ha_state.frq=%d, subdev=%02x\n", - ha_state.pump_state, ha_state.frq, rqe.subdevice); - if (ha_state.pump_state == PUMP_SYSGEN) { - sim_debug(HA_TRACE, &ha_dev, - "[ha_full] PUMP: NEW STATE = PUMP_COMPLETE\n"); - ha_state.pump_state = PUMP_COMPLETE; }