shithub: front

Download patch

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,
--