[flashrom] [commit] r694 - trunk

svn at flashrom.org svn at flashrom.org
Wed Aug 19 17:19:19 CEST 2009


Author: hailfinger
Date: 2009-08-19 17:19:18 +0200 (Wed, 19 Aug 2009)
New Revision: 694

Modified:
   trunk/flash.h
   trunk/flashrom.c
   trunk/layout.c
Log:
Flashrom has the ability to use layout files with romentries, but this
feature was not adapted to the programmer infrastructure and had
undefined behaviour for flasher!=internal.
The romentry handling had an off-by-one error which caused all copies to
end up one byte short.
Fix these issues.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
Acked-by: Stefan Reinauer <stepan at coresystems.de>


Modified: trunk/flash.h
===================================================================
--- trunk/flash.h	2009-08-19 15:03:28 UTC (rev 693)
+++ trunk/flash.h	2009-08-19 15:19:18 UTC (rev 694)
@@ -422,7 +422,7 @@
 int show_id(uint8_t *bios, int size, int force);
 int read_romlayout(char *name);
 int find_romentry(char *name);
-int handle_romentries(uint8_t *buffer, uint8_t *content);
+int handle_romentries(uint8_t *buffer, struct flashchip *flash);
 
 /* cbtable.c */
 int coreboot_init(void);

Modified: trunk/flashrom.c
===================================================================
--- trunk/flashrom.c	2009-08-19 15:03:28 UTC (rev 693)
+++ trunk/flashrom.c	2009-08-19 15:19:18 UTC (rev 694)
@@ -930,8 +930,7 @@
 
 	// This should be moved into each flash part's code to do it 
 	// cleanly. This does the job.
-	/* FIXME: Adapt to the external flasher infrastructure. */
-	handle_romentries(buf, (uint8_t *) flash->virtual_memory);
+	handle_romentries(buf, flash);
 
 	// ////////////////////////////////////////////////////////////
 

Modified: trunk/layout.c
===================================================================
--- trunk/layout.c	2009-08-19 15:03:28 UTC (rev 693)
+++ trunk/layout.c	2009-08-19 15:19:18 UTC (rev 694)
@@ -196,11 +196,11 @@
 	return -1;
 }
 
-int handle_romentries(uint8_t *buffer, uint8_t *content)
+int handle_romentries(uint8_t *buffer, struct flashchip *flash)
 {
 	int i;
 
-	// This function does not safe flash write cycles.
+	// This function does not save flash write cycles.
 	// 
 	// Also it does not cope with overlapping rom layout
 	// sections. 
@@ -220,10 +220,9 @@
 		if (rom_entries[i].included)
 			continue;
 
-	/* FIXME: Adapt to the external flasher infrastructure. */
-		memcpy(buffer + rom_entries[i].start,
-		       content + rom_entries[i].start,
-		       rom_entries[i].end - rom_entries[i].start);
+		flash->read(flash, buffer + rom_entries[i].start,
+			    rom_entries[i].start,
+			    rom_entries[i].end - rom_entries[i].start + 1);
 	}
 
 	return 0;





More information about the flashrom mailing list