[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[1924]
From: |
Robert Millan |
Subject: |
[1924] |
Date: |
Thu, 20 Nov 2008 20:30:26 +0000 |
Revision: 1924
http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=1924
Author: robertmh
Date: 2008-11-20 20:30:24 +0000 (Thu, 20 Nov 2008)
Log Message:
-----------
Harmonize ieee1275's grub_available_iterate() with the generic
grub_machine_mmap_iterate() interface (fixes a recently-introduced
build problem on i386-ieee1275):
* kern/ieee1275/openfw.c (grub_available_iterate): Moved from here ...
* kern/ieee1275/mmap.c (grub_machine_mmap_iterate): ... here. Add third
parameter `type'. Update all users of this function.
* conf/i386-ieee1275.rmk (kernel_elf_SOURCES): Add
`kern/ieee1275/mmap.c'.
* kern/ieee1275/init.c
* include/grub/ieee1275/ieee1275.h (grub_available_iterate): Replace
with ...
(grub_machine_mmap_iterate): ... this.
* include/grub/i386/pc/memory.h (grub_machine_mmap_iterate): Change
return type to `grub_err_t'. Update all implementations of this
function prototype.
* include/grub/i386/coreboot/memory.h (grub_machine_mmap_iterate):
Likewise.
Modified Paths:
--------------
trunk/grub2/ChangeLog
trunk/grub2/DISTLIST
trunk/grub2/conf/i386-ieee1275.mk
trunk/grub2/conf/i386-ieee1275.rmk
trunk/grub2/include/grub/i386/coreboot/memory.h
trunk/grub2/include/grub/i386/pc/memory.h
trunk/grub2/include/grub/ieee1275/ieee1275.h
trunk/grub2/kern/i386/multiboot_mmap.c
trunk/grub2/kern/i386/pc/mmap.c
trunk/grub2/kern/ieee1275/init.c
trunk/grub2/kern/ieee1275/openfw.c
Added Paths:
-----------
trunk/grub2/kern/ieee1275/mmap.c
Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog 2008-11-20 20:25:30 UTC (rev 1923)
+++ trunk/grub2/ChangeLog 2008-11-20 20:30:24 UTC (rev 1924)
@@ -12,6 +12,24 @@
* loader/i386/linux.c (allocate_pages): Fix a warning.
Move comment text to `#error' stanza.
+ Harmonize ieee1275's grub_available_iterate() with the generic
+ grub_machine_mmap_iterate() interface (fixes a recently-introduced
+ build problem on i386-ieee1275):
+ * kern/ieee1275/openfw.c (grub_available_iterate): Moved from here ...
+ * kern/ieee1275/mmap.c (grub_machine_mmap_iterate): ... here. Add third
+ parameter `type'. Update all users of this function.
+ * conf/i386-ieee1275.rmk (kernel_elf_SOURCES): Add
+ `kern/ieee1275/mmap.c'.
+ * kern/ieee1275/init.c
+ * include/grub/ieee1275/ieee1275.h (grub_available_iterate): Replace
+ with ...
+ (grub_machine_mmap_iterate): ... this.
+ * include/grub/i386/pc/memory.h (grub_machine_mmap_iterate): Change
+ return type to `grub_err_t'. Update all implementations of this
+ function prototype.
+ * include/grub/i386/coreboot/memory.h (grub_machine_mmap_iterate):
+ Likewise.
+
2008-11-19 Robert Millan <address@hidden>
* loader/i386/pc/linux.c (grub_rescue_cmd_initrd): Fix a typo.
Modified: trunk/grub2/DISTLIST
===================================================================
--- trunk/grub2/DISTLIST 2008-11-20 20:25:30 UTC (rev 1923)
+++ trunk/grub2/DISTLIST 2008-11-20 20:30:24 UTC (rev 1924)
@@ -334,6 +334,7 @@
kern/ieee1275/cmain.c
kern/ieee1275/ieee1275.c
kern/ieee1275/init.c
+kern/ieee1275/mmap.c
kern/ieee1275/openfw.c
kern/powerpc/cache.S
kern/powerpc/dl.c
Modified: trunk/grub2/conf/i386-ieee1275.mk
===================================================================
--- trunk/grub2/conf/i386-ieee1275.mk 2008-11-20 20:25:30 UTC (rev 1923)
+++ trunk/grub2/conf/i386-ieee1275.mk 2008-11-20 20:30:24 UTC (rev 1924)
@@ -14,6 +14,7 @@
# For kernel.elf.
kernel_elf_SOURCES = kern/i386/ieee1275/startup.S kern/i386/ieee1275/init.c \
kern/ieee1275/init.c \
+ kern/ieee1275/mmap.c \
kern/ieee1275/cmain.c kern/ieee1275/openfw.c \
kern/main.c kern/device.c \
kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
@@ -26,11 +27,11 @@
term/ieee1275/ofconsole.c \
disk/ieee1275/ofdisk.c \
symlist.c
-CLEANFILES += kernel.elf kernel_elf-kern_i386_ieee1275_startup.o
kernel_elf-kern_i386_ieee1275_init.o kernel_elf-kern_ieee1275_init.o
kernel_elf-kern_ieee1275_cmain.o kernel_elf-kern_ieee1275_openfw.o
kernel_elf-kern_main.o kernel_elf-kern_device.o kernel_elf-kern_disk.o
kernel_elf-kern_dl.o kernel_elf-kern_file.o kernel_elf-kern_fs.o
kernel_elf-kern_err.o kernel_elf-kern_misc.o kernel_elf-kern_mm.o
kernel_elf-kern_loader.o kernel_elf-kern_rescue.o kernel_elf-kern_term.o
kernel_elf-kern_i386_dl.o kernel_elf-kern_parser.o kernel_elf-kern_partition.o
kernel_elf-kern_env.o kernel_elf-kern_time.o
kernel_elf-kern_generic_millisleep.o kernel_elf-kern_ieee1275_ieee1275.o
kernel_elf-term_ieee1275_ofconsole.o kernel_elf-disk_ieee1275_ofdisk.o
kernel_elf-symlist.o
-MOSTLYCLEANFILES += kernel_elf-kern_i386_ieee1275_startup.d
kernel_elf-kern_i386_ieee1275_init.d kernel_elf-kern_ieee1275_init.d
kernel_elf-kern_ieee1275_cmain.d kernel_elf-kern_ieee1275_openfw.d
kernel_elf-kern_main.d kernel_elf-kern_device.d kernel_elf-kern_disk.d
kernel_elf-kern_dl.d kernel_elf-kern_file.d kernel_elf-kern_fs.d
kernel_elf-kern_err.d kernel_elf-kern_misc.d kernel_elf-kern_mm.d
kernel_elf-kern_loader.d kernel_elf-kern_rescue.d kernel_elf-kern_term.d
kernel_elf-kern_i386_dl.d kernel_elf-kern_parser.d kernel_elf-kern_partition.d
kernel_elf-kern_env.d kernel_elf-kern_time.d
kernel_elf-kern_generic_millisleep.d kernel_elf-kern_ieee1275_ieee1275.d
kernel_elf-term_ieee1275_ofconsole.d kernel_elf-disk_ieee1275_ofdisk.d
kernel_elf-symlist.d
+CLEANFILES += kernel.elf kernel_elf-kern_i386_ieee1275_startup.o
kernel_elf-kern_i386_ieee1275_init.o kernel_elf-kern_ieee1275_init.o
kernel_elf-kern_ieee1275_mmap.o kernel_elf-kern_ieee1275_cmain.o
kernel_elf-kern_ieee1275_openfw.o kernel_elf-kern_main.o
kernel_elf-kern_device.o kernel_elf-kern_disk.o kernel_elf-kern_dl.o
kernel_elf-kern_file.o kernel_elf-kern_fs.o kernel_elf-kern_err.o
kernel_elf-kern_misc.o kernel_elf-kern_mm.o kernel_elf-kern_loader.o
kernel_elf-kern_rescue.o kernel_elf-kern_term.o kernel_elf-kern_i386_dl.o
kernel_elf-kern_parser.o kernel_elf-kern_partition.o kernel_elf-kern_env.o
kernel_elf-kern_time.o kernel_elf-kern_generic_millisleep.o
kernel_elf-kern_ieee1275_ieee1275.o kernel_elf-term_ieee1275_ofconsole.o
kernel_elf-disk_ieee1275_ofdisk.o kernel_elf-symlist.o
+MOSTLYCLEANFILES += kernel_elf-kern_i386_ieee1275_startup.d
kernel_elf-kern_i386_ieee1275_init.d kernel_elf-kern_ieee1275_init.d
kernel_elf-kern_ieee1275_mmap.d kernel_elf-kern_ieee1275_cmain.d
kernel_elf-kern_ieee1275_openfw.d kernel_elf-kern_main.d
kernel_elf-kern_device.d kernel_elf-kern_disk.d kernel_elf-kern_dl.d
kernel_elf-kern_file.d kernel_elf-kern_fs.d kernel_elf-kern_err.d
kernel_elf-kern_misc.d kernel_elf-kern_mm.d kernel_elf-kern_loader.d
kernel_elf-kern_rescue.d kernel_elf-kern_term.d kernel_elf-kern_i386_dl.d
kernel_elf-kern_parser.d kernel_elf-kern_partition.d kernel_elf-kern_env.d
kernel_elf-kern_time.d kernel_elf-kern_generic_millisleep.d
kernel_elf-kern_ieee1275_ieee1275.d kernel_elf-term_ieee1275_ofconsole.d
kernel_elf-disk_ieee1275_ofdisk.d kernel_elf-symlist.d
-kernel.elf: $(kernel_elf_DEPENDENCIES) kernel_elf-kern_i386_ieee1275_startup.o
kernel_elf-kern_i386_ieee1275_init.o kernel_elf-kern_ieee1275_init.o
kernel_elf-kern_ieee1275_cmain.o kernel_elf-kern_ieee1275_openfw.o
kernel_elf-kern_main.o kernel_elf-kern_device.o kernel_elf-kern_disk.o
kernel_elf-kern_dl.o kernel_elf-kern_file.o kernel_elf-kern_fs.o
kernel_elf-kern_err.o kernel_elf-kern_misc.o kernel_elf-kern_mm.o
kernel_elf-kern_loader.o kernel_elf-kern_rescue.o kernel_elf-kern_term.o
kernel_elf-kern_i386_dl.o kernel_elf-kern_parser.o kernel_elf-kern_partition.o
kernel_elf-kern_env.o kernel_elf-kern_time.o
kernel_elf-kern_generic_millisleep.o kernel_elf-kern_ieee1275_ieee1275.o
kernel_elf-term_ieee1275_ofconsole.o kernel_elf-disk_ieee1275_ofdisk.o
kernel_elf-symlist.o
- $(TARGET_CC) -o $@ kernel_elf-kern_i386_ieee1275_startup.o
kernel_elf-kern_i386_ieee1275_init.o kernel_elf-kern_ieee1275_init.o
kernel_elf-kern_ieee1275_cmain.o kernel_elf-kern_ieee1275_openfw.o
kernel_elf-kern_main.o kernel_elf-kern_device.o kernel_elf-kern_disk.o
kernel_elf-kern_dl.o kernel_elf-kern_file.o kernel_elf-kern_fs.o
kernel_elf-kern_err.o kernel_elf-kern_misc.o kernel_elf-kern_mm.o
kernel_elf-kern_loader.o kernel_elf-kern_rescue.o kernel_elf-kern_term.o
kernel_elf-kern_i386_dl.o kernel_elf-kern_parser.o kernel_elf-kern_partition.o
kernel_elf-kern_env.o kernel_elf-kern_time.o
kernel_elf-kern_generic_millisleep.o kernel_elf-kern_ieee1275_ieee1275.o
kernel_elf-term_ieee1275_ofconsole.o kernel_elf-disk_ieee1275_ofdisk.o
kernel_elf-symlist.o $(TARGET_LDFLAGS) $(kernel_elf_LDFLAGS)
+kernel.elf: $(kernel_elf_DEPENDENCIES) kernel_elf-kern_i386_ieee1275_startup.o
kernel_elf-kern_i386_ieee1275_init.o kernel_elf-kern_ieee1275_init.o
kernel_elf-kern_ieee1275_mmap.o kernel_elf-kern_ieee1275_cmain.o
kernel_elf-kern_ieee1275_openfw.o kernel_elf-kern_main.o
kernel_elf-kern_device.o kernel_elf-kern_disk.o kernel_elf-kern_dl.o
kernel_elf-kern_file.o kernel_elf-kern_fs.o kernel_elf-kern_err.o
kernel_elf-kern_misc.o kernel_elf-kern_mm.o kernel_elf-kern_loader.o
kernel_elf-kern_rescue.o kernel_elf-kern_term.o kernel_elf-kern_i386_dl.o
kernel_elf-kern_parser.o kernel_elf-kern_partition.o kernel_elf-kern_env.o
kernel_elf-kern_time.o kernel_elf-kern_generic_millisleep.o
kernel_elf-kern_ieee1275_ieee1275.o kernel_elf-term_ieee1275_ofconsole.o
kernel_elf-disk_ieee1275_ofdisk.o kernel_elf-symlist.o
+ $(TARGET_CC) -o $@ kernel_elf-kern_i386_ieee1275_startup.o
kernel_elf-kern_i386_ieee1275_init.o kernel_elf-kern_ieee1275_init.o
kernel_elf-kern_ieee1275_mmap.o kernel_elf-kern_ieee1275_cmain.o
kernel_elf-kern_ieee1275_openfw.o kernel_elf-kern_main.o
kernel_elf-kern_device.o kernel_elf-kern_disk.o kernel_elf-kern_dl.o
kernel_elf-kern_file.o kernel_elf-kern_fs.o kernel_elf-kern_err.o
kernel_elf-kern_misc.o kernel_elf-kern_mm.o kernel_elf-kern_loader.o
kernel_elf-kern_rescue.o kernel_elf-kern_term.o kernel_elf-kern_i386_dl.o
kernel_elf-kern_parser.o kernel_elf-kern_partition.o kernel_elf-kern_env.o
kernel_elf-kern_time.o kernel_elf-kern_generic_millisleep.o
kernel_elf-kern_ieee1275_ieee1275.o kernel_elf-term_ieee1275_ofconsole.o
kernel_elf-disk_ieee1275_ofdisk.o kernel_elf-symlist.o $(TARGET_LDFLAGS)
$(kernel_elf_LDFLAGS)
kernel_elf-kern_i386_ieee1275_startup.o: kern/i386/ieee1275/startup.S
$(kern/i386/ieee1275/startup.S_DEPENDENCIES)
$(TARGET_CC) -Ikern/i386/ieee1275 -I$(srcdir)/kern/i386/ieee1275
$(TARGET_CPPFLAGS) $(TARGET_CFLAGS) $(kernel_elf_CFLAGS) -MD -c -o $@ $<
@@ -44,6 +45,10 @@
$(TARGET_CC) -Ikern/ieee1275 -I$(srcdir)/kern/ieee1275
$(TARGET_CPPFLAGS) $(TARGET_CFLAGS) $(kernel_elf_CFLAGS) -MD -c -o $@ $<
-include kernel_elf-kern_ieee1275_init.d
+kernel_elf-kern_ieee1275_mmap.o: kern/ieee1275/mmap.c
$(kern/ieee1275/mmap.c_DEPENDENCIES)
+ $(TARGET_CC) -Ikern/ieee1275 -I$(srcdir)/kern/ieee1275
$(TARGET_CPPFLAGS) $(TARGET_CFLAGS) $(kernel_elf_CFLAGS) -MD -c -o $@ $<
+-include kernel_elf-kern_ieee1275_mmap.d
+
kernel_elf-kern_ieee1275_cmain.o: kern/ieee1275/cmain.c
$(kern/ieee1275/cmain.c_DEPENDENCIES)
$(TARGET_CC) -Ikern/ieee1275 -I$(srcdir)/kern/ieee1275
$(TARGET_CPPFLAGS) $(TARGET_CFLAGS) $(kernel_elf_CFLAGS) -MD -c -o $@ $<
-include kernel_elf-kern_ieee1275_cmain.d
Modified: trunk/grub2/conf/i386-ieee1275.rmk
===================================================================
--- trunk/grub2/conf/i386-ieee1275.rmk 2008-11-20 20:25:30 UTC (rev 1923)
+++ trunk/grub2/conf/i386-ieee1275.rmk 2008-11-20 20:30:24 UTC (rev 1924)
@@ -13,6 +13,7 @@
# For kernel.elf.
kernel_elf_SOURCES = kern/i386/ieee1275/startup.S kern/i386/ieee1275/init.c \
kern/ieee1275/init.c \
+ kern/ieee1275/mmap.c \
kern/ieee1275/cmain.c kern/ieee1275/openfw.c \
kern/main.c kern/device.c \
kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
Modified: trunk/grub2/include/grub/i386/coreboot/memory.h
===================================================================
--- trunk/grub2/include/grub/i386/coreboot/memory.h 2008-11-20 20:25:30 UTC
(rev 1923)
+++ trunk/grub2/include/grub/i386/coreboot/memory.h 2008-11-20 20:30:24 UTC
(rev 1924)
@@ -24,6 +24,7 @@
#include <grub/i386/pc/memory.h>
#ifndef ASM_FILE
+#include <grub/err.h>
#include <grub/types.h>
#endif
@@ -61,7 +62,7 @@
void grub_machine_mmap_init (void);
-void EXPORT_FUNC(grub_machine_mmap_iterate)
+grub_err_t EXPORT_FUNC(grub_machine_mmap_iterate)
(int NESTED_FUNC_ATTR (*hook) (grub_uint64_t, grub_uint64_t,
grub_uint32_t));
#endif
Modified: trunk/grub2/include/grub/i386/pc/memory.h
===================================================================
--- trunk/grub2/include/grub/i386/pc/memory.h 2008-11-20 20:25:30 UTC (rev
1923)
+++ trunk/grub2/include/grub/i386/pc/memory.h 2008-11-20 20:30:24 UTC (rev
1924)
@@ -24,6 +24,7 @@
#include <grub/machine/machine.h>
#ifndef ASM_FILE
#include <grub/types.h>
+#include <grub/err.h>
#endif
/* The scratch buffer used in real mode code. */
@@ -94,7 +95,7 @@
grub_uint32_t type;
} __attribute__((packed));
-void EXPORT_FUNC(grub_machine_mmap_iterate)
+grub_err_t EXPORT_FUNC(grub_machine_mmap_iterate)
(int NESTED_FUNC_ATTR (*hook) (grub_uint64_t, grub_uint64_t,
grub_uint32_t));
#endif
Modified: trunk/grub2/include/grub/ieee1275/ieee1275.h
===================================================================
--- trunk/grub2/include/grub/ieee1275/ieee1275.h 2008-11-20 20:25:30 UTC
(rev 1923)
+++ trunk/grub2/include/grub/ieee1275/ieee1275.h 2008-11-20 20:30:24 UTC
(rev 1924)
@@ -167,8 +167,8 @@
(int (*hook) (struct grub_ieee1275_devalias *alias));
grub_err_t EXPORT_FUNC(grub_children_iterate) (char *devpath,
int (*hook) (struct grub_ieee1275_devalias *alias));
-grub_err_t EXPORT_FUNC(grub_available_iterate)
- (int NESTED_FUNC_ATTR (*hook) (grub_uint64_t, grub_uint64_t));
+grub_err_t EXPORT_FUNC(grub_machine_mmap_iterate)
+ (int NESTED_FUNC_ATTR (*hook) (grub_uint64_t, grub_uint64_t,
grub_uint32_t));
int EXPORT_FUNC(grub_claimmap) (grub_addr_t addr, grub_size_t size);
char *EXPORT_FUNC(grub_ieee1275_encode_devname) (const char *path);
Modified: trunk/grub2/kern/i386/multiboot_mmap.c
===================================================================
--- trunk/grub2/kern/i386/multiboot_mmap.c 2008-11-20 20:25:30 UTC (rev
1923)
+++ trunk/grub2/kern/i386/multiboot_mmap.c 2008-11-20 20:30:24 UTC (rev
1924)
@@ -69,7 +69,7 @@
}
}
-void
+grub_err_t
grub_machine_mmap_iterate (int NESTED_FUNC_ATTR (*hook) (grub_uint64_t,
grub_uint64_t, grub_uint32_t))
{
struct grub_multiboot_mmap_entry *entry = (void *)
kern_multiboot_info.mmap_addr;
@@ -81,4 +81,6 @@
entry = (void *) ((grub_addr_t) entry + entry->size + sizeof
(entry->size));
}
+
+ return 0;
}
Modified: trunk/grub2/kern/i386/pc/mmap.c
===================================================================
--- trunk/grub2/kern/i386/pc/mmap.c 2008-11-20 20:25:30 UTC (rev 1923)
+++ trunk/grub2/kern/i386/pc/mmap.c 2008-11-20 20:30:24 UTC (rev 1924)
@@ -18,9 +18,10 @@
#include <grub/machine/init.h>
#include <grub/machine/memory.h>
+#include <grub/err.h>
#include <grub/types.h>
-void
+grub_err_t
grub_machine_mmap_iterate (int NESTED_FUNC_ATTR (*hook) (grub_uint64_t,
grub_uint64_t, grub_uint32_t))
{
grub_uint32_t cont;
@@ -57,4 +58,6 @@
else
hook (0x100000, grub_get_memsize (1) << 10,
GRUB_MACHINE_MEMORY_AVAILABLE);
}
+
+ return 0;
}
Modified: trunk/grub2/kern/ieee1275/init.c
===================================================================
--- trunk/grub2/kern/ieee1275/init.c 2008-11-20 20:25:30 UTC (rev 1923)
+++ trunk/grub2/kern/ieee1275/init.c 2008-11-20 20:30:24 UTC (rev 1924)
@@ -130,9 +130,12 @@
{
unsigned long total = 0;
- auto int NESTED_FUNC_ATTR heap_init (grub_uint64_t addr, grub_uint64_t len);
- int NESTED_FUNC_ATTR heap_init (grub_uint64_t addr, grub_uint64_t len)
+ auto int NESTED_FUNC_ATTR heap_init (grub_uint64_t addr, grub_uint64_t len,
grub_uint32_t type);
+ int NESTED_FUNC_ATTR heap_init (grub_uint64_t addr, grub_uint64_t len,
grub_uint32_t type)
{
+ if (type != 1)
+ return 0;
+
len -= 1; /* Required for some firmware. */
/* Never exceed HEAP_MAX_SIZE */
@@ -174,9 +177,9 @@
}
if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_CANNOT_INTERPRET))
- heap_init (HEAP_MAX_ADDR - HEAP_MIN_SIZE, HEAP_MIN_SIZE);
+ heap_init (HEAP_MAX_ADDR - HEAP_MIN_SIZE, HEAP_MIN_SIZE, 1);
else
- grub_available_iterate (heap_init);
+ grub_machine_mmap_iterate (heap_init);
}
#ifdef __i386__
@@ -187,10 +190,10 @@
static void
grub_get_extended_memory (void)
{
- auto int NESTED_FUNC_ATTR find_ext_mem (grub_uint64_t addr, grub_uint64_t
len);
- int NESTED_FUNC_ATTR find_ext_mem (grub_uint64_t addr, grub_uint64_t len)
+ auto int NESTED_FUNC_ATTR find_ext_mem (grub_uint64_t addr, grub_uint64_t
len, grub_uint32_t type);
+ int NESTED_FUNC_ATTR find_ext_mem (grub_uint64_t addr, grub_uint64_t len,
grub_uint32_t type)
{
- if (addr == 0x100000)
+ if (type == 1 && addr == 0x100000)
{
grub_upper_mem = len;
return 1;
@@ -199,7 +202,7 @@
return 0;
}
- grub_available_iterate (find_ext_mem);
+ grub_machine_mmap_iterate (find_ext_mem);
}
#endif
Added: trunk/grub2/kern/ieee1275/mmap.c
===================================================================
--- trunk/grub2/kern/ieee1275/mmap.c (rev 0)
+++ trunk/grub2/kern/ieee1275/mmap.c 2008-11-20 20:30:24 UTC (rev 1924)
@@ -0,0 +1,71 @@
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2003,2004,2005,2007,2008 Free Software Foundation, Inc.
+ *
+ * GRUB is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GRUB is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <grub/machine/memory.h>
+#include <grub/ieee1275/ieee1275.h>
+#include <grub/types.h>
+
+grub_err_t
+grub_machine_mmap_iterate (int NESTED_FUNC_ATTR (*hook) (grub_uint64_t,
grub_uint64_t, grub_uint32_t))
+{
+ grub_ieee1275_phandle_t root;
+ grub_ieee1275_phandle_t memory;
+ grub_uint32_t available[32];
+ grub_ssize_t available_size;
+ grub_uint32_t address_cells = 1;
+ grub_uint32_t size_cells = 1;
+ int i;
+
+ /* Determine the format of each entry in `available'. */
+ grub_ieee1275_finddevice ("/", &root);
+ grub_ieee1275_get_integer_property (root, "#address-cells", &address_cells,
+ sizeof address_cells, 0);
+ grub_ieee1275_get_integer_property (root, "#size-cells", &size_cells,
+ sizeof size_cells, 0);
+
+ /* Load `/memory/available'. */
+ if (grub_ieee1275_finddevice ("/memory", &memory))
+ return grub_error (GRUB_ERR_UNKNOWN_DEVICE,
+ "Couldn't find /memory node");
+ if (grub_ieee1275_get_integer_property (memory, "available", available,
+ sizeof available, &available_size))
+ return grub_error (GRUB_ERR_UNKNOWN_DEVICE,
+ "Couldn't examine /memory/available property");
+
+ /* Decode each entry and call `hook'. */
+ i = 0;
+ available_size /= sizeof (grub_uint32_t);
+ while (i < available_size)
+ {
+ grub_uint64_t address;
+ grub_uint64_t size;
+
+ address = available[i++];
+ if (address_cells == 2)
+ address = (address << 32) | available[i++];
+
+ size = available[i++];
+ if (size_cells == 2)
+ size = (size << 32) | available[i++];
+
+ if (hook (address, size, GRUB_MACHINE_MEMORY_AVAILABLE))
+ break;
+ }
+
+ return grub_errno;
+}
Modified: trunk/grub2/kern/ieee1275/openfw.c
===================================================================
--- trunk/grub2/kern/ieee1275/openfw.c 2008-11-20 20:25:30 UTC (rev 1923)
+++ trunk/grub2/kern/ieee1275/openfw.c 2008-11-20 20:30:24 UTC (rev 1924)
@@ -147,55 +147,6 @@
return 0;
}
-grub_err_t grub_available_iterate (int NESTED_FUNC_ATTR (*hook)
(grub_uint64_t, grub_uint64_t))
-{
- grub_ieee1275_phandle_t root;
- grub_ieee1275_phandle_t memory;
- grub_uint32_t available[32];
- grub_ssize_t available_size;
- grub_uint32_t address_cells = 1;
- grub_uint32_t size_cells = 1;
- int i;
-
- /* Determine the format of each entry in `available'. */
- grub_ieee1275_finddevice ("/", &root);
- grub_ieee1275_get_integer_property (root, "#address-cells", &address_cells,
- sizeof address_cells, 0);
- grub_ieee1275_get_integer_property (root, "#size-cells", &size_cells,
- sizeof size_cells, 0);
-
- /* Load `/memory/available'. */
- if (grub_ieee1275_finddevice ("/memory", &memory))
- return grub_error (GRUB_ERR_UNKNOWN_DEVICE,
- "Couldn't find /memory node");
- if (grub_ieee1275_get_integer_property (memory, "available", available,
- sizeof available, &available_size))
- return grub_error (GRUB_ERR_UNKNOWN_DEVICE,
- "Couldn't examine /memory/available property");
-
- /* Decode each entry and call `hook'. */
- i = 0;
- available_size /= sizeof (grub_uint32_t);
- while (i < available_size)
- {
- grub_uint64_t address;
- grub_uint64_t size;
-
- address = available[i++];
- if (address_cells == 2)
- address = (address << 32) | available[i++];
-
- size = available[i++];
- if (size_cells == 2)
- size = (size << 32) | available[i++];
-
- if (hook (address, size))
- break;
- }
-
- return grub_errno;
-}
-
/* Call the "map" method of /chosen/mmu. */
static int
grub_map (grub_addr_t phys, grub_addr_t virt, grub_uint32_t size,
[Prev in Thread] |
Current Thread |
[Next in Thread] |