From c27f813900a3c114562efbb8df1065e94766fc48 Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Tue, 10 Feb 2009 15:43:59 -0800 Subject: auto import from //branches/cupcake/...@130745 --- hw/android_arm.c | 45 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 11 deletions(-) (limited to 'hw/android_arm.c') diff --git a/hw/android_arm.c b/hw/android_arm.c index 3455054..efc8ba1 100644 --- a/hw/android_arm.c +++ b/hw/android_arm.c @@ -9,10 +9,18 @@ ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. */ -#include "vl.h" +#include "hw.h" +#include "boards.h" +#include "devices.h" +#include "net.h" #include "arm_pic.h" +#include "sysemu.h" #include "goldfish_device.h" #include "android/globals.h" +#include "audio/audio.h" +#include "arm-misc.h" + +#define ARM_CPU_SAVE_VERSION 1 int android_audio_enabled; char* audio_input_source = NULL; @@ -49,18 +57,23 @@ uint32_t switch_test_write(void *opaque, uint32_t state) } #endif -static void android_arm_init(int ram_size, int vga_ram_size, - int boot_device, DisplayState *ds, const char **fd_filename, int snapshot, - const char *kernel_filename, const char *kernel_cmdline, - const char *initrd_filename) +static void android_arm_init(ram_addr_t ram_size, int vga_ram_size, + const char *boot_device, DisplayState *ds, + const char *kernel_filename, + const char *kernel_cmdline, + const char *initrd_filename, + const char *cpu_model) { CPUState *env; qemu_irq *cpu_pic; qemu_irq *goldfish_pic; int i; + struct arm_boot_info info; + + if (!cpu_model) + cpu_model = "arm926"; - env = cpu_init(); - cpu_arm_set_model(env, ARM_CPUID_ARM926); + env = cpu_init(cpu_model); register_savevm( "cpu", 0, ARM_CPU_SAVE_VERSION, cpu_save, cpu_load, env ); @@ -108,8 +121,11 @@ static void android_arm_init(int ram_size, int vga_ram_size, goldfish_audio_init(0xff004000, 0, audio_input_source); } #endif - if (bs_table[0]) - goldfish_mmc_init(0xff005000, 0, bs_table[0]); + { + int idx = drive_get_index( IF_IDE, 0, 0 ); + if (idx >= 0) + goldfish_mmc_init(0xff005000, 0, drives_table[idx].bdrv); + } goldfish_memlog_init(0xff006000); @@ -140,8 +156,15 @@ static void android_arm_init(int ram_size, int vga_ram_size, } #endif - arm_load_kernel(ram_size, kernel_filename, kernel_cmdline, - initrd_filename, 1441); + memset(&info, 0, sizeof info); + info.ram_size = ram_size; + info.kernel_filename = kernel_filename; + info.kernel_cmdline = kernel_cmdline; + info.initrd_filename = initrd_filename; + info.nb_cpus = 1; + info.board_id = 1441; + + arm_load_kernel(env, &info); } QEMUMachine android_arm_machine = { -- cgit v1.1