Previous 199869 Revisions Next

r33194 Tuesday 4th November, 2014 at 13:14:26 UTC by Ryan Holtz
mips3: Fixed left-shift-of-signed-value issues. [MooglyGuy]

rsp: Fixed left-shift-of-signed-value issues. [MooglyGuy]
[src/emu/cpu/mips]mips3drc.c mips3fe.c
[src/emu/cpu/rsp]rspfe.c

trunk/src/emu/cpu/mips/mips3drc.c
r241705r241706
13871387
13881388      case 0x0f:  /* LUI - MIPS I */
13891389         if (RTREG != 0)
1390            UML_DMOV(block, R64(RTREG), SIMMVAL << 16);                 // dmov    <rtreg>,SIMMVAL << 16
1390            UML_DMOV(block, R64(RTREG), UIMMVAL << 16);                 // dmov    <rtreg>,UIMMVAL << 16
13911391         return TRUE;
13921392
13931393      case 0x08:  /* ADDI - MIPS I */
trunk/src/emu/cpu/mips/mips3fe.c
r241705r241706
106106            desc.regin[0] |= REGFLAG_R(RSREG) | REGFLAG_R(RTREG);
107107            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
108108         }
109         desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
109         desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
110110         desc.delayslots = 1;
111111         desc.skipslots = (opswitch & 0x10) ? 1 : 0;
112112         return true;
r241705r241706
122122            desc.regin[0] |= REGFLAG_R(RSREG);
123123            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
124124         }
125         desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
125         desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
126126         desc.delayslots = 1;
127127         desc.skipslots = (opswitch & 0x10) ? 1 : 0;
128128         return true;
r241705r241706
396396            desc.regin[0] |= REGFLAG_R(RSREG);
397397            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
398398         }
399         desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
399         desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
400400         desc.delayslots = 1;
401401         desc.skipslots = (RTREG & 0x02) ? 1 : 0;
402402         return true;
r241705r241706
423423            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
424424         }
425425         desc.regout[0] |= REGFLAG_R(31);
426         desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
426         desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
427427         desc.delayslots = 1;
428428         desc.skipslots = (RTREG & 0x02) ? 1 : 0;
429429         return true;
r241705r241706
508508            case 0x00:  // BCzF
509509            case 0x01:  // BCzT
510510               desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
511               desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
511               desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
512512               desc.delayslots = 1;
513513               return true;
514514         }
r241705r241706
580580            case 0x03:  // BCzTL
581581               desc.regin[2] |= REGFLAG_FCC;
582582               desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
583               desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
583               desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
584584               desc.delayslots = 1;
585585               desc.skipslots = (RTREG & 0x02) ? 1 : 0;
586586               return true;
r241705r241706
730730            case 0x00:  // BCzF
731731            case 0x01:  // BCzT
732732               desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
733               desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
733               desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
734734               desc.delayslots = 1;
735735               return true;
736736         }
trunk/src/emu/cpu/rsp/rspfe.c
r241705r241706
8383            desc.regin[0] |= REGFLAG_R(RSREG) | REGFLAG_R(RTREG);
8484            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
8585         }
86         desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
86         desc.targetpc = ((desc.pc + 4 + SIMMVAL * 4) & 0x00000fff) | 0x1000;
8787         desc.delayslots = 1;
8888         desc.skipslots = (opswitch & 0x10) ? 1 : 0;
8989         return true;
r241705r241706
9797            desc.regin[0] |= REGFLAG_R(RSREG);
9898            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
9999         }
100         desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
100         desc.targetpc = ((desc.pc + 4 + SIMMVAL * 4) & 0x00000fff) | 0x1000;
101101         desc.delayslots = 1;
102102         desc.skipslots = (opswitch & 0x10) ? 1 : 0;
103103         return true;
r241705r241706
234234            desc.regin[0] |= REGFLAG_R(RSREG);
235235            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
236236         }
237         desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
237         desc.targetpc = ((desc.pc + 4 + SIMMVAL * 4) & 0x00000fff) | 0x1000;
238238         desc.delayslots = 1;
239239         desc.skipslots = (RTREG & 0x02) ? 1 : 0;
240240         return true;
r241705r241706
249249            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
250250         }
251251         desc.regout[0] |= REGFLAG_R(31);
252         desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
252         desc.targetpc = ((desc.pc + 4 + SIMMVAL * 4) & 0x00000fff) | 0x1000;
253253         desc.delayslots = 1;
254254         desc.skipslots = (RTREG & 0x02) ? 1 : 0;
255255         return true;


Previous 199869 Revisions Next


© 1997-2024 The MAME Team