diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-06-06 15:44:17 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-06-06 15:44:17 +0200 |
commit | a8f64e53fe2a2a27440dd9441800e8210cb1a00f (patch) | |
tree | 49ef63b4b27ae1a289b337ea7e4f3419ba9ad7f5 /sys/src | |
parent | 6184a4ef2eba1d49f0386e9ce94f4877d3d9edb2 (diff) |
archacpi: use 64-bit uvlong for physical addresses
Diffstat (limited to 'sys/src')
-rw-r--r-- | sys/src/9/pc/archacpi.c | 18 |
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) |