Robert Millan wrote:
On Tue, Oct 23, 2007 at 09:06:16PM +0200, Christian Franke wrote:
+/* Check memory address */
+static int
+addr_is_valid (grub_addr_t addr)
+{
+ volatile unsigned char * p = (volatile unsigned char *)addr;
+ unsigned char x, y;
+ x = *p;
+ *p = x ^ 0xcf;
+ y = *p;
+ *p = x;
+ return y == (x ^ 0xcf);
+}
+
I have a feeling this might be dangerous. Any comments on the warnings
listed here:
http://www.osdev.org/wiki/How_Do_I_Determine_The_Amount_Of_RAM#Counting_RAM_by_direct_probing
?
Specially the bit about memory-mapped PCI.
This code does not check any memory-mapped PCI. It does only check the
boundary returned by the BIOS memory map evaluation code (which didn't
work in the E801 case).
Definitely not mandatory, but a IMO recommended assert-type check for
experimental code.
Besides, if we really want it, perhaps it should be in a separate file so that
other ports can use it if it's needed ?
Good point.
Ah, and why 0xcf instead of 0xff ?
... or 0xaa or 0x55.
c.f. :-)
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel