Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8285303

riscv: Incorrect register mask in call_native_base

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P5 P5
    • 19
    • 19
    • hotspot
    • 19
    • b20
    • riscv
    • linux

        On behalf of Dingli Zhang (dingli@iscas.ac.cn)

        In `MacroAssembler::call_native_base`, t0 and xmethod should be saved as expected:

        ```
        void MacroAssembler::call_native_base(address entry_point, Label *retaddr) {
          Label E, L;
          int32_t offset = 0;
          push_reg(0x80000040, sp); // push << t0 & xmethod >> to sp
          movptr_with_offset(t0, entry_point, offset);
          jalr(x1, t0, offset);
          if (retaddr != NULL) {
            bind(*retaddr);
          }
          pop_reg(0x80000040, sp); // pop << t0 & xmethod >> from sp
        }
        ```

        Register mask of '0x80000040' operates << t1 & xmethod >> here, which should be '0x80000020' for << t0 & xmethod >>.

              fjiang Feilong Jiang
              fjiang Feilong Jiang
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: