mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 09:13:55 -06:00
target/ppc: Add helpers to check for SMT sibling threads
Add helpers for TCG code to determine if there are SMT siblings sharing per-core and per-lpar registers. This simplifies the callers and makes SMT register topology simpler to modify with later changes. Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
This commit is contained in:
parent
feb37fdc82
commit
50d8cfb949
5 changed files with 30 additions and 47 deletions
|
@ -3005,18 +3005,11 @@ static void msgsnd_core_tir(CPUPPCState *env, uint32_t target_tir, int irq)
|
|||
{
|
||||
PowerPCCPU *cpu = env_archcpu(env);
|
||||
CPUState *cs = env_cpu(env);
|
||||
uint32_t nr_threads = cs->nr_threads;
|
||||
|
||||
if (!(env->flags & POWERPC_FLAG_SMT_1LPAR)) {
|
||||
nr_threads = 1; /* msgsndp behaves as 1-thread in LPAR-per-thread mode*/
|
||||
}
|
||||
|
||||
if (target_tir >= nr_threads) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (nr_threads == 1) {
|
||||
ppc_set_irq(cpu, irq, 1);
|
||||
if (ppc_cpu_lpar_single_threaded(cs)) {
|
||||
if (target_tir == 0) {
|
||||
ppc_set_irq(cpu, irq, 1);
|
||||
}
|
||||
} else {
|
||||
CPUState *ccs;
|
||||
|
||||
|
@ -3071,7 +3064,7 @@ void helper_book3s_msgsnd(CPUPPCState *env, target_ulong rb)
|
|||
brdcast = true;
|
||||
}
|
||||
|
||||
if (cs->nr_threads == 1 || !brdcast) {
|
||||
if (ppc_cpu_core_single_threaded(cs) || !brdcast) {
|
||||
ppc_set_irq(cpu, PPC_INTERRUPT_HDOORBELL, 1);
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue