]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/disk/pata.c (grub_pata_pio_read)
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 6 Jun 2012 10:38:49 +0000 (12:38 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 6 Jun 2012 10:38:49 +0000 (12:38 +0200)
[GRUB_MACHINE_MIPS_QEMU_MIPS]: Don't byteswap even on mipseb.
(grub_pata_pio_write) [GRUB_MACHINE_MIPS_QEMU_MIPS]: Likewise.

ChangeLog
grub-core/disk/pata.c

index 92be5fbd96e40a6a1c9ed6a92cafdfcda3cd57d1..f67df7648b6093dbb9982ca23e34326b1ea9cd70 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-06-06  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/disk/pata.c (grub_pata_pio_read)
+       [GRUB_MACHINE_MIPS_QEMU_MIPS]: Don't byteswap even on mipseb.
+       (grub_pata_pio_write) [GRUB_MACHINE_MIPS_QEMU_MIPS]: Likewise.
+
 2012-06-06  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Extend automated tests to qemu-mips.
index 5fc11ee91723fe57416d79d0f9d6b24b2650166d..00b04e2d4bdb8897959bdd5940ff7aa403ddecea 100644 (file)
@@ -113,6 +113,14 @@ grub_pata_wait (void)
   grub_millisleep (50);
 }
 
+#ifdef GRUB_MACHINE_MIPS_QEMU_MIPS
+#define grub_ata_to_cpu16(x) ((grub_uint16_t) (x))
+#define grub_cpu_to_ata16(x) ((grub_uint16_t) (x))
+#else
+#define grub_ata_to_cpu16 grub_le_to_cpu16
+#define grub_cpu_to_ata16 grub_cpu_to_le16
+#endif
+
 static void
 grub_pata_pio_read (struct grub_pata_device *dev, char *buf, grub_size_t size)
 { 
@@ -121,10 +129,10 @@ grub_pata_pio_read (struct grub_pata_device *dev, char *buf, grub_size_t size)
   /* Read in the data, word by word.  */
   for (i = 0; i < size / 2; i++)
     grub_set_unaligned16 (buf + 2 * i,
-                         grub_le_to_cpu16 (grub_inw(dev->ioaddress
+                         grub_ata_to_cpu16 (grub_inw(dev->ioaddress
                                                     + GRUB_ATA_REG_DATA)));
   if (size & 1)
-    buf[size - 1] = (char) grub_le_to_cpu16 (grub_inw (dev->ioaddress
+    buf[size - 1] = (char) grub_ata_to_cpu16 (grub_inw (dev->ioaddress
                                                       + GRUB_ATA_REG_DATA));
 }
 
@@ -135,7 +143,7 @@ grub_pata_pio_write (struct grub_pata_device *dev, char *buf, grub_size_t size)
 
   /* Write the data, word by word.  */
   for (i = 0; i < size / 2; i++)
-    grub_outw(grub_cpu_to_le16 (grub_get_unaligned16 (buf + 2 * i)), dev->ioaddress + GRUB_ATA_REG_DATA);
+    grub_outw(grub_cpu_to_ata16 (grub_get_unaligned16 (buf + 2 * i)), dev->ioaddress + GRUB_ATA_REG_DATA);
 }
 
 /* ATA pass through support, used by hdparm.mod.  */