ref: 9a912b05ebddfd833b9e987326e3a15bf1db8b38
parent: 6397d1b59f175dc06428a6378ea9ac5548d94e59
author: mia soweli <mia@soweli.net>
date: Thu Jun 5 18:11:15 EDT 2025
v[al], libmach: add LL (load-linked) and SC (store-conditional)
--- a/sys/src/cmd/va/lex.c
+++ b/sys/src/cmd/va/lex.c
@@ -334,6 +334,8 @@
"MOVWR", LTYPE3, AMOVWR,
"MOVVL", LTYPE3, AMOVVL,
"MOVVR", LTYPE3, AMOVVR,
+ "LL", LTYPE3, ALL,
+ "SC", LTYPE3, ASC,
"BREAK", LTYPEJ, ABREAK, /* overloaded CACHE opcode */
"END", LTYPE4, AEND,
--- a/sys/src/cmd/vc/v.out.h
+++ b/sys/src/cmd/vc/v.out.h
@@ -155,6 +155,9 @@
ASIGNAME,
+ ALL,
+ ASC,
+
ALAST,
};
--- a/sys/src/cmd/vl/asm.c
+++ b/sys/src/cmd/vl/asm.c
@@ -1470,6 +1470,9 @@
case AADDV: return SP(3,0);
case AADDVU: return SP(3,1);
+
+ case ALL: return SP(6,0);
+ case ASC: return SP(7,0);
}
diag("bad irr %d", a);
return 0;
--- a/sys/src/cmd/vl/optab.c
+++ b/sys/src/cmd/vl/optab.c
@@ -228,5 +228,8 @@
{ ACASE, C_REG, C_NONE, C_NONE, 45, 28, 0 },
{ ABCASE, C_LCON, C_NONE, C_LBRA, 46, 4, 0 },
+ { ALL, C_REG, C_NONE, C_SOREG, 7, 4, REGZERO },
+ { ASC, C_REG, C_NONE, C_SOREG, 7, 4, REGZERO },
+
{ AXXX, C_NONE, C_NONE, C_NONE, 0, 4, 0 },
};
--- a/sys/src/cmd/vl/span.c
+++ b/sys/src/cmd/vl/span.c
@@ -612,6 +612,8 @@
case AMOVV:
buildrep(8, AMOVV);
break;
+ case ALL:
+ case ASC:
case ABREAK:
case AWORD:
case ARFE:
--- a/sys/src/libmach/vdb.c
+++ b/sys/src/libmach/vdb.c
@@ -559,7 +559,7 @@
"MOVVR", store, mipsstore,
"swr", 0, mipscoload,
"CACHE", 0, "%C,%l",
- "ll", 0, mipscoload,
+ "LL", 0, mipscoload,
"MOVW", lwc1, mipscoload,
"lwc2", 0, mipscoload,
"lwc3", 0, mipscoload,
@@ -567,7 +567,7 @@
"ldc1", 0, mipscoload,
"ldc2", 0, mipscoload,
"MOVV", load, mipsload,
- "sc", 0, mipscoload,
+ "SC", 0, mipscoload,
"swc1", swc1, mipscoload,
"swc2", 0, mipscoload,
"swc3", 0, mipscoload,
--
⑨