aboutsummaryrefslogtreecommitdiff
path: root/src/vm_mips64.dasc
diff options
context:
space:
mode:
authorMike Pall <mike>2026-02-11 23:06:36 +0100
committerMike Pall <mike>2026-02-11 23:06:36 +0100
commit2aec641e01ab80e86ea75d944c0919fa6c03c37c (patch)
tree2e92499d41307a5fe85729e59111b26ab0bdddd6 /src/vm_mips64.dasc
parentd459c6ce503e880dc30aefb6b61aa7f2124c7a6e (diff)
downloadluajit-2aec641e01ab80e86ea75d944c0919fa6c03c37c.tar.gz
luajit-2aec641e01ab80e86ea75d944c0919fa6c03c37c.tar.bz2
luajit-2aec641e01ab80e86ea75d944c0919fa6c03c37c.zip
MIPS64: Avoid unaligned load in lj_vm_exit_interp.
Thanks to Sergey Kaplun. #1428
Diffstat (limited to 'src/vm_mips64.dasc')
-rw-r--r--src/vm_mips64.dasc9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/vm_mips64.dasc b/src/vm_mips64.dasc
index 310269ce..41587e14 100644
--- a/src/vm_mips64.dasc
+++ b/src/vm_mips64.dasc
@@ -2582,9 +2582,8 @@ static void build_subroutines(BuildCtx *ctx)
2582 | li TISNIL, LJ_TNIL 2582 | li TISNIL, LJ_TNIL
2583 | li TISNUM, LJ_TISNUM // Setup type comparison constants. 2583 | li TISNUM, LJ_TISNUM // Setup type comparison constants.
2584 | .FPU mtc1 TMP3, TOBIT 2584 | .FPU mtc1 TMP3, TOBIT
2585 | ld TMP1, LFUNC:RB->pc 2585 | ld TMP3, LFUNC:RB->pc
2586 | sd r0, DISPATCH_GL(jit_base)(DISPATCH) 2586 | sd r0, DISPATCH_GL(jit_base)(DISPATCH)
2587 | ld KBASE, PC2PROTO(k)(TMP1)
2588 | .FPU cvt.d.s TOBIT, TOBIT 2587 | .FPU cvt.d.s TOBIT, TOBIT
2589 | // Modified copy of ins_next which handles function header dispatch, too. 2588 | // Modified copy of ins_next which handles function header dispatch, too.
2590 | lw INS, 0(PC) 2589 | lw INS, 0(PC)
@@ -2602,6 +2601,7 @@ static void build_subroutines(BuildCtx *ctx)
2602 | decode_RA8a RA, INS 2601 | decode_RA8a RA, INS
2603 | beqz TMP2, >2 2602 | beqz TMP2, >2
2604 |. decode_RA8b RA 2603 |. decode_RA8b RA
2604 | ld KBASE, PC2PROTO(k)(TMP3)
2605 | jr AT 2605 | jr AT
2606 |. decode_RD8b RD 2606 |. decode_RD8b RD
2607 |2: 2607 |2:
@@ -2619,8 +2619,8 @@ static void build_subroutines(BuildCtx *ctx)
2619 | dsubu TMP1, BASE, TMP0 2619 | dsubu TMP1, BASE, TMP0
2620 | ld LFUNC:TMP2, -32(TMP1) 2620 | ld LFUNC:TMP2, -32(TMP1)
2621 | cleartp LFUNC:TMP2 2621 | cleartp LFUNC:TMP2
2622 | ld TMP1, LFUNC:TMP2->pc 2622 | ld TMP3, LFUNC:TMP2->pc
2623 | ld KBASE, PC2PROTO(k)(TMP1) 2623 | ld KBASE, PC2PROTO(k)(TMP3)
2624 |3: 2624 |3:
2625 | daddiu RC, MULTRES, -8 2625 | daddiu RC, MULTRES, -8
2626 | jr AT 2626 | jr AT
@@ -2639,6 +2639,7 @@ static void build_subroutines(BuildCtx *ctx)
2639 | ld AT, GG_DISP2STATIC(TMP0) 2639 | ld AT, GG_DISP2STATIC(TMP0)
2640 | decode_RA8a RA, INS 2640 | decode_RA8a RA, INS
2641 | decode_RD8b RD 2641 | decode_RD8b RD
2642 | ld KBASE, PC2PROTO(k)(TMP3)
2642 | jr AT 2643 | jr AT
2643 |. decode_RA8b RA 2644 |. decode_RA8b RA
2644 | 2645 |