Commit 7fd7b91fac396fcc3d72ecadbcb49f5736755d23
1 parent
d927637d
amd64 port
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@764 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
22 additions
and
20 deletions
hw/ppc_prep.c
... | ... | @@ -55,7 +55,6 @@ do { \ |
55 | 55 | #endif |
56 | 56 | |
57 | 57 | #define BIOS_FILENAME "ppc_rom.bin" |
58 | -#define LINUX_BOOT_FILENAME "linux_boot.bin" | |
59 | 58 | |
60 | 59 | #define KERNEL_LOAD_ADDR 0x00000000 |
61 | 60 | #define KERNEL_STACK_ADDR 0x00400000 |
... | ... | @@ -677,13 +676,18 @@ static void VGA_init (void) |
677 | 676 | |
678 | 677 | extern CPUPPCState *global_env; |
679 | 678 | |
679 | +static uint32_t get_le32 (void *addr) | |
680 | +{ | |
681 | + return le32_to_cpu(*((uint32_t *)addr)); | |
682 | +} | |
683 | + | |
680 | 684 | void PPC_init_hw (/*CPUPPCState *env,*/ uint32_t mem_size, |
681 | 685 | uint32_t kernel_addr, uint32_t kernel_size, |
682 | 686 | uint32_t stack_addr, int boot_device, |
683 | 687 | const unsigned char *initrd_file) |
684 | 688 | { |
685 | 689 | CPUPPCState *env = global_env; |
686 | - char *p; | |
690 | + uint8_t *p; | |
687 | 691 | #if !defined (USE_OPEN_FIRMWARE) |
688 | 692 | char *tmp; |
689 | 693 | uint32_t tmpi[2]; |
... | ... | @@ -697,8 +701,7 @@ void PPC_init_hw (/*CPUPPCState *env,*/ uint32_t mem_size, |
697 | 701 | /* Fake bootloader */ |
698 | 702 | { |
699 | 703 | #if 1 |
700 | - uint32_t offset = | |
701 | - *((uint32_t *)(phys_ram_base + kernel_addr)); | |
704 | + uint32_t offset = get_le32(phys_ram_base + kernel_addr); | |
702 | 705 | #else |
703 | 706 | uint32_t offset = 12; |
704 | 707 | #endif |
... | ... | @@ -723,7 +726,7 @@ void PPC_init_hw (/*CPUPPCState *env,*/ uint32_t mem_size, |
723 | 726 | * it's not ready to handle it... |
724 | 727 | */ |
725 | 728 | env->decr = 0xFFFFFFFF; |
726 | - p = (void *)(phys_ram_base + kernel_addr); | |
729 | + p = phys_ram_base + kernel_addr; | |
727 | 730 | #if !defined (USE_OPEN_FIRMWARE) |
728 | 731 | /* Let's register the whole memory available only in supervisor mode */ |
729 | 732 | setup_BAT(env, 0, 0x00000000, 0x00000000, mem_size, 1, 0, 2); |
... | ... | @@ -732,7 +735,7 @@ void PPC_init_hw (/*CPUPPCState *env,*/ uint32_t mem_size, |
732 | 735 | */ |
733 | 736 | put_long(p, 0xdeadc0de); |
734 | 737 | /* Build a real stack room */ |
735 | - p = (void *)(phys_ram_base + stack_addr); | |
738 | + p = phys_ram_base + stack_addr; | |
736 | 739 | put_long(p, stack_addr); |
737 | 740 | p -= 32; |
738 | 741 | env->gpr[1] -= 32; |
... | ... | @@ -742,7 +745,7 @@ void PPC_init_hw (/*CPUPPCState *env,*/ uint32_t mem_size, |
742 | 745 | int size; |
743 | 746 | env->gpr[4] = (kernel_addr + kernel_size + 4095) & ~4095; |
744 | 747 | size = load_initrd(initrd_file, |
745 | - (void *)((uint32_t)phys_ram_base + env->gpr[4])); | |
748 | + phys_ram_base + env->gpr[4]); | |
746 | 749 | if (size < 0) { |
747 | 750 | /* No initrd */ |
748 | 751 | env->gpr[4] = env->gpr[5] = 0; |
... | ... | @@ -759,17 +762,17 @@ void PPC_init_hw (/*CPUPPCState *env,*/ uint32_t mem_size, |
759 | 762 | * The BSS starts after the kernel end. |
760 | 763 | */ |
761 | 764 | #if 0 |
762 | - p = (void *)(((uint32_t)phys_ram_base + kernel_addr + | |
763 | - kernel_size + (1 << 20) - 1) & ~((1 << 20) - 1)); | |
765 | + p = phys_ram_base + kernel_addr + | |
766 | + kernel_size + (1 << 20) - 1) & ~((1 << 20) - 1); | |
764 | 767 | #else |
765 | - p = (void *)((uint32_t)phys_ram_base + kernel_addr + 0x400000); | |
768 | + p = phys_ram_base + kernel_addr + 0x400000; | |
766 | 769 | #endif |
767 | 770 | if (loglevel > 0) { |
768 | 771 | fprintf(logfile, "bootinfos: %p 0x%08x\n", |
769 | - p, (uint32_t)p - (uint32_t)phys_ram_base); | |
772 | + p, (int)(p - phys_ram_base)); | |
770 | 773 | } else { |
771 | 774 | printf("bootinfos: %p 0x%08x\n", |
772 | - p, (uint32_t)p - (uint32_t)phys_ram_base); | |
775 | + p, (int)(p - phys_ram_base)); | |
773 | 776 | } |
774 | 777 | /* Command line: let's put it after bootinfos */ |
775 | 778 | #if 0 |
... | ... | @@ -782,7 +785,7 @@ void PPC_init_hw (/*CPUPPCState *env,*/ uint32_t mem_size, |
782 | 785 | boot_devs[boot_device - 'a'].name, |
783 | 786 | mem_size >> 20); |
784 | 787 | #endif |
785 | - env->gpr[6] = (uint32_t)p + 0x1000 - (uint32_t)phys_ram_base; | |
788 | + env->gpr[6] = p + 0x1000 - phys_ram_base; | |
786 | 789 | env->gpr[7] = env->gpr[6] + strlen(p + 0x1000); |
787 | 790 | if (loglevel > 0) { |
788 | 791 | fprintf(logfile, "cmdline: %p 0x%08x [%s]\n", |
... | ... | @@ -795,7 +798,7 @@ void PPC_init_hw (/*CPUPPCState *env,*/ uint32_t mem_size, |
795 | 798 | p = set_bootinfo_tag(p, 0x1010, 0, 0); |
796 | 799 | /* BI_CMD_LINE */ |
797 | 800 | p = set_bootinfo_tag(p, 0x1012, env->gpr[7] - env->gpr[6], |
798 | - (void *)(env->gpr[6] + (uint32_t)phys_ram_base)); | |
801 | + env->gpr[6] + phys_ram_base); | |
799 | 802 | /* BI_MEM_SIZE */ |
800 | 803 | tmp = (void *)tmpi; |
801 | 804 | tmp[0] = (mem_size >> 24) & 0xFF; |
... | ... | @@ -823,8 +826,7 @@ void PPC_init_hw (/*CPUPPCState *env,*/ uint32_t mem_size, |
823 | 826 | setup_BAT(env, 0, 0x01000000, kernel_addr, 0x00400000, 1, 0, 2); |
824 | 827 | { |
825 | 828 | #if 0 |
826 | - uint32_t offset = | |
827 | - *((uint32_t *)(phys_ram_base + kernel_addr)); | |
829 | + uint32_t offset = get_le32(phys_ram_base + kernel_addr); | |
828 | 830 | #else |
829 | 831 | uint32_t offset = 12; |
830 | 832 | #endif |
... | ... | @@ -832,7 +834,7 @@ void PPC_init_hw (/*CPUPPCState *env,*/ uint32_t mem_size, |
832 | 834 | printf("Start address: 0x%08x\n", env->nip); |
833 | 835 | } |
834 | 836 | env->gpr[1] = env->nip + (1 << 22); |
835 | - p = (void *)(phys_ram_base + stack_addr); | |
837 | + p = phys_ram_base + stack_addr; | |
836 | 838 | put_long(p - 32, stack_addr); |
837 | 839 | env->gpr[1] -= 32; |
838 | 840 | printf("Kernel starts at 0x%08x stack 0x%08x\n", env->nip, env->gpr[1]); |
... | ... | @@ -869,10 +871,10 @@ void PPC_init_hw (/*CPUPPCState *env,*/ uint32_t mem_size, |
869 | 871 | /* Command line: let's put it just over the stack */ |
870 | 872 | #if 0 |
871 | 873 | #if 0 |
872 | - p = (void *)(((uint32_t)phys_ram_base + kernel_addr + | |
873 | - kernel_size + (1 << 20) - 1) & ~((1 << 20) - 1)); | |
874 | + p = phys_ram_base + kernel_addr + | |
875 | + kernel_size + (1 << 20) - 1) & ~((1 << 20) - 1); | |
874 | 876 | #else |
875 | - p = (void *)((uint32_t)phys_ram_base + kernel_addr + 0x400000); | |
877 | + p = phys_ram_base + kernel_addr + 0x400000; | |
876 | 878 | #endif |
877 | 879 | #if 1 |
878 | 880 | sprintf(p, "console=ttyS0,9600 root=%02x%02x mem=%dM", | ... | ... |