1.1 --- a/src/cpu/mips/vm/macroAssembler_mips.cpp Mon Jun 04 17:40:51 2018 +0800 1.2 +++ b/src/cpu/mips/vm/macroAssembler_mips.cpp Fri May 25 14:48:32 2018 +0800 1.3 @@ -97,21 +97,20 @@ 1.4 jint& stub_inst = *(jint*) branch; 1.5 jint *pc = (jint *)branch; 1.6 1.7 -/* * 1.8 - move(AT, RA); // dadd 1.9 - emit_long(insn_ORRI(regimm_op, 0, bgezal_op, 1)); 1.10 - nop(); 1.11 - lui(T9, 0); // to be patched 1.12 - ori(T9, 0); 1.13 - daddu(T9, T9, RA); 1.14 - move(RA, AT); 1.15 - jr(T9); 1.16 - */ 1.17 if((opcode(stub_inst) == special_op) && (special(stub_inst) == dadd_op)) { 1.18 + //b_far: 1.19 + // move(AT, RA); // dadd 1.20 + // emit_long(insn_ORRI(regimm_op, 0, bgezal_op, 1)); 1.21 + // nop(); 1.22 + // lui(T9, 0); // to be patched 1.23 + // ori(T9, 0); 1.24 + // daddu(T9, T9, RA); 1.25 + // move(RA, AT); 1.26 + // jr(T9); 1.27 1.28 assert(opcode(pc[3]) == lui_op 1.29 - && opcode(pc[4]) == ori_op 1.30 - && special(pc[5]) == daddu_op, "Not a branch label patch"); 1.31 + && opcode(pc[4]) == ori_op 1.32 + && special(pc[5]) == daddu_op, "Not a branch label patch"); 1.33 if(!(opcode(pc[3]) == lui_op 1.34 && opcode(pc[4]) == ori_op 1.35 && special(pc[5]) == daddu_op)) { tty->print_cr("Not a branch label patch"); } 1.36 @@ -138,6 +137,10 @@ 1.37 } else if (special(pc[4]) == jr_op 1.38 && opcode(pc[4]) == special_op 1.39 && (((opcode(pc[0]) == lui_op) || opcode(pc[0]) == daddiu_op) || (opcode(pc[0]) == ori_op))) { 1.40 + //jmp_far: 1.41 + // patchable_set48(T9, target); 1.42 + // jr(T9); 1.43 + // nop(); 1.44 1.45 CodeBuffer cb(branch, 4 * 4); 1.46 MacroAssembler masm(&cb);