[flashrom] [PATCH] new windows port

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Fri Jun 4 02:27:41 CEST 2010


On 09.08.2009 18:01, Stefan Reinauer wrote:
> I separated the direct io access code from the flashrom changes, to make
> this code easily available for the other coreboot utilities, too.
>
> The remaining windows patch is rather small.
>
> I'll clean up the directio code some more and make a release asap.
>   

I cleaned up the Windows patch, rewrote the Makefile changes and updated
it to apply against latest svn.

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

Index: flashrom-windows/hwaccess.h
===================================================================
--- flashrom-windows/hwaccess.h	(Revision 1028)
+++ flashrom-windows/hwaccess.h	(Arbeitskopie)
@@ -31,8 +31,12 @@
 #endif
 
 #if NEED_PCI == 1
+#if defined (__MINGW32_VERSION) && ( defined (__i386__) || defined (__x86_64__) )
+#include "directio.h"
+#else
 #include <pci/pci.h>
 #endif
+#endif
 
 #if defined (__i386__) || defined (__x86_64__)
 
Index: flashrom-windows/physmap.c
===================================================================
--- flashrom-windows/physmap.c	(Revision 1028)
+++ flashrom-windows/physmap.c	(Arbeitskopie)
@@ -30,7 +30,25 @@
 #include <errno.h>
 #include "flash.h"
 
-#ifdef __DJGPP__
+#if defined (__MINGW32_VERSION)
+
+#define MEM_DEV "DirectIO"
+
+void *sys_physmap(unsigned long phys_addr, size_t len)
+{
+	return map_physical_addr_range(phys_addr, len);
+}
+
+#define sys_physmap_rw_uncached	sys_physmap
+#define sys_physmap_ro_cached	sys_physmap
+
+void physunmap(void *virt_addr, size_t len)
+{
+	unmap_physical_addr_range(virt_addr, len);
+}
+
+#elif defined (__DJGPP__)
+
 #include <dpmi.h>
 #include <sys/nearptr.h>
 
Index: flashrom-windows/Makefile
===================================================================
--- flashrom-windows/Makefile	(Revision 1028)
+++ flashrom-windows/Makefile	(Arbeitskopie)
@@ -213,8 +213,11 @@
 endif
 
 ifeq ($(NEED_PCI), yes)
+ifeq ($(OS_ARCH), Windows_NT)
+else
 CHECK_LIBPCI = yes
 endif
+endif
 
 ifeq ($(NEED_PCI), yes)
 FEATURE_CFLAGS += -D'NEED_PCI=1'
@@ -227,10 +230,14 @@
 # FIXME There needs to be a better way to do this
 LIBS += ../libpci/lib/libpci.a ../libgetopt/libgetopt.a
 else
+ifeq ($(OS_ARCH), Windows_NT)
+LIBS += -L. -ldirectio
+else
 LIBS += -lpci
 endif
 endif
 endif
+endif
 
 ifeq ($(CONFIG_PRINT_WIKI), yes)
 FEATURE_CFLAGS += -D'CONFIG_PRINT_WIKI=1'
Index: flashrom-windows/README
===================================================================
--- flashrom-windows/README	(Revision 1028)
+++ flashrom-windows/README	(Arbeitskopie)
@@ -101,6 +101,10 @@
  To run flashrom.exe, download http://clio.rice.edu/djgpp/csdpmi7b.zip and
  make sure CWSDPMI.EXE is in the current directory.
 
+To compile on Windows:
+ Make sure you use gcc for compilation. This can be specified with
+ make CC=gcc
+
 Installation
 ------------
 
Index: flashrom-windows/cbtable.c
===================================================================
--- flashrom-windows/cbtable.c	(Revision 1028)
+++ flashrom-windows/cbtable.c	(Arbeitskopie)
@@ -226,6 +226,12 @@
 			start = forward->forward;
 			start &= ~(getpagesize() - 1);
 			physunmap(table_area, BYTES_TO_MAP);
+#if defined (__MINGW32_VERSION)
+			/* For some reason MINGW/directio does not like
+			 * mapping the high table area yet
+			 */
+			lb_table=NULL;
+#else
 			table_area = physmap_try_ro("high tables", start, BYTES_TO_MAP);
 			if (!table_area) {
 				msg_perr("Failed getting access to coreboot "
@@ -233,6 +239,7 @@
 				return -1;
 			}
 			lb_table = find_lb_table(table_area, 0x00000, 0x1000);
+#endif
 		}
 	}
 


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





More information about the flashrom mailing list