From patchwork Mon May 23 20:28:30 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 97053 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 5EDB2B6FB9 for ; Tue, 24 May 2011 06:36:27 +1000 (EST) Received: from localhost ([::1]:54701 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QObrU-00080L-Ky for incoming@patchwork.ozlabs.org; Mon, 23 May 2011 16:36:24 -0400 Received: from eggs.gnu.org ([140.186.70.92]:42720) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QObkW-00054k-WF for qemu-devel@nongnu.org; Mon, 23 May 2011 16:29:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QObkV-0008Kq-UX for qemu-devel@nongnu.org; Mon, 23 May 2011 16:29:12 -0400 Received: from mail-gw0-f45.google.com ([74.125.83.45]:52905) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QObkV-0008Gw-Rz for qemu-devel@nongnu.org; Mon, 23 May 2011 16:29:11 -0400 Received: by mail-gw0-f45.google.com with SMTP id 19so2711964gwb.4 for ; Mon, 23 May 2011 13:29:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:sender:from:to:subject:date:message-id:x-mailer :in-reply-to:references; bh=mqFllN11rqikYkfz4GdK+2I8rtffoybzWYCE9kVghI4=; b=Gh0FtiH3p5oFrZr/21mAnjFcCW9/uCHVVfGBxiV9p73uieGD7lRec/k5fFxw9kvoNn ohto2aUyxCqp/UrIqTqc3nyQKeRO6UoTx6PDw7yRUFIoYdjc/cZorG1MYgUqjk81QZkl nEy+2thRRsfNaPLUK8knkzpJTJK1HlJy70lW0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:from:to:subject:date:message-id:x-mailer:in-reply-to :references; b=qHjiyuH8h2K26VuVW0/UD/9NaMIQYl8GKKrICoFrmf6KfmPHTgL3b6uHVf7ME6q2TE 4OK3ukcYZO0XxgPay30oB5J6zDXCCkJuJfSt1uSeyy+dIH9nU2UYiSNWrP8C2cUFt2ki ZPUoGuavea9bCl3ASSX1hcCROUGYa7GZPXtcw= Received: by 10.91.86.4 with SMTP id o4mr3585266agl.38.1306182550925; Mon, 23 May 2011 13:29:10 -0700 (PDT) Received: from localhost.localdomain (c-71-227-161-214.hsd1.wa.comcast.net [71.227.161.214]) by mx.google.com with ESMTPS id e9sm5033668ann.24.2011.05.23.13.29.09 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 23 May 2011 13:29:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Mon, 23 May 2011 13:28:30 -0700 Message-Id: <1306182526-12081-11-git-send-email-rth@twiddle.net> X-Mailer: git-send-email 1.7.4.4 In-Reply-To: <1306182526-12081-1-git-send-email-rth@twiddle.net> References: <1306182526-12081-1-git-send-email-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 74.125.83.45 Subject: [Qemu-devel] [PATCH 10/26] target-alpha: Enable the alpha-softmmu target. X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org With all of the pre-existing code that would not compile gone, this is the earliest point at which the target can be enabled. There is no machine defined yet, so this will crash on startup. Enable the target anyway, to make sure that further compilation problems do not creep back in. Signed-off-by: Richard Henderson --- Makefile.target | 3 +- configure | 1 + default-configs/alpha-softmmu.mak | 9 ++++ target-alpha/machine.c | 74 +++++++++++++++++++++++++++++++++++++ 4 files changed, 86 insertions(+), 1 deletions(-) create mode 100644 default-configs/alpha-softmmu.mak create mode 100644 target-alpha/machine.c diff --git a/Makefile.target b/Makefile.target index 9f67ae7..0803f0b 100644 --- a/Makefile.target +++ b/Makefile.target @@ -376,7 +376,8 @@ obj-m68k-y += m68k-semi.o dummy_m68k.o obj-s390x-y = s390-virtio-bus.o s390-virtio.o -obj-alpha-y = +obj-alpha-y = i8259.o mc146818rtc.o +obj-alpha-y += vga.o cirrus_vga.o main.o: QEMU_CFLAGS+=$(GPROF_CFLAGS) diff --git a/configure b/configure index d7dba5d..f42760c 100755 --- a/configure +++ b/configure @@ -831,6 +831,7 @@ if [ "$softmmu" = "yes" ] ; then default_target_list="\ i386-softmmu \ x86_64-softmmu \ +alpha-softmmu \ arm-softmmu \ cris-softmmu \ lm32-softmmu \ diff --git a/default-configs/alpha-softmmu.mak b/default-configs/alpha-softmmu.mak new file mode 100644 index 0000000..abadcff --- /dev/null +++ b/default-configs/alpha-softmmu.mak @@ -0,0 +1,9 @@ +# Default configuration for alpha-softmmu + +include pci.mak +CONFIG_SERIAL=y +CONFIG_I8254=y +CONFIG_VGA_PCI=y +CONFIG_IDE_CORE=y +CONFIG_IDE_QDEV=y +CONFIG_VMWARE_VGA=y diff --git a/target-alpha/machine.c b/target-alpha/machine.c new file mode 100644 index 0000000..ed9bf65 --- /dev/null +++ b/target-alpha/machine.c @@ -0,0 +1,74 @@ +#include "hw/hw.h" +#include "hw/boards.h" + +static int get_fpcr(QEMUFile *f, void *opaque, size_t size) +{ + CPUAlphaState *env = opaque; + cpu_alpha_store_fpcr(env, qemu_get_be64(f)); + return 0; +} + +static void put_fpcr(QEMUFile *f, void *opaque, size_t size) +{ + CPUAlphaState *env = opaque; + qemu_put_be64(f, cpu_alpha_load_fpcr(env)); +} + +static const VMStateInfo vmstate_fpcr = { + .name = "fpcr", + .get = get_fpcr, + .put = put_fpcr, +}; + +static VMStateField vmstate_cpu_fields[] = { + VMSTATE_UINTTL_ARRAY(ir, CPUState, 31), + VMSTATE_UINTTL_ARRAY(fir, CPUState, 31), + /* Save the architecture value of the fpcr, not the internally + expanded version. Since this architecture value does not + exist in memory to be stored, this requires a but of hoop + jumping. We want OFFSET=0 so that we effectively pass ENV + to the helper functions, and we need to fill in the name by + hand since there's no field of that name. */ + { + .name = "fpcr", + .version_id = 0, + .size = sizeof(uint64_t), + .info = &vmstate_fpcr, + .flags = VMS_SINGLE, + .offset = 0 + }, + VMSTATE_UINTTL(pc, CPUState), + VMSTATE_UINTTL(unique, CPUState), + VMSTATE_UINTTL(lock_addr, CPUState), + VMSTATE_UINTTL(lock_value, CPUState), + /* Note that lock_st_addr is not saved; it is a temporary + used during the execution of the st[lq]_c insns. */ + + VMSTATE_UINT8(ps, CPUState), + VMSTATE_UINT8(intr_flag, CPUState), + VMSTATE_UINT8(pal_mode, CPUState), + + VMSTATE_UINTTL(trap_arg0, CPUState), + VMSTATE_UINTTL(trap_arg1, CPUState), + VMSTATE_UINTTL(trap_arg2, CPUState), + + VMSTATE_END_OF_LIST() +}; + +static const VMStateDescription vmstate_cpu = { + .name = "cpu", + .version_id = 1, + .minimum_version_id = 1, + .minimum_version_id_old = 1, + .fields = vmstate_cpu_fields, +}; + +void cpu_save(QEMUFile *f, void *opaque) +{ + vmstate_save_state(f, &vmstate_cpu, opaque); +} + +int cpu_load(QEMUFile *f, void *opaque, int version_id) +{ + return vmstate_load_state(f, &vmstate_cpu, opaque, version_id); +}