aboutsummaryrefslogtreecommitdiff
path: root/dynasm/dasm_mips.h
diff options
context:
space:
mode:
authorMike Pall <mike>2020-01-20 22:15:45 +0100
committerMike Pall <mike>2020-01-20 22:15:45 +0100
commit94d0b53004a5fa368defa4307a17edcdb87fe727 (patch)
tree2468fb7d60f39ccadcd696d333c83ef49f3dfc02 /dynasm/dasm_mips.h
parentdfa692b746c9de067857d5fc992a41730be3d99a (diff)
downloadluajit-94d0b53004a5fa368defa4307a17edcdb87fe727.tar.gz
luajit-94d0b53004a5fa368defa4307a17edcdb87fe727.tar.bz2
luajit-94d0b53004a5fa368defa4307a17edcdb87fe727.zip
MIPS: Add MIPS64 R6 port.
Contributed by Hua Zhang, YunQiang Su from Wave Computing, and Radovan Birdic from RT-RK. Sponsored by Wave Computing.
Diffstat (limited to 'dynasm/dasm_mips.h')
-rw-r--r--dynasm/dasm_mips.h13
1 files changed, 7 insertions, 6 deletions
diff --git a/dynasm/dasm_mips.h b/dynasm/dasm_mips.h
index 71a835b2..7d06aa72 100644
--- a/dynasm/dasm_mips.h
+++ b/dynasm/dasm_mips.h
@@ -355,14 +355,15 @@ int dasm_encode(Dst_DECL, void *buffer)
355 CK(n >= 0, UNDEF_PC); 355 CK(n >= 0, UNDEF_PC);
356 n = *DASM_POS2PTR(D, n); 356 n = *DASM_POS2PTR(D, n);
357 if (ins & 2048) 357 if (ins & 2048)
358 n = n - (int)((char *)cp - base);
359 else
360 n = (n + (int)(size_t)base) & 0x0fffffff; 358 n = (n + (int)(size_t)base) & 0x0fffffff;
361 patchrel: 359 else
360 n = n - (int)((char *)cp - base);
361 patchrel: {
362 unsigned int e = 16 + ((ins >> 12) & 15);
362 CK((n & 3) == 0 && 363 CK((n & 3) == 0 &&
363 ((n + ((ins & 2048) ? 0x00020000 : 0)) >> 364 ((n + ((ins & 2048) ? 0 : (1<<(e+1)))) >> (e+2)) == 0, RANGE_REL);
364 ((ins & 2048) ? 18 : 28)) == 0, RANGE_REL); 365 cp[-1] |= ((n>>2) & ((1<<e)-1));
365 cp[-1] |= ((n>>2) & ((ins & 2048) ? 0x0000ffff: 0x03ffffff)); 366 }
366 break; 367 break;
367 case DASM_LABEL_LG: 368 case DASM_LABEL_LG:
368 ins &= 2047; if (ins >= 20) D->globals[ins-10] = (void *)(base + n); 369 ins &= 2047; if (ins >= 20) D->globals[ins-10] = (void *)(base + n);