[flashrom] {PATCH] DirectHW: allow zero mapping

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Mon Sep 27 15:59:20 CEST 2010


Add a variant of map_physical to DirectHW so a mapped address of NULL is
not treated as error anymore.

Untested because I lack any machines with Mac OS X

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>

--- DirectIO/darwinio.c~	2010-09-27 15:51:02.000000000 +0200
+++ DirectIO/darwinio.c	2010-09-27 15:53:12.000000000 +0200
@@ -237,7 +237,7 @@
 	return darwin_init();
 }
 
-void *map_physical(unsigned long phys_addr, int len)
+void *map_physical_common(unsigned long phys_addr, int len, void *errorpointer)
 {
 	kern_return_t err;
         vm_address_t addr;
@@ -276,7 +276,7 @@
 		case 0x2cd: printf("Device not Open.\n"); break;
 		}
 
-		return NULL;
+		return errorpointer;
 	}
 
         err = IOConnectMapMemory(connect, 0, mach_task_self(),
@@ -299,7 +299,7 @@
 		case 0x2cd: printf("Device not Open.\n"); break;
 		}
 
-		return NULL;
+		return errorpointer;
 	}
 
 #ifdef DEBUG
@@ -309,6 +309,16 @@
         return (void *)addr;
 }
 
+void *map_physical(unsigned long phys_addr, int len)
+{
+	return map_physical_common(phys_addr, len, NULL);
+}
+
+void *map_physical_allowzero(unsigned long phys_addr, int len)
+{
+	return map_physical_common(phys_addr, len, (void *)-1);
+}
+
 void unmap_physical(void *virt_addr __attribute__((unused)), int len __attribute__((unused)))
 {
 	// Nut'n Honey
--- DirectIO/darwinio.h~	2010-09-27 15:53:42.000000000 +0200
+++ DirectIO/darwinio.h	2010-09-27 15:54:42.000000000 +0200
@@ -21,6 +21,9 @@
 
 #include <stdint.h>
 
+/* Version 1.1.0 */
+#define DARWINIO_VERSION 0x010100
+
 int iopl(int unused);
 
 unsigned char inb(unsigned short addr);
@@ -32,6 +35,7 @@
 void outl(unsigned int val, unsigned short addr);
 
 void *map_physical(unsigned long phys_addr, int len);
+void *map_physical_allowzero(unsigned long phys_addr, int len);
 void unmap_physical(void *virt_addr, int len);
 
 typedef struct { uint32_t hi, lo; } msr_t;


-- 
http://www.hailfinger.org/





More information about the flashrom mailing list