On Mon, Dec 9, 2013 at 10:10 AM, liguang <lig.f...@cn.fujitsu.com> wrote: > Signed-off-by: liguang <lig.f...@cn.fujitsu.com>
Acked-by: Peter Crosthwaite <peter.crosthwa...@xilinx.com> > --- > hw/arm/Makefile.objs | 2 +- > hw/arm/cubieboard.c | 69 > ++++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 70 insertions(+), 1 deletions(-) > create mode 100644 hw/arm/cubieboard.c > > diff --git a/hw/arm/Makefile.objs b/hw/arm/Makefile.objs > index 012bd2c..1dd94de 100644 > --- a/hw/arm/Makefile.objs > +++ b/hw/arm/Makefile.objs > @@ -5,4 +5,4 @@ obj-y += tosa.o versatilepb.o vexpress.o xilinx_zynq.o z2.o > > obj-y += armv7m.o exynos4210.o pxa2xx.o pxa2xx_gpio.o pxa2xx_pic.o > obj-y += omap1.o omap2.o strongarm.o > -obj-$(CONFIG_ALLWINNER_A10) += allwinner-a10.o > +obj-$(CONFIG_ALLWINNER_A10) += allwinner-a10.o cubieboard.o > diff --git a/hw/arm/cubieboard.c b/hw/arm/cubieboard.c > new file mode 100644 > index 0000000..3fcb6d2 > --- /dev/null > +++ b/hw/arm/cubieboard.c > @@ -0,0 +1,69 @@ > +/* > + * cubieboard emulation > + * > + * Copyright (C) 2013 Li Guang > + * Written by Li Guang <lig.f...@cn.fujitsu.com> > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License as published by the > + * Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, but > WITHOUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > + * for more details. > + */ > + > +#include "hw/sysbus.h" > +#include "hw/devices.h" > +#include "hw/boards.h" > +#include "hw/arm/allwinner-a10.h" > + > +static struct arm_boot_info cubieboard_binfo = { > + .loader_start = AW_A10_SDRAM_BASE, > + .board_id = 0x1008, > +}; > + > +typedef struct CubieBoardState { > + AwA10State *a10; > + MemoryRegion sdram; > +} CubieBoardState; > + > +static void cubieboard_init(QEMUMachineInitArgs *args) > +{ > + CubieBoardState *s = g_new(CubieBoardState, 1); > + Error *err = NULL; > + > + s->a10 = AW_A10(object_new(TYPE_AW_A10)); > + object_property_set_bool(OBJECT(s->a10), true, "realized", &err); > + if (err != NULL) { > + error_report("Couldn't realize Allwinner A10: %s\n", > + error_get_pretty(err)); > + exit(1); > + } > + > + memory_region_init_ram(&s->sdram, NULL, "cubieboard.ram", > args->ram_size); > + vmstate_register_ram_global(&s->sdram); > + memory_region_add_subregion(get_system_memory(), AW_A10_SDRAM_BASE, > + &s->sdram); > + > + cubieboard_binfo.ram_size = args->ram_size; > + cubieboard_binfo.kernel_filename = args->kernel_filename; > + cubieboard_binfo.kernel_cmdline = args->kernel_cmdline; > + arm_load_kernel(&s->a10->cpu, &cubieboard_binfo); > +} > + > +static QEMUMachine cubieboard_machine = { > + .name = "cubieboard", > + .desc = "cubietech cubieboard", > + .init = cubieboard_init, > +}; > + > + > +static void cubieboard_machine_init(void) > +{ > + qemu_register_machine(&cubieboard_machine); > +} > + > +machine_init(cubieboard_machine_init) > -- > 1.7.2.5 > >