summaryrefslogtreecommitdiff
path: root/sys/src
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2020-06-06 15:44:17 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2020-06-06 15:44:17 +0200
commita8f64e53fe2a2a27440dd9441800e8210cb1a00f (patch)
tree49ef63b4b27ae1a289b337ea7e4f3419ba9ad7f5 /sys/src
parent6184a4ef2eba1d49f0386e9ce94f4877d3d9edb2 (diff)
archacpi: use 64-bit uvlong for physical addresses
Diffstat (limited to 'sys/src')
-rw-r--r--sys/src/9/pc/archacpi.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/sys/src/9/pc/archacpi.c b/sys/src/9/pc/archacpi.c
index 3c020b84f..d74054c7d 100644
--- a/sys/src/9/pc/archacpi.c
+++ b/sys/src/9/pc/archacpi.c
@@ -46,7 +46,7 @@ static Rsd *rsd;
/* physical addresses visited by maptable() */
static int ntblpa;
-static uintptr tblpa[64];
+static uvlong tblpa[64];
/* successfully mapped tables */
static int ntblmap;
@@ -104,18 +104,16 @@ memcheck(uintptr pa, long len)
}
static void
-maptable(uvlong xpa)
+maptable(uvlong pa)
{
uchar *p, *e;
- uintptr pa;
u32int l;
Tbl *t;
int i;
- pa = xpa;
- if((uvlong)pa != xpa || pa == 0 || pa+7 < pa)
+ if(-pa < 8)
return;
-
+
if(ntblpa >= nelem(tblpa) || ntblmap >= nelem(tblmap))
return;
@@ -131,7 +129,7 @@ maptable(uvlong xpa)
l = get32(t->len);
if(l < Tblsz
|| l >= 0x10000000
- || pa+l-1 < pa){
+ || -pa < l){
vunmap(t, 8);
return;
}
@@ -519,7 +517,7 @@ enumec(void *dot, void *)
static long
readmem(Chan*, void *v, long n, vlong o)
{
- uintptr pa = (uintptr)o;
+ uvlong pa = (uvlong)o;
void *t;
if((n = memcheck(pa, n)) <= 0)
@@ -539,7 +537,7 @@ readmem(Chan*, void *v, long n, vlong o)
static long
writemem(Chan*, void *v, long n, vlong o)
{
- uintptr pa = (uintptr)o;
+ uvlong pa = (uvlong)o;
void *t;
if(memcheck(pa, n) != n)
@@ -778,7 +776,7 @@ readtbls(Chan*, void *v, long n, vlong o)
static int
identify(void)
{
- uintptr pa;
+ uvlong pa;
char *cp;
if((cp = getconf("*acpi")) == nil)