From patchwork Wed Sep 30 10:17:50 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Isaku Yamahata X-Patchwork-Id: 34544 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id A744CB7BCE for ; Wed, 30 Sep 2009 21:19:34 +1000 (EST) Received: from localhost ([127.0.0.1]:57330 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MsxDX-0004Gl-M4 for incoming@patchwork.ozlabs.org; Wed, 30 Sep 2009 07:19:31 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MswIb-0004hK-2K for qemu-devel@nongnu.org; Wed, 30 Sep 2009 06:20:41 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MswIK-0004XB-Vr for qemu-devel@nongnu.org; Wed, 30 Sep 2009 06:20:31 -0400 Received: from [199.232.76.173] (port=43878 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MswIK-0004Wb-FI for qemu-devel@nongnu.org; Wed, 30 Sep 2009 06:20:24 -0400 Received: from mail.valinux.co.jp ([210.128.90.3]:55874) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MswII-0005q7-Vv for qemu-devel@nongnu.org; Wed, 30 Sep 2009 06:20:23 -0400 Received: from nm.local.valinux.co.jp (vagw.valinux.co.jp [210.128.90.14]) by mail.valinux.co.jp (Postfix) with ESMTP id E154449C15; Wed, 30 Sep 2009 19:20:16 +0900 (JST) Received: from yamahata by nm.local.valinux.co.jp with local (Exim 4.69) (envelope-from ) id 1MswGc-0003rR-Cm; Wed, 30 Sep 2009 19:18:38 +0900 From: Isaku Yamahata To: qemu-devel@nongnu.org, anthony@codemonkey.ws Date: Wed, 30 Sep 2009 19:17:50 +0900 Message-Id: <1254305917-14784-15-git-send-email-yamahata@valinux.co.jp> X-Mailer: git-send-email 1.6.0.2 In-Reply-To: <1254305917-14784-1-git-send-email-yamahata@valinux.co.jp> References: <1254305917-14784-1-git-send-email-yamahata@valinux.co.jp> X-Virus-Scanned: clamav-milter 0.95.2 at va-mail.local.valinux.co.jp X-Virus-Status: Clean X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) Cc: yamahata@valinux.co.jp Subject: [Qemu-devel] [PATCH 14/61] pc: split out memory allocation from pc_init1() into pc_memory_init() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Split out memory allocation and rom/bios loading which doesn't depend on piix from pc_init1() into pc_memory_init(). Later it will be used. Signed-off-by: Isaku Yamahata --- hw/pc.c | 69 +++++++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 43 insertions(+), 26 deletions(-) diff --git a/hw/pc.c b/hw/pc.c index 10847ae..b987b34 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -1148,36 +1148,20 @@ static qemu_irq *pc_allocate_cpu_irq(void) return qemu_allocate_irqs(pic_irq_request, NULL, 1); } -/* PC hardware initialisation */ -static void pc_init1(ram_addr_t ram_size, - const char *boot_device, - const char *kernel_filename, - const char *kernel_cmdline, - const char *initrd_filename, - const char *cpu_model, - int pci_enabled) +static void pc_memory_init(ram_addr_t ram_size, + const char *kernel_filename, + const char *kernel_cmdline, + const char *initrd_filename, + ram_addr_t *below_4g_mem_size_p, + ram_addr_t *above_4g_mem_size_p) { char *filename; int ret, linux_boot, i; ram_addr_t ram_addr, bios_offset, option_rom_offset; ram_addr_t below_4g_mem_size, above_4g_mem_size = 0; int bios_size, isa_bios_size, oprom_area_size; - PCIBus *pci_bus; - ISADevice *isa_dev; - PCII440FXState *i440fx_state; - int piix3_devfn = -1; - qemu_irq *cpu_irq; - qemu_irq *isa_irq; - qemu_irq *i8259; - IsaIrqState *isa_irq_state; - DriveInfo *dinfo; - DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; - BlockDriverState *fd[MAX_FD]; int using_vga = cirrus_vga_enabled || std_vga_enabled || vmsvga_enabled; void *fw_cfg; - fdctrl_t *floppy_controller; - RTCState *rtc_state; - PITState *pit; if (ram_size >= 0xe0000000 ) { above_4g_mem_size = ram_size - 0xe0000000; @@ -1185,13 +1169,11 @@ static void pc_init1(ram_addr_t ram_size, } else { below_4g_mem_size = ram_size; } + *above_4g_mem_size_p = above_4g_mem_size; + *below_4g_mem_size_p = below_4g_mem_size; linux_boot = (kernel_filename != NULL); - pc_cpus_init(cpu_model); - - vmport_init(); - /* allocate RAM */ ram_addr = qemu_ram_alloc(0xa0000); cpu_register_physical_memory(0, 0xa0000, ram_addr); @@ -1303,6 +1285,41 @@ static void pc_init1(ram_addr_t ram_size, oprom_area_size += load_option_rom(nic_oprom, 0xc0000 + oprom_area_size, 0xe0000); } +} + +/* PC hardware initialisation */ +static void pc_init1(ram_addr_t ram_size, + const char *boot_device, + const char *kernel_filename, + const char *kernel_cmdline, + const char *initrd_filename, + const char *cpu_model, + int pci_enabled) +{ + int i; + ram_addr_t below_4g_mem_size, above_4g_mem_size; + PCIBus *pci_bus; + ISADevice *isa_dev; + PCII440FXState *i440fx_state; + int piix3_devfn = -1; + qemu_irq *cpu_irq; + qemu_irq *isa_irq; + qemu_irq *i8259; + IsaIrqState *isa_irq_state; + DriveInfo *dinfo; + DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; + BlockDriverState *fd[MAX_FD]; + fdctrl_t *floppy_controller; + RTCState *rtc_state; + PITState *pit; + + pc_cpus_init(cpu_model); + + vmport_init(); + + /* allocate ram and load rom/bios */ + pc_memory_init(ram_size, kernel_filename, kernel_cmdline, initrd_filename, + &below_4g_mem_size, &above_4g_mem_size); cpu_irq = pc_allocate_cpu_irq(); i8259 = i8259_init(cpu_irq[0]);