Revision 5550359f target-s390x/translate.c
b/target-s390x/translate.c | ||
---|---|---|
1427 | 1427 |
return help_branch(s, &c, is_imm, imm, o->in2); |
1428 | 1428 |
} |
1429 | 1429 |
|
1430 |
static ExitStatus op_cj(DisasContext *s, DisasOps *o) |
|
1431 |
{ |
|
1432 |
int imm, m3 = get_field(s->fields, m3); |
|
1433 |
bool is_imm; |
|
1434 |
DisasCompare c; |
|
1435 |
|
|
1436 |
/* Bit 3 of the m3 field is reserved and should be zero. |
|
1437 |
Choose to ignore it wrt the ltgt_cond table above. */ |
|
1438 |
c.cond = ltgt_cond[m3 & 14]; |
|
1439 |
if (s->insn->data) { |
|
1440 |
c.cond = tcg_unsigned_cond(c.cond); |
|
1441 |
} |
|
1442 |
c.is_64 = c.g1 = c.g2 = true; |
|
1443 |
c.u.s64.a = o->in1; |
|
1444 |
c.u.s64.b = o->in2; |
|
1445 |
|
|
1446 |
is_imm = have_field(s->fields, i4); |
|
1447 |
if (is_imm) { |
|
1448 |
imm = get_field(s->fields, i4); |
|
1449 |
} else { |
|
1450 |
imm = 0; |
|
1451 |
o->out = get_address(s, 0, get_field(s->fields, b4), |
|
1452 |
get_field(s->fields, d4)); |
|
1453 |
} |
|
1454 |
|
|
1455 |
return help_branch(s, &c, is_imm, imm, o->out); |
|
1456 |
} |
|
1457 |
|
|
1430 | 1458 |
static ExitStatus op_ceb(DisasContext *s, DisasOps *o) |
1431 | 1459 |
{ |
1432 | 1460 |
gen_helper_ceb(cc_op, cpu_env, o->in1, o->in2); |
Also available in: Unified diff