Revision db6e2e65

b/target-arm/helper.c
2171 2171
/* Signed modulo arithmetic.  */
2172 2172
#define SARITH16(a, b, n, op) do { \
2173 2173
    int32_t sum; \
2174
    sum = (int16_t)((uint16_t)(a) op (uint16_t)(b)); \
2174
    sum = (int32_t)(int16_t)(a) op (int32_t)(int16_t)(b); \
2175 2175
    RESULT(sum, n, 16); \
2176 2176
    if (sum >= 0) \
2177 2177
        ge |= 3 << (n * 2); \
......
2179 2179

  
2180 2180
#define SARITH8(a, b, n, op) do { \
2181 2181
    int32_t sum; \
2182
    sum = (int8_t)((uint8_t)(a) op (uint8_t)(b)); \
2182
    sum = (int32_t)(int8_t)(a) op (int32_t)(int8_t)(b); \
2183 2183
    RESULT(sum, n, 8); \
2184 2184
    if (sum >= 0) \
2185 2185
        ge |= 1 << n; \

Also available in: Unified diff