Commit 242011157f0d454bf5a57541ebeba2c17611298e

Authored by pbrook
1 parent 2ae23e75

Fix Arm big-endian host bug.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1762 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 20 additions and 18 deletions
hw/integratorcp.c
... ... @@ -1135,22 +1135,22 @@ static void set_kernel_args(uint32_t ram_size, int initrd_size,
1135 1135  
1136 1136 p = (uint32_t *)(phys_ram_base + KERNEL_ARGS_ADDR);
1137 1137 /* ATAG_CORE */
1138   - *(p++) = 5;
1139   - *(p++) = 0x54410001;
1140   - *(p++) = 1;
1141   - *(p++) = 0x1000;
1142   - *(p++) = 0;
  1138 + stl_raw(p++, 5);
  1139 + stl_raw(p++, 0x54410001);
  1140 + stl_raw(p++, 1);
  1141 + stl_raw(p++, 0x1000);
  1142 + stl_raw(p++, 0);
1143 1143 /* ATAG_MEM */
1144   - *(p++) = 4;
1145   - *(p++) = 0x54410002;
1146   - *(p++) = ram_size;
1147   - *(p++) = 0;
  1144 + stl_raw(p++, 4);
  1145 + stl_raw(p++, 0x54410002);
  1146 + stl_raw(p++, ram_size);
  1147 + stl_raw(p++, 0);
1148 1148 if (initrd_size) {
1149 1149 /* ATAG_INITRD2 */
1150   - *(p++) = 4;
1151   - *(p++) = 0x54420005;
1152   - *(p++) = INITRD_LOAD_ADDR;
1153   - *(p++) = initrd_size;
  1150 + stl_raw(p++, 4);
  1151 + stl_raw(p++, 0x54420005);
  1152 + stl_raw(p++, INITRD_LOAD_ADDR);
  1153 + stl_raw(p++, initrd_size);
1154 1154 }
1155 1155 if (kernel_cmdline && *kernel_cmdline) {
1156 1156 /* ATAG_CMDLINE */
... ... @@ -1159,13 +1159,13 @@ static void set_kernel_args(uint32_t ram_size, int initrd_size,
1159 1159 cmdline_size = strlen(kernel_cmdline);
1160 1160 memcpy (p + 2, kernel_cmdline, cmdline_size + 1);
1161 1161 cmdline_size = (cmdline_size >> 2) + 1;
1162   - *(p++) = cmdline_size + 2;
1163   - *(p++) = 0x54410009;
  1162 + stl_raw(p++, cmdline_size + 2);
  1163 + stl_raw(p++, 0x54410009);
1164 1164 p += cmdline_size;
1165 1165 }
1166 1166 /* ATAG_END */
1167   - *(p++) = 0;
1168   - *(p++) = 0;
  1167 + stl_raw(p++, 0);
  1168 + stl_raw(p++, 0);
1169 1169 }
1170 1170  
1171 1171 /* Board init. */
... ... @@ -1180,6 +1180,7 @@ static void integratorcp_init(int ram_size, int vga_ram_size, int boot_device,
1180 1180 icp_pic_state *pic;
1181 1181 int kernel_size;
1182 1182 int initrd_size;
  1183 + int n;
1183 1184  
1184 1185 env = cpu_init();
1185 1186 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,
1234 1235 }
1235 1236 bootloader[5] = KERNEL_ARGS_ADDR;
1236 1237 bootloader[6] = KERNEL_LOAD_ADDR;
1237   - memcpy(phys_ram_base, bootloader, sizeof(bootloader));
  1238 + for (n = 0; n < sizeof(bootloader) / 4; n++)
  1239 + stl_raw(phys_ram_base + (n * 4), bootloader[n]);
1238 1240 set_kernel_args(ram_size, initrd_size, kernel_cmdline);
1239 1241 }
1240 1242  
... ...