Commit 7df526e317fe4c193589bfdf2ee06255325344cc
1 parent
d26bc211
Move kernel loader parameters from the cpu state to being board specific.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3557 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
4 changed files
with
72 additions
and
59 deletions
hw/mips_malta.c
| @@ -59,6 +59,13 @@ typedef struct { | @@ -59,6 +59,13 @@ typedef struct { | ||
| 59 | 59 | ||
| 60 | static PITState *pit; | 60 | static PITState *pit; |
| 61 | 61 | ||
| 62 | +static struct _loaderparams { | ||
| 63 | + int ram_size; | ||
| 64 | + const char *kernel_filename; | ||
| 65 | + const char *kernel_cmdline; | ||
| 66 | + const char *initrd_filename; | ||
| 67 | +} loaderparams; | ||
| 68 | + | ||
| 62 | /* Malta FPGA */ | 69 | /* Malta FPGA */ |
| 63 | static void malta_fpga_update_display(void *opaque) | 70 | static void malta_fpga_update_display(void *opaque) |
| 64 | { | 71 | { |
| @@ -534,8 +541,8 @@ static void write_bootloader (CPUState *env, unsigned long bios_offset, int64_t | @@ -534,8 +541,8 @@ static void write_bootloader (CPUState *env, unsigned long bios_offset, int64_t | ||
| 534 | stl_raw(p++, 0x34a50000 | (ENVP_ADDR & 0xffff)); /* ori a1, a1, low(ENVP_ADDR) */ | 541 | stl_raw(p++, 0x34a50000 | (ENVP_ADDR & 0xffff)); /* ori a1, a1, low(ENVP_ADDR) */ |
| 535 | stl_raw(p++, 0x3c060000 | (((ENVP_ADDR + 8) >> 16) & 0xffff)); /* lui a2, high(ENVP_ADDR + 8) */ | 542 | stl_raw(p++, 0x3c060000 | (((ENVP_ADDR + 8) >> 16) & 0xffff)); /* lui a2, high(ENVP_ADDR + 8) */ |
| 536 | stl_raw(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff)); /* ori a2, a2, low(ENVP_ADDR + 8) */ | 543 | stl_raw(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff)); /* ori a2, a2, low(ENVP_ADDR + 8) */ |
| 537 | - stl_raw(p++, 0x3c070000 | (env->ram_size >> 16)); /* lui a3, high(env->ram_size) */ | ||
| 538 | - stl_raw(p++, 0x34e70000 | (env->ram_size & 0xffff)); /* ori a3, a3, low(env->ram_size) */ | 544 | + stl_raw(p++, 0x3c070000 | (loaderparams.ram_size >> 16)); /* lui a3, high(ram_size) */ |
| 545 | + stl_raw(p++, 0x34e70000 | (loaderparams.ram_size & 0xffff)); /* ori a3, a3, low(ram_size) */ | ||
| 539 | 546 | ||
| 540 | /* Load BAR registers as done by YAMON */ | 547 | /* Load BAR registers as done by YAMON */ |
| 541 | stl_raw(p++, 0x3c09b400); /* lui t1, 0xb400 */ | 548 | stl_raw(p++, 0x3c09b400); /* lui t1, 0xb400 */ |
| @@ -675,48 +682,48 @@ static int64_t load_kernel (CPUState *env) | @@ -675,48 +682,48 @@ static int64_t load_kernel (CPUState *env) | ||
| 675 | long initrd_size; | 682 | long initrd_size; |
| 676 | ram_addr_t initrd_offset; | 683 | ram_addr_t initrd_offset; |
| 677 | 684 | ||
| 678 | - if (load_elf(env->kernel_filename, VIRT_TO_PHYS_ADDEND, | 685 | + if (load_elf(loaderparams.kernel_filename, VIRT_TO_PHYS_ADDEND, |
| 679 | &kernel_entry, &kernel_low, &kernel_high) < 0) { | 686 | &kernel_entry, &kernel_low, &kernel_high) < 0) { |
| 680 | fprintf(stderr, "qemu: could not load kernel '%s'\n", | 687 | fprintf(stderr, "qemu: could not load kernel '%s'\n", |
| 681 | - env->kernel_filename); | 688 | + loaderparams.kernel_filename); |
| 682 | exit(1); | 689 | exit(1); |
| 683 | } | 690 | } |
| 684 | 691 | ||
| 685 | /* load initrd */ | 692 | /* load initrd */ |
| 686 | initrd_size = 0; | 693 | initrd_size = 0; |
| 687 | initrd_offset = 0; | 694 | initrd_offset = 0; |
| 688 | - if (env->initrd_filename) { | ||
| 689 | - initrd_size = get_image_size (env->initrd_filename); | 695 | + if (loaderparams.initrd_filename) { |
| 696 | + initrd_size = get_image_size (loaderparams.initrd_filename); | ||
| 690 | if (initrd_size > 0) { | 697 | if (initrd_size > 0) { |
| 691 | initrd_offset = (kernel_high + ~TARGET_PAGE_MASK) & TARGET_PAGE_MASK; | 698 | initrd_offset = (kernel_high + ~TARGET_PAGE_MASK) & TARGET_PAGE_MASK; |
| 692 | - if (initrd_offset + initrd_size > env->ram_size) { | 699 | + if (initrd_offset + initrd_size > ram_size) { |
| 693 | fprintf(stderr, | 700 | fprintf(stderr, |
| 694 | "qemu: memory too small for initial ram disk '%s'\n", | 701 | "qemu: memory too small for initial ram disk '%s'\n", |
| 695 | - env->initrd_filename); | 702 | + loaderparams.initrd_filename); |
| 696 | exit(1); | 703 | exit(1); |
| 697 | } | 704 | } |
| 698 | - initrd_size = load_image(env->initrd_filename, | 705 | + initrd_size = load_image(loaderparams.initrd_filename, |
| 699 | phys_ram_base + initrd_offset); | 706 | phys_ram_base + initrd_offset); |
| 700 | } | 707 | } |
| 701 | if (initrd_size == (target_ulong) -1) { | 708 | if (initrd_size == (target_ulong) -1) { |
| 702 | fprintf(stderr, "qemu: could not load initial ram disk '%s'\n", | 709 | fprintf(stderr, "qemu: could not load initial ram disk '%s'\n", |
| 703 | - env->initrd_filename); | 710 | + loaderparams.initrd_filename); |
| 704 | exit(1); | 711 | exit(1); |
| 705 | } | 712 | } |
| 706 | } | 713 | } |
| 707 | 714 | ||
| 708 | /* Store command line. */ | 715 | /* Store command line. */ |
| 709 | - prom_set(index++, env->kernel_filename); | 716 | + prom_set(index++, loaderparams.kernel_filename); |
| 710 | if (initrd_size > 0) | 717 | if (initrd_size > 0) |
| 711 | prom_set(index++, "rd_start=0x" TARGET_FMT_lx " rd_size=%li %s", | 718 | prom_set(index++, "rd_start=0x" TARGET_FMT_lx " rd_size=%li %s", |
| 712 | PHYS_TO_VIRT(initrd_offset), initrd_size, | 719 | PHYS_TO_VIRT(initrd_offset), initrd_size, |
| 713 | - env->kernel_cmdline); | 720 | + loaderparams.kernel_cmdline); |
| 714 | else | 721 | else |
| 715 | - prom_set(index++, env->kernel_cmdline); | 722 | + prom_set(index++, loaderparams.kernel_cmdline); |
| 716 | 723 | ||
| 717 | /* Setup minimum environment variables */ | 724 | /* Setup minimum environment variables */ |
| 718 | prom_set(index++, "memsize"); | 725 | prom_set(index++, "memsize"); |
| 719 | - prom_set(index++, "%i", env->ram_size); | 726 | + prom_set(index++, "%i", loaderparams.ram_size); |
| 720 | prom_set(index++, "modetty0"); | 727 | prom_set(index++, "modetty0"); |
| 721 | prom_set(index++, "38400n8r"); | 728 | prom_set(index++, "38400n8r"); |
| 722 | prom_set(index++, NULL); | 729 | prom_set(index++, NULL); |
| @@ -733,7 +740,7 @@ static void main_cpu_reset(void *opaque) | @@ -733,7 +740,7 @@ static void main_cpu_reset(void *opaque) | ||
| 733 | /* The bootload does not need to be rewritten as it is located in a | 740 | /* The bootload does not need to be rewritten as it is located in a |
| 734 | read only location. The kernel location and the arguments table | 741 | read only location. The kernel location and the arguments table |
| 735 | location does not change. */ | 742 | location does not change. */ |
| 736 | - if (env->kernel_filename) { | 743 | + if (loaderparams.kernel_filename) { |
| 737 | env->CP0_Status &= ~((1 << CP0St_BEV) | (1 << CP0St_ERL)); | 744 | env->CP0_Status &= ~((1 << CP0St_BEV) | (1 << CP0St_ERL)); |
| 738 | load_kernel (env); | 745 | load_kernel (env); |
| 739 | } | 746 | } |
| @@ -818,10 +825,10 @@ void mips_malta_init (int ram_size, int vga_ram_size, const char *boot_device, | @@ -818,10 +825,10 @@ void mips_malta_init (int ram_size, int vga_ram_size, const char *boot_device, | ||
| 818 | /* If a kernel image has been specified, write a small bootloader | 825 | /* If a kernel image has been specified, write a small bootloader |
| 819 | to the flash location. */ | 826 | to the flash location. */ |
| 820 | if (kernel_filename) { | 827 | if (kernel_filename) { |
| 821 | - env->ram_size = ram_size; | ||
| 822 | - env->kernel_filename = kernel_filename; | ||
| 823 | - env->kernel_cmdline = kernel_cmdline; | ||
| 824 | - env->initrd_filename = initrd_filename; | 828 | + loaderparams.ram_size = ram_size; |
| 829 | + loaderparams.kernel_filename = kernel_filename; | ||
| 830 | + loaderparams.kernel_cmdline = kernel_cmdline; | ||
| 831 | + loaderparams.initrd_filename = initrd_filename; | ||
| 825 | kernel_entry = load_kernel(env); | 832 | kernel_entry = load_kernel(env); |
| 826 | env->CP0_Status &= ~((1 << CP0St_BEV) | (1 << CP0St_ERL)); | 833 | env->CP0_Status &= ~((1 << CP0St_BEV) | (1 << CP0St_ERL)); |
| 827 | write_bootloader(env, bios_offset, kernel_entry); | 834 | write_bootloader(env, bios_offset, kernel_entry); |
hw/mips_mipssim.c
| @@ -40,6 +40,13 @@ | @@ -40,6 +40,13 @@ | ||
| 40 | 40 | ||
| 41 | #define VIRT_TO_PHYS_ADDEND (-((int64_t)(int32_t)0x80000000)) | 41 | #define VIRT_TO_PHYS_ADDEND (-((int64_t)(int32_t)0x80000000)) |
| 42 | 42 | ||
| 43 | +static struct _loaderparams { | ||
| 44 | + int ram_size; | ||
| 45 | + const char *kernel_filename; | ||
| 46 | + const char *kernel_cmdline; | ||
| 47 | + const char *initrd_filename; | ||
| 48 | +} loaderparams; | ||
| 49 | + | ||
| 43 | static void load_kernel (CPUState *env) | 50 | static void load_kernel (CPUState *env) |
| 44 | { | 51 | { |
| 45 | int64_t entry, kernel_low, kernel_high; | 52 | int64_t entry, kernel_low, kernel_high; |
| @@ -47,7 +54,7 @@ static void load_kernel (CPUState *env) | @@ -47,7 +54,7 @@ static void load_kernel (CPUState *env) | ||
| 47 | long initrd_size; | 54 | long initrd_size; |
| 48 | ram_addr_t initrd_offset; | 55 | ram_addr_t initrd_offset; |
| 49 | 56 | ||
| 50 | - kernel_size = load_elf(env->kernel_filename, VIRT_TO_PHYS_ADDEND, | 57 | + kernel_size = load_elf(loaderparams.kernel_filename, VIRT_TO_PHYS_ADDEND, |
| 51 | &entry, &kernel_low, &kernel_high); | 58 | &entry, &kernel_low, &kernel_high); |
| 52 | if (kernel_size >= 0) { | 59 | if (kernel_size >= 0) { |
| 53 | if ((entry & ~0x7fffffffULL) == 0x80000000) | 60 | if ((entry & ~0x7fffffffULL) == 0x80000000) |
| @@ -55,29 +62,29 @@ static void load_kernel (CPUState *env) | @@ -55,29 +62,29 @@ static void load_kernel (CPUState *env) | ||
| 55 | env->PC[env->current_tc] = entry; | 62 | env->PC[env->current_tc] = entry; |
| 56 | } else { | 63 | } else { |
| 57 | fprintf(stderr, "qemu: could not load kernel '%s'\n", | 64 | fprintf(stderr, "qemu: could not load kernel '%s'\n", |
| 58 | - env->kernel_filename); | 65 | + loaderparams.kernel_filename); |
| 59 | exit(1); | 66 | exit(1); |
| 60 | } | 67 | } |
| 61 | 68 | ||
| 62 | /* load initrd */ | 69 | /* load initrd */ |
| 63 | initrd_size = 0; | 70 | initrd_size = 0; |
| 64 | initrd_offset = 0; | 71 | initrd_offset = 0; |
| 65 | - if (env->initrd_filename) { | ||
| 66 | - initrd_size = get_image_size (env->initrd_filename); | 72 | + if (loaderparams.initrd_filename) { |
| 73 | + initrd_size = get_image_size (loaderparams.initrd_filename); | ||
| 67 | if (initrd_size > 0) { | 74 | if (initrd_size > 0) { |
| 68 | initrd_offset = (kernel_high + ~TARGET_PAGE_MASK) & TARGET_PAGE_MASK; | 75 | initrd_offset = (kernel_high + ~TARGET_PAGE_MASK) & TARGET_PAGE_MASK; |
| 69 | - if (initrd_offset + initrd_size > env->ram_size) { | 76 | + if (initrd_offset + initrd_size > loaderparams.ram_size) { |
| 70 | fprintf(stderr, | 77 | fprintf(stderr, |
| 71 | "qemu: memory too small for initial ram disk '%s'\n", | 78 | "qemu: memory too small for initial ram disk '%s'\n", |
| 72 | - env->initrd_filename); | 79 | + loaderparams.initrd_filename); |
| 73 | exit(1); | 80 | exit(1); |
| 74 | } | 81 | } |
| 75 | - initrd_size = load_image(env->initrd_filename, | 82 | + initrd_size = load_image(loaderparams.initrd_filename, |
| 76 | phys_ram_base + initrd_offset); | 83 | phys_ram_base + initrd_offset); |
| 77 | } | 84 | } |
| 78 | if (initrd_size == (target_ulong) -1) { | 85 | if (initrd_size == (target_ulong) -1) { |
| 79 | fprintf(stderr, "qemu: could not load initial ram disk '%s'\n", | 86 | fprintf(stderr, "qemu: could not load initial ram disk '%s'\n", |
| 80 | - env->initrd_filename); | 87 | + loaderparams.initrd_filename); |
| 81 | exit(1); | 88 | exit(1); |
| 82 | } | 89 | } |
| 83 | } | 90 | } |
| @@ -89,7 +96,7 @@ static void main_cpu_reset(void *opaque) | @@ -89,7 +96,7 @@ static void main_cpu_reset(void *opaque) | ||
| 89 | cpu_reset(env); | 96 | cpu_reset(env); |
| 90 | cpu_mips_register(env, NULL); | 97 | cpu_mips_register(env, NULL); |
| 91 | 98 | ||
| 92 | - if (env->kernel_filename) | 99 | + if (loaderparams.kernel_filename) |
| 93 | load_kernel (env); | 100 | load_kernel (env); |
| 94 | } | 101 | } |
| 95 | 102 | ||
| @@ -144,10 +151,10 @@ mips_mipssim_init (int ram_size, int vga_ram_size, const char *boot_device, | @@ -144,10 +151,10 @@ mips_mipssim_init (int ram_size, int vga_ram_size, const char *boot_device, | ||
| 144 | } | 151 | } |
| 145 | 152 | ||
| 146 | if (kernel_filename) { | 153 | if (kernel_filename) { |
| 147 | - env->ram_size = ram_size; | ||
| 148 | - env->kernel_filename = kernel_filename; | ||
| 149 | - env->kernel_cmdline = kernel_cmdline; | ||
| 150 | - env->initrd_filename = initrd_filename; | 154 | + loaderparams.ram_size = ram_size; |
| 155 | + loaderparams.kernel_filename = kernel_filename; | ||
| 156 | + loaderparams.kernel_cmdline = kernel_cmdline; | ||
| 157 | + loaderparams.initrd_filename = initrd_filename; | ||
| 151 | load_kernel(env); | 158 | load_kernel(env); |
| 152 | } | 159 | } |
| 153 | 160 |
hw/mips_r4k.c
| @@ -36,6 +36,13 @@ static PITState *pit; /* PIT i8254 */ | @@ -36,6 +36,13 @@ static PITState *pit; /* PIT i8254 */ | ||
| 36 | 36 | ||
| 37 | /*i8254 PIT is attached to the IRQ0 at PIC i8259 */ | 37 | /*i8254 PIT is attached to the IRQ0 at PIC i8259 */ |
| 38 | 38 | ||
| 39 | +static struct _loaderparams { | ||
| 40 | + int ram_size; | ||
| 41 | + const char *kernel_filename; | ||
| 42 | + const char *kernel_cmdline; | ||
| 43 | + const char *initrd_filename; | ||
| 44 | +} loaderparams; | ||
| 45 | + | ||
| 39 | static void mips_qemu_writel (void *opaque, target_phys_addr_t addr, | 46 | static void mips_qemu_writel (void *opaque, target_phys_addr_t addr, |
| 40 | uint32_t val) | 47 | uint32_t val) |
| 41 | { | 48 | { |
| @@ -64,16 +71,13 @@ static CPUReadMemoryFunc *mips_qemu_read[] = { | @@ -64,16 +71,13 @@ static CPUReadMemoryFunc *mips_qemu_read[] = { | ||
| 64 | 71 | ||
| 65 | static int mips_qemu_iomemtype = 0; | 72 | static int mips_qemu_iomemtype = 0; |
| 66 | 73 | ||
| 67 | -static void load_kernel (CPUState *env, int ram_size, | ||
| 68 | - const char *kernel_filename, | ||
| 69 | - const char *kernel_cmdline, | ||
| 70 | - const char *initrd_filename) | 74 | +static void load_kernel (CPUState *env) |
| 71 | { | 75 | { |
| 72 | int64_t entry, kernel_low, kernel_high; | 76 | int64_t entry, kernel_low, kernel_high; |
| 73 | long kernel_size, initrd_size; | 77 | long kernel_size, initrd_size; |
| 74 | ram_addr_t initrd_offset; | 78 | ram_addr_t initrd_offset; |
| 75 | 79 | ||
| 76 | - kernel_size = load_elf(kernel_filename, VIRT_TO_PHYS_ADDEND, | 80 | + kernel_size = load_elf(loaderparams.kernel_filename, VIRT_TO_PHYS_ADDEND, |
| 77 | &entry, &kernel_low, &kernel_high); | 81 | &entry, &kernel_low, &kernel_high); |
| 78 | if (kernel_size >= 0) { | 82 | if (kernel_size >= 0) { |
| 79 | if ((entry & ~0x7fffffffULL) == 0x80000000) | 83 | if ((entry & ~0x7fffffffULL) == 0x80000000) |
| @@ -81,29 +85,29 @@ static void load_kernel (CPUState *env, int ram_size, | @@ -81,29 +85,29 @@ static void load_kernel (CPUState *env, int ram_size, | ||
| 81 | env->PC[env->current_tc] = entry; | 85 | env->PC[env->current_tc] = entry; |
| 82 | } else { | 86 | } else { |
| 83 | fprintf(stderr, "qemu: could not load kernel '%s'\n", | 87 | fprintf(stderr, "qemu: could not load kernel '%s'\n", |
| 84 | - kernel_filename); | 88 | + loaderparams.kernel_filename); |
| 85 | exit(1); | 89 | exit(1); |
| 86 | } | 90 | } |
| 87 | 91 | ||
| 88 | /* load initrd */ | 92 | /* load initrd */ |
| 89 | initrd_size = 0; | 93 | initrd_size = 0; |
| 90 | initrd_offset = 0; | 94 | initrd_offset = 0; |
| 91 | - if (initrd_filename) { | ||
| 92 | - initrd_size = get_image_size (initrd_filename); | 95 | + if (loaderparams.initrd_filename) { |
| 96 | + initrd_size = get_image_size (loaderparams.initrd_filename); | ||
| 93 | if (initrd_size > 0) { | 97 | if (initrd_size > 0) { |
| 94 | initrd_offset = (kernel_high + ~TARGET_PAGE_MASK) & TARGET_PAGE_MASK; | 98 | initrd_offset = (kernel_high + ~TARGET_PAGE_MASK) & TARGET_PAGE_MASK; |
| 95 | if (initrd_offset + initrd_size > ram_size) { | 99 | if (initrd_offset + initrd_size > ram_size) { |
| 96 | fprintf(stderr, | 100 | fprintf(stderr, |
| 97 | "qemu: memory too small for initial ram disk '%s'\n", | 101 | "qemu: memory too small for initial ram disk '%s'\n", |
| 98 | - initrd_filename); | 102 | + loaderparams.initrd_filename); |
| 99 | exit(1); | 103 | exit(1); |
| 100 | } | 104 | } |
| 101 | - initrd_size = load_image(initrd_filename, | 105 | + initrd_size = load_image(loaderparams.initrd_filename, |
| 102 | phys_ram_base + initrd_offset); | 106 | phys_ram_base + initrd_offset); |
| 103 | } | 107 | } |
| 104 | if (initrd_size == (target_ulong) -1) { | 108 | if (initrd_size == (target_ulong) -1) { |
| 105 | fprintf(stderr, "qemu: could not load initial ram disk '%s'\n", | 109 | fprintf(stderr, "qemu: could not load initial ram disk '%s'\n", |
| 106 | - initrd_filename); | 110 | + loaderparams.initrd_filename); |
| 107 | exit(1); | 111 | exit(1); |
| 108 | } | 112 | } |
| 109 | } | 113 | } |
| @@ -115,10 +119,12 @@ static void load_kernel (CPUState *env, int ram_size, | @@ -115,10 +119,12 @@ static void load_kernel (CPUState *env, int ram_size, | ||
| 115 | "rd_start=0x" TARGET_FMT_lx " rd_size=%li ", | 119 | "rd_start=0x" TARGET_FMT_lx " rd_size=%li ", |
| 116 | PHYS_TO_VIRT((uint32_t)initrd_offset), | 120 | PHYS_TO_VIRT((uint32_t)initrd_offset), |
| 117 | initrd_size); | 121 | initrd_size); |
| 118 | - strcpy (phys_ram_base + (16 << 20) - 256 + ret, kernel_cmdline); | 122 | + strcpy (phys_ram_base + (16 << 20) - 256 + ret, |
| 123 | + loaderparams.kernel_cmdline); | ||
| 119 | } | 124 | } |
| 120 | else { | 125 | else { |
| 121 | - strcpy (phys_ram_base + (16 << 20) - 256, kernel_cmdline); | 126 | + strcpy (phys_ram_base + (16 << 20) - 256, |
| 127 | + loaderparams.kernel_cmdline); | ||
| 122 | } | 128 | } |
| 123 | 129 | ||
| 124 | *(int32_t *)(phys_ram_base + (16 << 20) - 260) = tswap32 (0x12345678); | 130 | *(int32_t *)(phys_ram_base + (16 << 20) - 260) = tswap32 (0x12345678); |
| @@ -131,9 +137,8 @@ static void main_cpu_reset(void *opaque) | @@ -131,9 +137,8 @@ static void main_cpu_reset(void *opaque) | ||
| 131 | cpu_reset(env); | 137 | cpu_reset(env); |
| 132 | cpu_mips_register(env, NULL); | 138 | cpu_mips_register(env, NULL); |
| 133 | 139 | ||
| 134 | - if (env->kernel_filename) | ||
| 135 | - load_kernel (env, env->ram_size, env->kernel_filename, | ||
| 136 | - env->kernel_cmdline, env->initrd_filename); | 140 | + if (loaderparams.kernel_filename) |
| 141 | + load_kernel (env); | ||
| 137 | } | 142 | } |
| 138 | 143 | ||
| 139 | static | 144 | static |
| @@ -194,12 +199,11 @@ void mips_r4k_init (int ram_size, int vga_ram_size, const char *boot_device, | @@ -194,12 +199,11 @@ void mips_r4k_init (int ram_size, int vga_ram_size, const char *boot_device, | ||
| 194 | } | 199 | } |
| 195 | 200 | ||
| 196 | if (kernel_filename) { | 201 | if (kernel_filename) { |
| 197 | - load_kernel (env, ram_size, kernel_filename, kernel_cmdline, | ||
| 198 | - initrd_filename); | ||
| 199 | - env->ram_size = ram_size; | ||
| 200 | - env->kernel_filename = kernel_filename; | ||
| 201 | - env->kernel_cmdline = kernel_cmdline; | ||
| 202 | - env->initrd_filename = initrd_filename; | 202 | + loaderparams.ram_size = ram_size; |
| 203 | + loaderparams.kernel_filename = kernel_filename; | ||
| 204 | + loaderparams.kernel_cmdline = kernel_cmdline; | ||
| 205 | + loaderparams.initrd_filename = initrd_filename; | ||
| 206 | + load_kernel (env); | ||
| 203 | } | 207 | } |
| 204 | 208 | ||
| 205 | /* Init CPU internal devices */ | 209 | /* Init CPU internal devices */ |
target-mips/cpu.h
| @@ -456,11 +456,6 @@ struct CPUMIPSState { | @@ -456,11 +456,6 @@ struct CPUMIPSState { | ||
| 456 | 456 | ||
| 457 | CPU_COMMON | 457 | CPU_COMMON |
| 458 | 458 | ||
| 459 | - int ram_size; | ||
| 460 | - const char *kernel_filename; | ||
| 461 | - const char *kernel_cmdline; | ||
| 462 | - const char *initrd_filename; | ||
| 463 | - | ||
| 464 | mips_def_t *cpu_model; | 459 | mips_def_t *cpu_model; |
| 465 | #ifndef CONFIG_USER_ONLY | 460 | #ifndef CONFIG_USER_ONLY |
| 466 | void *irq[8]; | 461 | void *irq[8]; |