2 `INSN_CALL,`INSN_CALLCC: begin
16 if (!opcode[0]) // i.e., is callcc
17 /* We need to check the condition code to bail out. */
19 `INSN_cc_NZ: if (registers[`REG_F][7]) begin `EXEC_NEWCYCLE; end
20 `INSN_cc_Z: if (~registers[`REG_F][7]) begin `EXEC_NEWCYCLE; end
21 `INSN_cc_NC: if (registers[`REG_F][4]) begin `EXEC_NEWCYCLE; end
22 `INSN_cc_C: if (~registers[`REG_F][4]) begin `EXEC_NEWCYCLE; end
26 address <= {registers[`REG_SPH],registers[`REG_SPL]} - 1;
27 wdata <= registers[`REG_PCH];
31 address <= {registers[`REG_SPH],registers[`REG_SPL]} - 2;
32 wdata <= registers[`REG_PCL];
36 `EXEC_NEWCYCLE; /* do NOT increment the PC */
43 `INSN_CALL,`INSN_CALLCC: begin
45 0: begin /* type F */ end
46 1: tmp <= rdata; // tmp contains newpcl
47 2: tmp2 <= rdata; // tmp2 contains newpch
48 3: begin /* type F */ end
49 4: registers[`REG_PCH] <= tmp2;
51 {registers[`REG_SPH],registers[`REG_SPL]} <=
52 {registers[`REG_SPH],registers[`REG_SPL]} - 2;
53 registers[`REG_PCL] <= tmp;