git: 9front

Download patch

ref: 4cea4131bed5b6be44f0bb7101385a39b29c0d57
parent: fd5b5ac42d618c9c18740ca9b1f106eee1708221
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sun May 25 20:45:10 EDT 2014

pc64: fix ulongs for address of devarchs realmodemem file

--- a/sys/src/9/pc/devarch.c
+++ b/sys/src/9/pc/devarch.c
@@ -1010,20 +1010,22 @@
 static long
 rmemrw(int isr, void *a, long n, vlong off)
 {
+	uintptr addr = off;
+
 	if(off < 0 || n < 0)
 		error("bad offset/count");
 	if(isr){
-		if(off >= MB)
+		if(addr >= MB)
 			return 0;
-		if(off+n >= MB)
-			n = MB - off;
-		memmove(a, KADDR((ulong)off), n);
+		if(addr+n >= MB)
+			n = MB - addr;
+		memmove(a, KADDR(addr), n);
 	}else{
-		/* allow vga framebuf's access */
-		if(off >= MB || off+n > MB ||
-		    (off < 0xA0000 || off+n > 0xB0000+0x10000))
+		/* allow vga framebuf's write access */
+		if(addr >= MB || addr+n > MB ||
+		    (addr < 0xA0000 || addr+n > 0xB0000+0x10000))
 			error("bad offset/count in write");
-		memmove(KADDR((ulong)off), a, n);
+		memmove(KADDR(addr), a, n);
 	}
 	return n;
 }
--