Browse Source
Embed CPUAlphaState as first member of AlphaCPU. Signed-off-by: Andreas Färber <afaerber@suse.de> Acked-by: Richard Henderson <rth@twiddle.net>stable-1.1
5 changed files with 114 additions and 1 deletions
@ -0,0 +1,71 @@ |
|||
/*
|
|||
* QEMU Alpha CPU |
|||
* |
|||
* Copyright (c) 2012 SUSE LINUX Products GmbH |
|||
* |
|||
* This library is free software; you can redistribute it and/or |
|||
* modify it under the terms of the GNU Lesser General Public |
|||
* License as published by the Free Software Foundation; either |
|||
* version 2.1 of the License, or (at your option) any later version. |
|||
* |
|||
* This library 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 |
|||
* Lesser General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Lesser General Public |
|||
* License along with this library; if not, see |
|||
* <http://www.gnu.org/licenses/lgpl-2.1.html>
|
|||
*/ |
|||
#ifndef QEMU_ALPHA_CPU_QOM_H |
|||
#define QEMU_ALPHA_CPU_QOM_H |
|||
|
|||
#include "qemu/cpu.h" |
|||
#include "cpu.h" |
|||
|
|||
#define TYPE_ALPHA_CPU "alpha-cpu" |
|||
|
|||
#define ALPHA_CPU_CLASS(klass) \ |
|||
OBJECT_CLASS_CHECK(AlphaCPUClass, (klass), TYPE_ALPHA_CPU) |
|||
#define ALPHA_CPU(obj) \ |
|||
OBJECT_CHECK(AlphaCPU, (obj), TYPE_ALPHA_CPU) |
|||
#define ALPHA_CPU_GET_CLASS(obj) \ |
|||
OBJECT_GET_CLASS(AlphaCPUClass, (obj), TYPE_ALPHA_CPU) |
|||
|
|||
/**
|
|||
* AlphaCPUClass: |
|||
* @parent_reset: The parent class' reset handler. |
|||
* |
|||
* An Alpha CPU model. |
|||
*/ |
|||
typedef struct AlphaCPUClass { |
|||
/*< private >*/ |
|||
CPUClass parent_class; |
|||
/*< public >*/ |
|||
|
|||
void (*parent_reset)(CPUState *cpu); |
|||
} AlphaCPUClass; |
|||
|
|||
/**
|
|||
* AlphaCPU: |
|||
* @env: #CPUAlphaState |
|||
* |
|||
* An Alpha CPU. |
|||
*/ |
|||
typedef struct AlphaCPU { |
|||
/*< private >*/ |
|||
CPUState parent_obj; |
|||
/*< public >*/ |
|||
|
|||
CPUAlphaState env; |
|||
} AlphaCPU; |
|||
|
|||
static inline AlphaCPU *alpha_env_get_cpu(CPUAlphaState *env) |
|||
{ |
|||
return ALPHA_CPU(container_of(env, AlphaCPU, env)); |
|||
} |
|||
|
|||
#define ENV_GET_CPU(e) CPU(alpha_env_get_cpu(e)) |
|||
|
|||
|
|||
#endif |
|||
@ -0,0 +1,38 @@ |
|||
/*
|
|||
* QEMU Alpha CPU |
|||
* |
|||
* Copyright (c) 2012 SUSE LINUX Products GmbH |
|||
* |
|||
* This library is free software; you can redistribute it and/or |
|||
* modify it under the terms of the GNU Lesser General Public |
|||
* License as published by the Free Software Foundation; either |
|||
* version 2.1 of the License, or (at your option) any later version. |
|||
* |
|||
* This library 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 |
|||
* Lesser General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Lesser General Public |
|||
* License along with this library; if not, see |
|||
* <http://www.gnu.org/licenses/lgpl-2.1.html>
|
|||
*/ |
|||
|
|||
#include "cpu-qom.h" |
|||
#include "qemu-common.h" |
|||
|
|||
|
|||
static const TypeInfo alpha_cpu_type_info = { |
|||
.name = TYPE_ALPHA_CPU, |
|||
.parent = TYPE_CPU, |
|||
.instance_size = sizeof(AlphaCPU), |
|||
.abstract = false, |
|||
.class_size = sizeof(AlphaCPUClass), |
|||
}; |
|||
|
|||
static void alpha_cpu_register_types(void) |
|||
{ |
|||
type_register_static(&alpha_cpu_type_info); |
|||
} |
|||
|
|||
type_init(alpha_cpu_register_types) |
|||
Loading…
Reference in new issue