git: 9front

Download patch

ref: 50d011afe56040c74a0cfaedb3891109858e7003
parent: ea2da76fd5836bf8c17e5b9825a3f4bd931e7355
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sun Jun 5 10:57:38 EDT 2016

aml: define amlintmask and set it according to DSDT revision (64bit / 32bit)

--- a/sys/include/aml.h
+++ b/sys/include/aml.h
@@ -36,6 +36,7 @@
 
 void*		amlroot;
 int		amldebug;
+uvlong		amlintmask;
 
 #pragma	varargck	type	"V"	void*
 #pragma	varargck	type	"N"	void*
--- a/sys/src/9/pc/archacpi.c
+++ b/sys/src/9/pc/archacpi.c
@@ -495,6 +495,7 @@
 	for(i=0; i<ntblmap; i++){
 		t = tblmap[i];
 		if(memcmp(t->sig, "DSDT", 4) == 0){
+			amlintmask = (~0ULL) >> (t->rev <= 1)*32;
 			amlload(t->data, tbldlen(t));
 			break;
 		}
--- a/sys/src/cmd/scram.c
+++ b/sys/src/cmd/scram.c
@@ -69,8 +69,10 @@
 		t = realloc(t, sizeof(*t) + l);
 		if(readn(fd, t->data, l) != l)
 			return -1;
-		if(memcmp("DSDT", t->sig, 4) == 0)
+		if(memcmp("DSDT", t->sig, 4) == 0){
+			amlintmask = (~0ULL) >> (t->rev <= 1)*32;
 			amlload(t->data, l);
+		}
 		else if(memcmp("SSDT", t->sig, 4) == 0)
 			amlload(t->data, l);
 		else if(memcmp("FACP", t->sig, 4) == 0){
--- a/sys/src/libaml/aml.c
+++ b/sys/src/libaml/aml.c
@@ -296,7 +296,7 @@
 	uvlong *v;
 
 	v = mk('i', sizeof(uvlong));
-	*v = i;
+	*v = i & amlintmask;
 	return v;
 }
 
@@ -2138,6 +2138,9 @@
 
 	fmtinstall('V', Vfmt);
 	fmtinstall('N', Nfmt);
+
+	if(!amlintmask)
+		amlintmask = ~0ULL;
 
 	n = mk('N', sizeof(Name));
 	n->up = n;
--