[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