s390x: move s390_cpu_addr2state to target/s390x/sigp.c
This function has no dependency on the virtio-ccw machine type, though it assumes that the CPU address corresponds to the core_id and the index. If there is any need of something different or more fancy (unlikely) S390 can include a MachineClass subclass and implement it there. For now, move it to sigp.c for simplicity. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Message-ID: <20240509170044.190795-2-pbonzini@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
d1b223dd07
commit
ef7c4a97bf
@ -50,22 +50,6 @@
|
||||
|
||||
static Error *pv_mig_blocker;
|
||||
|
||||
S390CPU *s390_cpu_addr2state(uint16_t cpu_addr)
|
||||
{
|
||||
static MachineState *ms;
|
||||
|
||||
if (!ms) {
|
||||
ms = MACHINE(qdev_get_machine());
|
||||
g_assert(ms->possible_cpus);
|
||||
}
|
||||
|
||||
/* CPU address corresponds to the core_id and the index */
|
||||
if (cpu_addr >= ms->possible_cpus->len) {
|
||||
return NULL;
|
||||
}
|
||||
return S390_CPU(ms->possible_cpus->cpus[cpu_addr].cpu);
|
||||
}
|
||||
|
||||
static S390CPU *s390x_new_cpu(const char *typename, uint32_t core_id,
|
||||
Error **errp)
|
||||
{
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "qemu/osdep.h"
|
||||
#include "cpu.h"
|
||||
#include "s390x-internal.h"
|
||||
#include "hw/boards.h"
|
||||
#include "sysemu/hw_accel.h"
|
||||
#include "sysemu/runstate.h"
|
||||
#include "exec/address-spaces.h"
|
||||
@ -435,6 +436,22 @@ static int sigp_set_architecture(S390CPU *cpu, uint32_t param,
|
||||
return SIGP_CC_STATUS_STORED;
|
||||
}
|
||||
|
||||
S390CPU *s390_cpu_addr2state(uint16_t cpu_addr)
|
||||
{
|
||||
static MachineState *ms;
|
||||
|
||||
if (!ms) {
|
||||
ms = MACHINE(qdev_get_machine());
|
||||
g_assert(ms->possible_cpus);
|
||||
}
|
||||
|
||||
/* CPU address corresponds to the core_id and the index */
|
||||
if (cpu_addr >= ms->possible_cpus->len) {
|
||||
return NULL;
|
||||
}
|
||||
return S390_CPU(ms->possible_cpus->cpus[cpu_addr].cpu);
|
||||
}
|
||||
|
||||
int handle_sigp(CPUS390XState *env, uint8_t order, uint64_t r1, uint64_t r3)
|
||||
{
|
||||
uint64_t *status_reg = &env->regs[r1];
|
||||
|
Loading…
x
Reference in New Issue
Block a user