Commit 3187ef0390b049ee75bf806f13f6e5004e382c03
1 parent
070ce5ed
Fix firmware word endianness for Malta.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2950 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
12 additions
and
0 deletions
hw/mips_malta.c
| ... | ... | @@ -791,6 +791,18 @@ void mips_malta_init (int ram_size, int vga_ram_size, int boot_device, |
| 791 | 791 | buf); |
| 792 | 792 | exit(1); |
| 793 | 793 | } |
| 794 | + /* In little endian mode the 32bit words in the bios are swapped, | |
| 795 | + a neat trick which allows bi-endian firmware. */ | |
| 796 | +#ifndef TARGET_WORDS_BIGENDIAN | |
| 797 | + { | |
| 798 | + uint32_t *addr; | |
| 799 | + for (addr = (uint32_t *)(phys_ram_base + bios_offset); | |
| 800 | + addr < (uint32_t *)(phys_ram_base + bios_offset + ret); | |
| 801 | + addr++) { | |
| 802 | + *addr = bswap32(*addr); | |
| 803 | + } | |
| 804 | + } | |
| 805 | +#endif | |
| 794 | 806 | } |
| 795 | 807 | |
| 796 | 808 | /* If a kernel image has been specified, write a small bootloader | ... | ... |