]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2008-01-15 Robert Millan <rmh@aybabtu.com>
authorrobertmh <robertmh@localhost>
Tue, 15 Jan 2008 16:14:33 +0000 (16:14 +0000)
committerrobertmh <robertmh@localhost>
Tue, 15 Jan 2008 16:14:33 +0000 (16:14 +0000)
        * include/grub/ieee1275/ieee1275.h
        (grub_ieee1275_get_integer_property): New function prototype.

        * kern/ieee1275/ieee1275.c: Include `<grub/types.h>'.
        (grub_ieee1275_get_integer_property): New function.  Wraps around
        grub_ieee1275_get_property() to handle endianess.

        * kern/powerpc/ieee1275/cmain.c (grub_ieee1275_find_options): Replace
        grub_ieee1275_get_property() with grub_ieee1275_get_integer_property()
        where appropiate.
        * kern/powerpc/ieee1275/openfw.c (grub_available_iterate): Likewise.
        (grub_map): Likewise.
        * kern/sparc64/ieee1275/openfw.c (grub_map): Likewise.

ChangeLog
include/grub/ieee1275/ieee1275.h
kern/ieee1275/ieee1275.c
kern/powerpc/ieee1275/cmain.c
kern/powerpc/ieee1275/openfw.c
kern/sparc64/ieee1275/openfw.c

index ae1efed752ae633d5c83fea02bf2ea186ae4dade..2b1322427bbeb2a033d5399fa61662c740b7d148 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2008-01-15  Robert Millan  <rmh@aybabtu.com>
+
+       * include/grub/ieee1275/ieee1275.h
+       (grub_ieee1275_get_integer_property): New function prototype.
+
+       * kern/ieee1275/ieee1275.c: Include `<grub/types.h>'.
+       (grub_ieee1275_get_integer_property): New function.  Wraps around
+       grub_ieee1275_get_property() to handle endianess.
+
+       * kern/powerpc/ieee1275/cmain.c (grub_ieee1275_find_options): Replace
+       grub_ieee1275_get_property() with grub_ieee1275_get_integer_property()
+       where appropiate.
+       * kern/powerpc/ieee1275/openfw.c (grub_available_iterate): Likewise.
+       (grub_map): Likewise.
+       * kern/sparc64/ieee1275/openfw.c (grub_map): Likewise.
+
 2008-01-15  Bean  <bean123ch@gmail.com>
 
        * normal/execute.c (grub_script_exec_argument_to_string): Check for undefined variable.
index 6fe5cd1a5a556be9b9ddbfb91c2a0bd9b0295596..57285d8012f7efc1a49d25fd6de485647988eef5 100644 (file)
@@ -97,6 +97,10 @@ int EXPORT_FUNC(grub_ieee1275_get_property) (grub_ieee1275_phandle_t phandle,
                                             const char *property, void *buf,
                                             grub_size_t size,
                                             grub_ssize_t *actual);
+int EXPORT_FUNC(grub_ieee1275_get_integer_property) (grub_ieee1275_phandle_t phandle,
+                                                    const char *property, grub_uint32_t *buf,
+                                                    grub_size_t size,
+                                                    grub_ssize_t *actual);
 int EXPORT_FUNC(grub_ieee1275_next_property) (grub_ieee1275_phandle_t phandle,
                                              char *prev_prop, char *prop);
 int EXPORT_FUNC(grub_ieee1275_get_property_length) 
index 0c45c412b7b7cab452224b0b4676fbc454acb942..69233ccd40eee6927376f8af3fa7953d64f97838 100644 (file)
@@ -18,6 +18,7 @@
  */
 
 #include <grub/ieee1275/ieee1275.h>
+#include <grub/types.h>
 
 #define IEEE1275_PHANDLE_INVALID  ((grub_ieee1275_phandle_t) -1)
 #define IEEE1275_IHANDLE_INVALID  ((grub_ieee1275_ihandle_t) 0)
@@ -88,6 +89,26 @@ grub_ieee1275_get_property (grub_ieee1275_phandle_t phandle,
   return 0;
 }
 
+int
+grub_ieee1275_get_integer_property (grub_ieee1275_phandle_t phandle,
+                                   const char *property, grub_uint32_t *buf,
+                                   grub_size_t size, grub_ssize_t *actual)
+{
+  int ret;
+  ret = grub_ieee1275_get_property (phandle, property, (void *) buf, size, actual);
+#ifndef GRUB_CPU_WORDS_BIGENDIAN
+  /* Integer properties are always in big endian.  */
+  if (ret == 0)
+    {
+      int i;
+      size /= sizeof (grub_uint32_t);
+      for (i = 0; i < size; i++)
+       buf[i] = grub_be_to_cpu32 (buf[i]);
+    }
+#endif
+  return ret;
+}
+
 int
 grub_ieee1275_next_property (grub_ieee1275_phandle_t phandle, char *prev_prop,
                             char *prop)
index c9d13f059ca8c601af6501d1177f26e3750c3512..f560a03e6927809ed8f79be6a2ce3a5fdc02be53 100644 (file)
@@ -56,8 +56,8 @@ grub_ieee1275_find_options (void)
   int is_smartfirmware = 0;
 
   grub_ieee1275_finddevice ("/options", &options);
-  rc = grub_ieee1275_get_property (options, "real-mode?", &realmode,
-                                  sizeof realmode, 0);
+  rc = grub_ieee1275_get_integer_property (options, "real-mode?", &realmode,
+                                          sizeof realmode, 0);
   if ((rc >= 0) && realmode)
     grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_REAL_MODE);
 
index af42eadea95f301593f856489b3d68d3cec0d875..7e4f5c5659dfa2d5b1d0061d0501a6f7932ebcda 100644 (file)
@@ -148,17 +148,17 @@ grub_err_t grub_available_iterate (int (*hook) (grub_uint64_t, grub_uint64_t))
 
   /* Determine the format of each entry in `available'.  */
   grub_ieee1275_finddevice ("/", &root);
-  grub_ieee1275_get_property (root, "#address-cells", &address_cells,
-       sizeof address_cells, 0);
-  grub_ieee1275_get_property (root, "#size-cells", &size_cells,
-       sizeof size_cells, 0);
+  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_property (memory, "available", available,
-                                 sizeof available, &available_size))
+  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");
 
@@ -203,8 +203,8 @@ grub_map (grub_addr_t phys, grub_addr_t virt, grub_uint32_t size,
   grub_ieee1275_ihandle_t mmu;
   int len;
 
-  grub_ieee1275_get_property (grub_ieee1275_chosen, "mmu", &mmu, sizeof mmu,
-                             &len);
+  grub_ieee1275_get_integer_property (grub_ieee1275_chosen, "mmu", &mmu, sizeof mmu,
+                                     &len);
   if (len != sizeof mmu)
     return -1;
 
index 03c6a66ecc3d6d883278ee1cd3f9647f788dfcd7..fe9ee96ce8d6a354360cb9eb7ae337593961d402 100644 (file)
@@ -183,8 +183,8 @@ grub_map (grub_addr_t phys, grub_addr_t virt, grub_uint32_t size,
   grub_ieee1275_ihandle_t mmu;
   grub_ssize_t len;
 
-  grub_ieee1275_get_property (grub_ieee1275_chosen, "mmu", &mmu, sizeof mmu,
-                             &len);
+  grub_ieee1275_get_integer_property (grub_ieee1275_chosen, "mmu", &mmu, sizeof mmu,
+                                     &len);
   if (len != sizeof mmu)
     return -1;