- long opcode = inst >> 26;
- long r1 = (inst >> 21) & 0x1f;
- long r2 = (inst >> 16) & 0x1f;
- long bdisp = ((inst&(1<<15)) ? inst | (-1 << 16) : inst&0x7fff) << 2;
- long jdisp = (inst&0x3ffffff) << 2;
- long disp = 0;
+ unsigned int opcode = inst >> 26;
+ unsigned int r1 = (inst >> 21) & 0x1f;
+ unsigned int r2 = (inst >> 16) & 0x1f;
+ unsigned int r3 = (inst >> 11) & 0x1f;
+ unsigned int disp = ((inst&(1<<15)) ? inst | (-1 << 16) : inst&0x7fff) << 2;
+ unsigned int jtgt = (*os_context_pc_addr(context) & ~0x0fffffff) | (inst&0x3ffffff) << 2;
+ unsigned int tgt = *os_context_pc_addr(context);