diff options
author | pbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162> | 2006-02-13 14:16:52 +0000 |
---|---|---|
committer | pbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162> | 2006-02-13 14:16:52 +0000 |
commit | 242011157f0d454bf5a57541ebeba2c17611298e (patch) | |
tree | 4b49f4967a3b55a602b0757d309abf1cb5ff04e6 /hw | |
parent | 2ae23e75045095151c3b754e7e4e36b23f053264 (diff) | |
download | qemu-242011157f0d454bf5a57541ebeba2c17611298e.tar.gz qemu-242011157f0d454bf5a57541ebeba2c17611298e.tar.bz2 qemu-242011157f0d454bf5a57541ebeba2c17611298e.zip |
Fix Arm big-endian host bug.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1762 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw')
-rw-r--r-- | hw/integratorcp.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/hw/integratorcp.c b/hw/integratorcp.c index 0e3d1e3f02..8f91b582f6 100644 --- a/hw/integratorcp.c +++ b/hw/integratorcp.c @@ -1135,22 +1135,22 @@ static void set_kernel_args(uint32_t ram_size, int initrd_size, p = (uint32_t *)(phys_ram_base + KERNEL_ARGS_ADDR); /* ATAG_CORE */ - *(p++) = 5; - *(p++) = 0x54410001; - *(p++) = 1; - *(p++) = 0x1000; - *(p++) = 0; + stl_raw(p++, 5); + stl_raw(p++, 0x54410001); + stl_raw(p++, 1); + stl_raw(p++, 0x1000); + stl_raw(p++, 0); /* ATAG_MEM */ - *(p++) = 4; - *(p++) = 0x54410002; - *(p++) = ram_size; - *(p++) = 0; + stl_raw(p++, 4); + stl_raw(p++, 0x54410002); + stl_raw(p++, ram_size); + stl_raw(p++, 0); if (initrd_size) { /* ATAG_INITRD2 */ - *(p++) = 4; - *(p++) = 0x54420005; - *(p++) = INITRD_LOAD_ADDR; - *(p++) = initrd_size; + stl_raw(p++, 4); + stl_raw(p++, 0x54420005); + stl_raw(p++, INITRD_LOAD_ADDR); + stl_raw(p++, initrd_size); } if (kernel_cmdline && *kernel_cmdline) { /* ATAG_CMDLINE */ @@ -1159,13 +1159,13 @@ static void set_kernel_args(uint32_t ram_size, int initrd_size, cmdline_size = strlen(kernel_cmdline); memcpy (p + 2, kernel_cmdline, cmdline_size + 1); cmdline_size = (cmdline_size >> 2) + 1; - *(p++) = cmdline_size + 2; - *(p++) = 0x54410009; + stl_raw(p++, cmdline_size + 2); + stl_raw(p++, 0x54410009); p += cmdline_size; } /* ATAG_END */ - *(p++) = 0; - *(p++) = 0; + stl_raw(p++, 0); + stl_raw(p++, 0); } /* Board init. */ @@ -1180,6 +1180,7 @@ static void integratorcp_init(int ram_size, int vga_ram_size, int boot_device, icp_pic_state *pic; int kernel_size; int initrd_size; + int n; env = cpu_init(); bios_offset = ram_size + vga_ram_size; @@ -1234,7 +1235,8 @@ static void integratorcp_init(int ram_size, int vga_ram_size, int boot_device, } bootloader[5] = KERNEL_ARGS_ADDR; bootloader[6] = KERNEL_LOAD_ADDR; - memcpy(phys_ram_base, bootloader, sizeof(bootloader)); + for (n = 0; n < sizeof(bootloader) / 4; n++) + stl_raw(phys_ram_base + (n * 4), bootloader[n]); set_kernel_args(ram_size, initrd_size, kernel_cmdline); } |