[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH RFC 0/7] Introduce QOM CPU and use for target-arm
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PATCH RFC 0/7] Introduce QOM CPU and use for target-arm |
Date: |
Sun, 29 Jan 2012 14:25:24 +0100 |
Hello,
Here's a series against master, pushing QOM beyond what I've seen on Anthony's
qom-upstream and qom-rebase branches.
It depends on the object_class_foreach() fix posted separately.
Patch 1 is included here to show its use case in patch 5.
Patch 2 suggests a way to start using QOM beyond "devices" in system emulation.
Patch 3 suggests a way to integrate QOM into the user emulators as well.
Patches 4-5 introduce a CPU class and prepare its use in system and user mode.
Patches 6-7 build upon this infrastructure and start using it for ARM.
This series is surely not yet the final goal as discussed on IRC. It does help
with my and Peter's quest to further clean up the constantly growing mess
surrounding ARM reset vs. one-time initialization though.
The plan there is to get rid of the huge CPUID switch by moving the knowledge
of reset values to CPU classes and by dumb copying of values from class to
instance on reset. The latter for now requires to be able to obtain the
ObjectClass matching a CPUState - in target-specific code this works by simple
pointer arithmetic, encapsulated in a macro.
So, in a spirit similar to Anthony's i440FX rework I'm posting this to check if
I'm on the right track here before I start messing around with other targets.
Regards,
Andreas
Cc: Anthony Liguori <address@hidden>
Cc: Peter Maydell <address@hidden>
Cc: Paul Brook <address@hidden>
Andreas Färber (7):
qom: Introduce object_class_is_abstract()
qom: Register QOM infrastructure early
qom: Add QOM support to user emulators
qom: Introduce CPU class
cpu: Introduce cpu_class_foreach()
target-arm: Introduce QOM CPU and use for it CPUID lookup
target-arm: Embed CPUARMState in QOM ARMCPU
Makefile.objs | 1 +
Makefile.target | 16 +++-
Makefile.user | 1 +
arch_init.c | 1 +
bsd-user/main.c | 3 +
darwin-user/main.c | 4 +
hw/cpu.c | 52 +++++++++
include/qemu/cpu.h | 36 +++++++
include/qemu/object.h | 8 ++
linux-user/main.c | 3 +
module.h | 4 +
qom/object.c | 7 +-
target-arm/cpu-core.c | 281 +++++++++++++++++++++++++++++++++++++++++++++++++
target-arm/cpu-core.h | 40 +++++++
target-arm/helper.c | 87 +++++-----------
vl.c | 2 +
16 files changed, 480 insertions(+), 66 deletions(-)
create mode 100644 hw/cpu.c
create mode 100644 include/qemu/cpu.h
create mode 100644 target-arm/cpu-core.c
create mode 100644 target-arm/cpu-core.h
--
1.7.7
- [Qemu-devel] [PATCH RFC 0/7] Introduce QOM CPU and use for target-arm,
Andreas Färber <=
- [Qemu-devel] [PATCH RFC 2/7] qom: Register QOM infrastructure early, Andreas Färber, 2012/01/29
- [Qemu-devel] [PATCH RFC 3/7] qom: Add QOM support to user emulators, Andreas Färber, 2012/01/29
- [Qemu-devel] [PATCH RFC 5/7] cpu: Introduce cpu_class_foreach(), Andreas Färber, 2012/01/29
- [Qemu-devel] [PATCH 1/7][RESEND] qom: Introduce object_class_is_abstract(), Andreas Färber, 2012/01/29
- [Qemu-devel] [PATCH RFC 4/7] qom: Introduce CPU class, Andreas Färber, 2012/01/29