src/cpu/mips/vm/macroAssembler_mips.cpp

changeset 9136
7ed87d5663da
parent 9043
7519f4bf92b5
child 9144
cecfc245b19a
     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);

mercurial