* [Qemu-devel] [PATCH v2 0/5] target-sparc: Preparations for CPUState part 4b series
@ 2012-10-12 2:23 Andreas Färber
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 1/5] sun4m: Pass SPARCCPU to cpu_set_irq() Andreas Färber
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Andreas Färber @ 2012-10-12 2:23 UTC (permalink / raw)
To: qemu-devel; +Cc: blauwirbel, Andreas Färber, Richard Henderson
Hello Blue,
These patches from my QOM CPUState part 4 series still apply to master.
In whatever way we solve the TLB flushing (needed for CPU VMState),
we'll need these. Can you please ack/apply?
As a reminder, SPARCCPU and CPUState are the same pointer, whereas
CPUSPARCState has been embedded into SPARCCPU. Therefore SPARCCPU is being
used as quickest way to get to both.
Available from:
git://github.com/afaerber/qemu-cpu.git qom-cpu-sparc
https://github.com/afaerber/qemu-cpu/commits/qom-cpu-sparc
Regards,
Andreas
Cc: Blue Swirl <blauwirbel@gmail.com>
Cc: Richard Henderson <rth@twiddle.net>
v1 -> v2:
* Cherry-picked sparc patches from QOM CPUState part 4 series.
* Expanded commit messages, no functional changes.
Andreas Färber (5):
sun4m: Pass SPARCCPU to cpu_set_irq()
sun4m: Pass SPARCCPU to cpu_kick_irq()
sun4u: Pass SPARCCPU to {,s,hs}tick_irq() and cpu_timer_create()
sun4u: Pass SPARCCPU to cpu_kick_irq()
sun4u: Pass SPARCCPU to cpu_set_ivec_irq()
hw/sun4m.c | 11 +++++++----
hw/sun4u.c | 36 ++++++++++++++++++++----------------
2 Dateien geändert, 27 Zeilen hinzugefügt(+), 20 Zeilen entfernt(-)
--
1.7.10.4
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v2 1/5] sun4m: Pass SPARCCPU to cpu_set_irq()
2012-10-12 2:23 [Qemu-devel] [PATCH v2 0/5] target-sparc: Preparations for CPUState part 4b series Andreas Färber
@ 2012-10-12 2:23 ` Andreas Färber
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 2/5] sun4m: Pass SPARCCPU to cpu_kick_irq() Andreas Färber
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Andreas Färber @ 2012-10-12 2:23 UTC (permalink / raw)
To: qemu-devel; +Cc: blauwirbel, Andreas Färber
Needed for changing cpu_kick_irq() argument type to SPARCCPU.
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
hw/sun4m.c | 5 +++--
1 Datei geändert, 3 Zeilen hinzugefügt(+), 2 Zeilen entfernt(-)
diff --git a/hw/sun4m.c b/hw/sun4m.c
index c98cd5e..c1ee8bd 100644
--- a/hw/sun4m.c
+++ b/hw/sun4m.c
@@ -262,7 +262,8 @@ static void cpu_kick_irq(CPUSPARCState *env)
static void cpu_set_irq(void *opaque, int irq, int level)
{
- CPUSPARCState *env = opaque;
+ SPARCCPU *cpu = opaque;
+ CPUSPARCState *env = &cpu->env;
if (level) {
trace_sun4m_cpu_set_irq_raise(irq);
@@ -840,7 +841,7 @@ static void cpu_devinit(const char *cpu_model, unsigned int id,
qemu_register_reset(secondary_cpu_reset, cpu);
env->halted = 1;
}
- *cpu_irqs = qemu_allocate_irqs(cpu_set_irq, env, MAX_PILS);
+ *cpu_irqs = qemu_allocate_irqs(cpu_set_irq, cpu, MAX_PILS);
env->prom_addr = prom_addr;
}
--
1.7.10.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v2 2/5] sun4m: Pass SPARCCPU to cpu_kick_irq()
2012-10-12 2:23 [Qemu-devel] [PATCH v2 0/5] target-sparc: Preparations for CPUState part 4b series Andreas Färber
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 1/5] sun4m: Pass SPARCCPU to cpu_set_irq() Andreas Färber
@ 2012-10-12 2:23 ` Andreas Färber
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 3/5] sun4u: Pass SPARCCPU to {, s, hs}tick_irq() and cpu_timer_create() Andreas Färber
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Andreas Färber @ 2012-10-12 2:23 UTC (permalink / raw)
To: qemu-devel; +Cc: blauwirbel, Andreas Färber
Needed for changing qemu_cpu_kick() argument type to CPUState.
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
hw/sun4m.c | 6 ++++--
1 Datei geändert, 4 Zeilen hinzugefügt(+), 2 Zeilen entfernt(-)
diff --git a/hw/sun4m.c b/hw/sun4m.c
index c1ee8bd..a04b485 100644
--- a/hw/sun4m.c
+++ b/hw/sun4m.c
@@ -253,8 +253,10 @@ void cpu_check_irqs(CPUSPARCState *env)
}
}
-static void cpu_kick_irq(CPUSPARCState *env)
+static void cpu_kick_irq(SPARCCPU *cpu)
{
+ CPUSPARCState *env = &cpu->env;
+
env->halted = 0;
cpu_check_irqs(env);
qemu_cpu_kick(env);
@@ -268,7 +270,7 @@ static void cpu_set_irq(void *opaque, int irq, int level)
if (level) {
trace_sun4m_cpu_set_irq_raise(irq);
env->pil_in |= 1 << irq;
- cpu_kick_irq(env);
+ cpu_kick_irq(cpu);
} else {
trace_sun4m_cpu_set_irq_lower(irq);
env->pil_in &= ~(1 << irq);
--
1.7.10.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v2 3/5] sun4u: Pass SPARCCPU to {, s, hs}tick_irq() and cpu_timer_create()
2012-10-12 2:23 [Qemu-devel] [PATCH v2 0/5] target-sparc: Preparations for CPUState part 4b series Andreas Färber
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 1/5] sun4m: Pass SPARCCPU to cpu_set_irq() Andreas Färber
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 2/5] sun4m: Pass SPARCCPU to cpu_kick_irq() Andreas Färber
@ 2012-10-12 2:23 ` Andreas Färber
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 4/5] sun4u: Pass SPARCCPU to cpu_kick_irq() Andreas Färber
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Andreas Färber @ 2012-10-12 2:23 UTC (permalink / raw)
To: qemu-devel; +Cc: blauwirbel, Andreas Färber
Needed for changing cpu_kick_irq() argument type to SPARCCPU.
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
hw/sun4u.c | 19 +++++++++++--------
1 Datei geändert, 11 Zeilen hinzugefügt(+), 8 Zeilen entfernt(-)
diff --git a/hw/sun4u.c b/hw/sun4u.c
index 137a7c6..4cea102 100644
--- a/hw/sun4u.c
+++ b/hw/sun4u.c
@@ -366,7 +366,7 @@ void cpu_get_timer(QEMUFile *f, CPUTimer *s)
qemu_get_timer(f, s->qtimer);
}
-static CPUTimer* cpu_timer_create(const char* name, CPUSPARCState *env,
+static CPUTimer *cpu_timer_create(const char *name, SPARCCPU *cpu,
QEMUBHFunc *cb, uint32_t frequency,
uint64_t disabled_mask)
{
@@ -379,7 +379,7 @@ static CPUTimer* cpu_timer_create(const char* name, CPUSPARCState *env,
timer->disabled = 1;
timer->clock_offset = qemu_get_clock_ns(vm_clock);
- timer->qtimer = qemu_new_timer_ns(vm_clock, cb, env);
+ timer->qtimer = qemu_new_timer_ns(vm_clock, cb, cpu);
return timer;
}
@@ -418,7 +418,8 @@ static void main_cpu_reset(void *opaque)
static void tick_irq(void *opaque)
{
- CPUSPARCState *env = opaque;
+ SPARCCPU *cpu = opaque;
+ CPUSPARCState *env = &cpu->env;
CPUTimer* timer = env->tick;
@@ -435,7 +436,8 @@ static void tick_irq(void *opaque)
static void stick_irq(void *opaque)
{
- CPUSPARCState *env = opaque;
+ SPARCCPU *cpu = opaque;
+ CPUSPARCState *env = &cpu->env;
CPUTimer* timer = env->stick;
@@ -452,7 +454,8 @@ static void stick_irq(void *opaque)
static void hstick_irq(void *opaque)
{
- CPUSPARCState *env = opaque;
+ SPARCCPU *cpu = opaque;
+ CPUSPARCState *env = &cpu->env;
CPUTimer* timer = env->hstick;
@@ -772,13 +775,13 @@ static SPARCCPU *cpu_devinit(const char *cpu_model, const struct hwdef *hwdef)
}
env = &cpu->env;
- env->tick = cpu_timer_create("tick", env, tick_irq,
+ env->tick = cpu_timer_create("tick", cpu, tick_irq,
tick_frequency, TICK_NPT_MASK);
- env->stick = cpu_timer_create("stick", env, stick_irq,
+ env->stick = cpu_timer_create("stick", cpu, stick_irq,
stick_frequency, TICK_INT_DIS);
- env->hstick = cpu_timer_create("hstick", env, hstick_irq,
+ env->hstick = cpu_timer_create("hstick", cpu, hstick_irq,
hstick_frequency, TICK_INT_DIS);
reset_info = g_malloc0(sizeof(ResetData));
--
1.7.10.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v2 4/5] sun4u: Pass SPARCCPU to cpu_kick_irq()
2012-10-12 2:23 [Qemu-devel] [PATCH v2 0/5] target-sparc: Preparations for CPUState part 4b series Andreas Färber
` (2 preceding siblings ...)
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 3/5] sun4u: Pass SPARCCPU to {, s, hs}tick_irq() and cpu_timer_create() Andreas Färber
@ 2012-10-12 2:23 ` Andreas Färber
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 5/5] sun4u: Pass SPARCCPU to cpu_set_ivec_irq() Andreas Färber
2012-10-13 14:22 ` [Qemu-devel] [PATCH v2 0/5] target-sparc: Preparations for CPUState part 4b series Blue Swirl
5 siblings, 0 replies; 7+ messages in thread
From: Andreas Färber @ 2012-10-12 2:23 UTC (permalink / raw)
To: qemu-devel; +Cc: blauwirbel, Andreas Färber
Needed for changing qemu_cpu_kick() argument type to CPUState.
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
hw/sun4u.c | 10 ++++++----
1 Datei geändert, 6 Zeilen hinzugefügt(+), 4 Zeilen entfernt(-)
diff --git a/hw/sun4u.c b/hw/sun4u.c
index 4cea102..0453522 100644
--- a/hw/sun4u.c
+++ b/hw/sun4u.c
@@ -310,8 +310,10 @@ void cpu_check_irqs(CPUSPARCState *env)
}
}
-static void cpu_kick_irq(CPUSPARCState *env)
+static void cpu_kick_irq(SPARCCPU *cpu)
{
+ CPUSPARCState *env = &cpu->env;
+
env->halted = 0;
cpu_check_irqs(env);
qemu_cpu_kick(env);
@@ -431,7 +433,7 @@ static void tick_irq(void *opaque)
}
env->softint |= SOFTINT_TIMER;
- cpu_kick_irq(env);
+ cpu_kick_irq(cpu);
}
static void stick_irq(void *opaque)
@@ -449,7 +451,7 @@ static void stick_irq(void *opaque)
}
env->softint |= SOFTINT_STIMER;
- cpu_kick_irq(env);
+ cpu_kick_irq(cpu);
}
static void hstick_irq(void *opaque)
@@ -467,7 +469,7 @@ static void hstick_irq(void *opaque)
}
env->softint |= SOFTINT_STIMER;
- cpu_kick_irq(env);
+ cpu_kick_irq(cpu);
}
static int64_t cpu_to_timer_ticks(int64_t cpu_ticks, uint32_t frequency)
--
1.7.10.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v2 5/5] sun4u: Pass SPARCCPU to cpu_set_ivec_irq()
2012-10-12 2:23 [Qemu-devel] [PATCH v2 0/5] target-sparc: Preparations for CPUState part 4b series Andreas Färber
` (3 preceding siblings ...)
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 4/5] sun4u: Pass SPARCCPU to cpu_kick_irq() Andreas Färber
@ 2012-10-12 2:23 ` Andreas Färber
2012-10-13 14:22 ` [Qemu-devel] [PATCH v2 0/5] target-sparc: Preparations for CPUState part 4b series Blue Swirl
5 siblings, 0 replies; 7+ messages in thread
From: Andreas Färber @ 2012-10-12 2:23 UTC (permalink / raw)
To: qemu-devel; +Cc: blauwirbel, Andreas Färber
Needed for moving halted field to CPUState.
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
hw/sun4u.c | 7 +++----
1 Datei geändert, 3 Zeilen hinzugefügt(+), 4 Zeilen entfernt(-)
diff --git a/hw/sun4u.c b/hw/sun4u.c
index 0453522..940db33 100644
--- a/hw/sun4u.c
+++ b/hw/sun4u.c
@@ -321,7 +321,8 @@ static void cpu_kick_irq(SPARCCPU *cpu)
static void cpu_set_ivec_irq(void *opaque, int irq, int level)
{
- CPUSPARCState *env = opaque;
+ SPARCCPU *cpu = opaque;
+ CPUSPARCState *env = &cpu->env;
if (level) {
if (!(env->ivec_status & 0x20)) {
@@ -802,7 +803,6 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
const struct hwdef *hwdef)
{
SPARCCPU *cpu;
- CPUSPARCState *env;
M48t59State *nvram;
unsigned int i;
uint64_t initrd_addr, initrd_size, kernel_addr, kernel_size, kernel_entry;
@@ -815,14 +815,13 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
/* init CPUs */
cpu = cpu_devinit(cpu_model, hwdef);
- env = &cpu->env;
/* set up devices */
ram_init(0, RAM_size);
prom_init(hwdef->prom_addr, bios_name);
- ivec_irqs = qemu_allocate_irqs(cpu_set_ivec_irq, env, IVEC_MAX);
+ ivec_irqs = qemu_allocate_irqs(cpu_set_ivec_irq, cpu, IVEC_MAX);
pci_bus = pci_apb_init(APB_SPECIAL_BASE, APB_MEM_BASE, ivec_irqs, &pci_bus2,
&pci_bus3, &pbm_irqs);
pci_vga_init(pci_bus);
--
1.7.10.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2 0/5] target-sparc: Preparations for CPUState part 4b series
2012-10-12 2:23 [Qemu-devel] [PATCH v2 0/5] target-sparc: Preparations for CPUState part 4b series Andreas Färber
` (4 preceding siblings ...)
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 5/5] sun4u: Pass SPARCCPU to cpu_set_ivec_irq() Andreas Färber
@ 2012-10-13 14:22 ` Blue Swirl
5 siblings, 0 replies; 7+ messages in thread
From: Blue Swirl @ 2012-10-13 14:22 UTC (permalink / raw)
To: Andreas Färber; +Cc: qemu-devel, Richard Henderson
On Fri, Oct 12, 2012 at 2:23 AM, Andreas Färber <afaerber@suse.de> wrote:
> Hello Blue,
>
> These patches from my QOM CPUState part 4 series still apply to master.
> In whatever way we solve the TLB flushing (needed for CPU VMState),
> we'll need these. Can you please ack/apply?
Thanks, applied all.
>
> As a reminder, SPARCCPU and CPUState are the same pointer, whereas
> CPUSPARCState has been embedded into SPARCCPU. Therefore SPARCCPU is being
> used as quickest way to get to both.
>
> Available from:
> git://github.com/afaerber/qemu-cpu.git qom-cpu-sparc
> https://github.com/afaerber/qemu-cpu/commits/qom-cpu-sparc
>
> Regards,
> Andreas
>
> Cc: Blue Swirl <blauwirbel@gmail.com>
>
> Cc: Richard Henderson <rth@twiddle.net>
>
> v1 -> v2:
> * Cherry-picked sparc patches from QOM CPUState part 4 series.
> * Expanded commit messages, no functional changes.
>
> Andreas Färber (5):
> sun4m: Pass SPARCCPU to cpu_set_irq()
> sun4m: Pass SPARCCPU to cpu_kick_irq()
> sun4u: Pass SPARCCPU to {,s,hs}tick_irq() and cpu_timer_create()
> sun4u: Pass SPARCCPU to cpu_kick_irq()
> sun4u: Pass SPARCCPU to cpu_set_ivec_irq()
>
> hw/sun4m.c | 11 +++++++----
> hw/sun4u.c | 36 ++++++++++++++++++++----------------
> 2 Dateien geändert, 27 Zeilen hinzugefügt(+), 20 Zeilen entfernt(-)
>
> --
> 1.7.10.4
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-10-13 14:23 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-12 2:23 [Qemu-devel] [PATCH v2 0/5] target-sparc: Preparations for CPUState part 4b series Andreas Färber
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 1/5] sun4m: Pass SPARCCPU to cpu_set_irq() Andreas Färber
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 2/5] sun4m: Pass SPARCCPU to cpu_kick_irq() Andreas Färber
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 3/5] sun4u: Pass SPARCCPU to {, s, hs}tick_irq() and cpu_timer_create() Andreas Färber
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 4/5] sun4u: Pass SPARCCPU to cpu_kick_irq() Andreas Färber
2012-10-12 2:23 ` [Qemu-devel] [PATCH v2 5/5] sun4u: Pass SPARCCPU to cpu_set_ivec_irq() Andreas Färber
2012-10-13 14:22 ` [Qemu-devel] [PATCH v2 0/5] target-sparc: Preparations for CPUState part 4b series Blue Swirl
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).