Fix memory commands for 64-bit platforms
authorYork Sun <yorksun@freescale.com>
Wed, 12 Feb 2014 23:55:35 +0000 (15:55 -0800)
committerTom Rini <trini@ti.com>
Fri, 21 Feb 2014 16:06:13 +0000 (11:06 -0500)
For aarch64, unsigned long is 64-bit data. Memory commands should be fixed
with u32 for 32-bit address access. To be clear, ushort is replace with
u16, u_char is replaced with u8.

Signed-off-by: York Sun <yorksun@freescale.com>
Acked-by: Wolfgang Denk <wd@denx.de>
common/cmd_mem.c

index 8d2cfc88cea6b9daa3d9ce828063c80e00e28205..6d75d025bd551367f8ed5b4c80c00efe324dc50e 100644 (file)
@@ -188,11 +188,11 @@ static int do_mem_mw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        buf = map_sysmem(addr, bytes);
        while (count-- > 0) {
                if (size == 4)
-                       *((ulong *)buf) = (ulong)writeval;
+                       *((u32 *)buf) = (u32)writeval;
                else if (size == 2)
-                       *((ushort *)buf) = (ushort)writeval;
+                       *((u16 *)buf) = (u16)writeval;
                else
-                       *((u_char *)buf) = (u_char)writeval;
+                       *((u8 *)buf) = (u8)writeval;
                buf += size;
        }
        unmap_sysmem(buf);
@@ -300,14 +300,14 @@ static int do_mem_cmp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        for (ngood = 0; ngood < count; ++ngood) {
                ulong word1, word2;
                if (size == 4) {
-                       word1 = *(ulong *)buf1;
-                       word2 = *(ulong *)buf2;
+                       word1 = *(u32 *)buf1;
+                       word2 = *(u32 *)buf2;
                } else if (size == 2) {
-                       word1 = *(ushort *)buf1;
-                       word2 = *(ushort *)buf2;
+                       word1 = *(u16 *)buf1;
+                       word2 = *(u16 *)buf2;
                } else {
-                       word1 = *(u_char *)buf1;
-                       word2 = *(u_char *)buf2;
+                       word1 = *(u8 *)buf1;
+                       word2 = *(u8 *)buf2;
                }
                if (word1 != word2) {
                        ulong offset = buf1 - base;
@@ -433,11 +433,11 @@ static int do_mem_cp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        src = map_sysmem(addr, bytes);
        while (count-- > 0) {
                if (size == 4)
-                       *((ulong *)buf) = *((ulong  *)src);
+                       *((u32 *)buf) = *((u32  *)src);
                else if (size == 2)
-                       *((ushort *)buf) = *((ushort *)src);
+                       *((u16 *)buf) = *((u16 *)src);
                else
-                       *((u_char *)buf) = *((u_char *)src);
+                       *((u8 *)buf) = *((u8 *)src);
                src += size;
                buf += size;
 
@@ -467,9 +467,9 @@ static int do_mem_loop(cmd_tbl_t *cmdtp, int flag, int argc,
 {
        ulong   addr, length, i, bytes;
        int     size;
-       volatile uint   *longp;
-       volatile ushort *shortp;
-       volatile u_char *cp;
+       volatile u32 *longp;
+       volatile u16 *shortp;
+       volatile u8 *cp;
        const void *buf;
 
        if (argc < 3)
@@ -498,23 +498,23 @@ static int do_mem_loop(cmd_tbl_t *cmdtp, int flag, int argc,
         */
        if (length == 1) {
                if (size == 4) {
-                       longp = (uint *)buf;
+                       longp = (u32 *)buf;
                        for (;;)
                                i = *longp;
                }
                if (size == 2) {
-                       shortp = (ushort *)buf;
+                       shortp = (u16 *)buf;
                        for (;;)
                                i = *shortp;
                }
-               cp = (u_char *)buf;
+               cp = (u8 *)buf;
                for (;;)
                        i = *cp;
        }
 
        if (size == 4) {
                for (;;) {
-                       longp = (uint *)buf;
+                       longp = (u32 *)buf;
                        i = length;
                        while (i-- > 0)
                                *longp++;
@@ -522,14 +522,14 @@ static int do_mem_loop(cmd_tbl_t *cmdtp, int flag, int argc,
        }
        if (size == 2) {
                for (;;) {
-                       shortp = (ushort *)buf;
+                       shortp = (u16 *)buf;
                        i = length;
                        while (i-- > 0)
                                *shortp++;
                }
        }
        for (;;) {
-               cp = (u_char *)buf;
+               cp = (u8 *)buf;
                i = length;
                while (i-- > 0)
                        *cp++;
@@ -544,9 +544,9 @@ int do_mem_loopw (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        ulong   addr, length, i, data, bytes;
        int     size;
-       volatile uint   *longp;
-       volatile ushort *shortp;
-       volatile u_char *cp;
+       volatile u32 *longp;
+       volatile u16 *shortp;
+       volatile u8 *cp;
        void *buf;
 
        if (argc < 4)
@@ -578,23 +578,23 @@ int do_mem_loopw (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
         */
        if (length == 1) {
                if (size == 4) {
-                       longp = (uint *)buf;
+                       longp = (u32 *)buf;
                        for (;;)
                                *longp = data;
                                        }
                if (size == 2) {
-                       shortp = (ushort *)buf;
+                       shortp = (u16 *)buf;
                        for (;;)
                                *shortp = data;
                }
-               cp = (u_char *)buf;
+               cp = (u8 *)buf;
                for (;;)
                        *cp = data;
        }
 
        if (size == 4) {
                for (;;) {
-                       longp = (uint *)buf;
+                       longp = (u32 *)buf;
                        i = length;
                        while (i-- > 0)
                                *longp++ = data;
@@ -602,14 +602,14 @@ int do_mem_loopw (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        }
        if (size == 2) {
                for (;;) {
-                       shortp = (ushort *)buf;
+                       shortp = (u16 *)buf;
                        i = length;
                        while (i-- > 0)
                                *shortp++ = data;
                }
        }
        for (;;) {
-               cp = (u_char *)buf;
+               cp = (u8 *)buf;
                i = length;
                while (i-- > 0)
                        *cp++ = data;
@@ -1054,11 +1054,11 @@ mod_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char * const argv[])
                ptr = map_sysmem(addr, size);
                printf("%08lx:", addr);
                if (size == 4)
-                       printf(" %08x", *((uint *)ptr));
+                       printf(" %08x", *((u32 *)ptr));
                else if (size == 2)
-                       printf(" %04x", *((ushort *)ptr));
+                       printf(" %04x", *((u16 *)ptr));
                else
-                       printf(" %02x", *((u_char *)ptr));
+                       printf(" %02x", *((u8 *)ptr));
 
                nbytes = readline (" ? ");
                if (nbytes == 0 || (nbytes == 1 && console_buffer[0] == '-')) {
@@ -1088,11 +1088,11 @@ mod_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char * const argv[])
                                reset_cmd_timeout();
 #endif
                                if (size == 4)
-                                       *((uint *)ptr) = i;
+                                       *((u32 *)ptr) = i;
                                else if (size == 2)
-                                       *((ushort *)ptr) = i;
+                                       *((u16 *)ptr) = i;
                                else
-                                       *((u_char *)ptr) = i;
+                                       *((u8 *)ptr) = i;
                                if (incrflag)
                                        addr += size;
                        }