aboutsummaryrefslogtreecommitdiffstats
path: root/hw/android_arm.c
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-02-10 15:43:59 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-02-10 15:43:59 -0800
commitc27f813900a3c114562efbb8df1065e94766fc48 (patch)
treed95919283707dcab61009e27007374a745c9541e /hw/android_arm.c
parent0852ad57fa372f9b2854e4df685eaba8d8ef6790 (diff)
downloadexternal_qemu-c27f813900a3c114562efbb8df1065e94766fc48.zip
external_qemu-c27f813900a3c114562efbb8df1065e94766fc48.tar.gz
external_qemu-c27f813900a3c114562efbb8df1065e94766fc48.tar.bz2
auto import from //branches/cupcake/...@130745
Diffstat (limited to 'hw/android_arm.c')
-rw-r--r--hw/android_arm.c45
1 files changed, 34 insertions, 11 deletions
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 = {