]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Avoid using tricks for initialising endian variables.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 26 Nov 2010 21:29:19 +0000 (22:29 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 26 Nov 2010 21:29:19 +0000 (22:29 +0100)
* grub-core/partmap/gpt.c (grub_gpt_partition_type_bios_boot):
Make const.
(GRUB_MOD_INIT): Don't byte-swap.
* include/grub/gpt_partition.h (GRUB_GPT_PARTITION_TYPE_BIOS_BOOT):
Use grub_cpu_to_le16_compile_time and grub_cpu_to_le32_compile_time.
* include/grub/types.h (grub_swap_bytes16_compile_time): New macro.
(grub_swap_bytes32_compile_time): Likewise.
(grub_cpu_to_le32_compile_time): Likewise.
(grub_cpu_to_le16_compile_time): Likewise.

ChangeLog
grub-core/partmap/gpt.c
include/grub/gpt_partition.h
include/grub/types.h

index 6596421b2a462d480352af20f2055537ca2d9981..8627ccc79014d154b16b2abba323aa3e01eb9c92 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2010-11-26  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       Avoid using tricks for initialising endian variables.
+
+       * grub-core/partmap/gpt.c (grub_gpt_partition_type_bios_boot):
+       Make const.
+       (GRUB_MOD_INIT): Don't byte-swap.
+       * include/grub/gpt_partition.h (GRUB_GPT_PARTITION_TYPE_BIOS_BOOT):
+       Use grub_cpu_to_le16_compile_time and grub_cpu_to_le32_compile_time.
+       * include/grub/types.h (grub_swap_bytes16_compile_time): New macro.
+       (grub_swap_bytes32_compile_time): Likewise.
+       (grub_cpu_to_le32_compile_time): Likewise.
+       (grub_cpu_to_le16_compile_time): Likewise.
+
 2010-11-26  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * util/grub-setup.c (setup): Stop recommending --force. People who
index 13223460b3f4746a802ac6978bf492363bc083ff..7f2c36143bbe95ecd678a85828bce8aaa136922d 100644 (file)
@@ -33,7 +33,7 @@ static grub_uint8_t grub_gpt_magic[8] =
 static const grub_gpt_part_type_t grub_gpt_partition_type_empty = GRUB_GPT_PARTITION_TYPE_EMPTY;
 
 #ifdef GRUB_UTIL
-static grub_gpt_part_type_t grub_gpt_partition_type_bios_boot = GRUB_GPT_PARTITION_TYPE_BIOS_BOOT;
+static const grub_gpt_part_type_t grub_gpt_partition_type_bios_boot = GRUB_GPT_PARTITION_TYPE_BIOS_BOOT;
 #endif
 
 /* 512 << 7 = 65536 byte sectors.  */
@@ -198,14 +198,6 @@ static struct grub_partition_map grub_gpt_partition_map =
 GRUB_MOD_INIT(part_gpt)
 {
   grub_partition_map_register (&grub_gpt_partition_map);
-#ifdef GRUB_UTIL
-  grub_gpt_partition_type_bios_boot.data1 =
-    grub_cpu_to_le32 (grub_gpt_partition_type_bios_boot.data1);
-  grub_gpt_partition_type_bios_boot.data2 =
-    grub_cpu_to_le16 (grub_gpt_partition_type_bios_boot.data2);
-  grub_gpt_partition_type_bios_boot.data3 =
-    grub_cpu_to_le16 (grub_gpt_partition_type_bios_boot.data3);
-#endif
 }
 
 GRUB_MOD_FINI(part_gpt)
index bc3d3f21030a6e5fee82005f4c98153b45dff014..5f8ddead731cd3db63455566316e7ab6c3ebb61b 100644 (file)
@@ -36,7 +36,7 @@ typedef struct grub_gpt_part_type grub_gpt_part_type_t;
   }
 
 #define GRUB_GPT_PARTITION_TYPE_BIOS_BOOT \
-  { 0x21686148, 0x6449, 0x6e6f, \
+  { grub_cpu_to_le32_compile_time (0x21686148), grub_cpu_to_le16_compile_time (0x6449), grub_cpu_to_le16_compile_time (0x6e6f), \
     { 0x74, 0x4e, 0x65, 0x65, 0x64, 0x45, 0x46, 0x49 } \
   }
 
index e57666a10f398abba1211657502ffc7e0e5aa1e1..8632eacd0e4519def0714ed62542b8a0abf09e08 100644 (file)
@@ -146,6 +146,9 @@ typedef grub_uint64_t       grub_disk_addr_t;
    (grub_uint16_t) ((_x << 8) | (_x >> 8)); \
 })
 
+#define grub_swap_bytes16_compile_time(x) ((((x) & 0xff) << 8) | (((x) & 0xff00) >> 8))
+#define grub_swap_bytes32_compile_time(x) ((((x) & 0xff) << 24) | (((x) & 0xff00) << 8) | (((x) & 0xff0000) >> 8) | (((x) & 0xff000000UL) >> 24))
+
 #if defined(__GNUC__) && (__GNUC__ > 3) && (__GNUC__ > 4 || __GNUC_MINOR__ >= 3)
 static inline grub_uint32_t grub_swap_bytes32(grub_uint32_t x)
 {
@@ -193,6 +196,8 @@ static inline grub_uint64_t grub_swap_bytes64(grub_uint64_t x)
 # define grub_be_to_cpu16(x)   ((grub_uint16_t) (x))
 # define grub_be_to_cpu32(x)   ((grub_uint32_t) (x))
 # define grub_be_to_cpu64(x)   ((grub_uint64_t) (x))
+# define grub_cpu_to_le32_compile_time(x)      grub_swap_bytes32_compile_time(x)
+# define grub_cpu_to_le16_compile_time(x)      grub_swap_bytes16_compile_time(x)
 #else /* ! WORDS_BIGENDIAN */
 # define grub_cpu_to_le16(x)   ((grub_uint16_t) (x))
 # define grub_cpu_to_le32(x)   ((grub_uint32_t) (x))
@@ -206,6 +211,8 @@ static inline grub_uint64_t grub_swap_bytes64(grub_uint64_t x)
 # define grub_be_to_cpu16(x)   grub_swap_bytes16(x)
 # define grub_be_to_cpu32(x)   grub_swap_bytes32(x)
 # define grub_be_to_cpu64(x)   grub_swap_bytes64(x)
+# define grub_cpu_to_le16_compile_time(x)      ((grub_uint16_t) (x))
+# define grub_cpu_to_le32_compile_time(x)      ((grub_uint32_t) (x))
 #endif /* ! WORDS_BIGENDIAN */
 
 #endif /* ! GRUB_TYPES_HEADER */