mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 10:34:58 -06:00
target/ppc: add support for hypervisor doorbells on book3s CPUs
The hypervisor doorbells are used by skiboot and Linux on POWER9 processors to wake up secondaries. This adds processor control support to the Server architecture by reusing the Embedded support. They are very similar, only the bits definition of the CPU identifier differ. Still to be done is message broadcast to all threads of the same processor. Signed-off-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
3a14ba4664
commit
7af1e7b022
5 changed files with 84 additions and 5 deletions
|
@ -6170,7 +6170,12 @@ static void gen_msgclr(DisasContext *ctx)
|
|||
GEN_PRIV;
|
||||
#else
|
||||
CHK_HV;
|
||||
gen_helper_msgclr(cpu_env, cpu_gpr[rB(ctx->opcode)]);
|
||||
/* 64-bit server processors compliant with arch 2.x */
|
||||
if (ctx->insns_flags & PPC_SEGMENT_64B) {
|
||||
gen_helper_book3s_msgclr(cpu_env, cpu_gpr[rB(ctx->opcode)]);
|
||||
} else {
|
||||
gen_helper_msgclr(cpu_env, cpu_gpr[rB(ctx->opcode)]);
|
||||
}
|
||||
#endif /* defined(CONFIG_USER_ONLY) */
|
||||
}
|
||||
|
||||
|
@ -6180,10 +6185,24 @@ static void gen_msgsnd(DisasContext *ctx)
|
|||
GEN_PRIV;
|
||||
#else
|
||||
CHK_HV;
|
||||
gen_helper_msgsnd(cpu_gpr[rB(ctx->opcode)]);
|
||||
/* 64-bit server processors compliant with arch 2.x */
|
||||
if (ctx->insns_flags & PPC_SEGMENT_64B) {
|
||||
gen_helper_book3s_msgsnd(cpu_gpr[rB(ctx->opcode)]);
|
||||
} else {
|
||||
gen_helper_msgsnd(cpu_gpr[rB(ctx->opcode)]);
|
||||
}
|
||||
#endif /* defined(CONFIG_USER_ONLY) */
|
||||
}
|
||||
|
||||
static void gen_msgsync(DisasContext *ctx)
|
||||
{
|
||||
#if defined(CONFIG_USER_ONLY)
|
||||
GEN_PRIV;
|
||||
#else
|
||||
CHK_HV;
|
||||
#endif /* defined(CONFIG_USER_ONLY) */
|
||||
/* interpreted as no-op */
|
||||
}
|
||||
|
||||
#if defined(TARGET_PPC64)
|
||||
static void gen_maddld(DisasContext *ctx)
|
||||
|
@ -6664,6 +6683,8 @@ GEN_HANDLER2_E(msgsnd, "msgsnd", 0x1F, 0x0E, 0x06, 0x03ff0001,
|
|||
PPC_NONE, PPC2_PRCNTL),
|
||||
GEN_HANDLER2_E(msgclr, "msgclr", 0x1F, 0x0E, 0x07, 0x03ff0001,
|
||||
PPC_NONE, PPC2_PRCNTL),
|
||||
GEN_HANDLER2_E(msgsync, "msgsync", 0x1F, 0x16, 0x1B, 0x00000000,
|
||||
PPC_NONE, PPC2_PRCNTL),
|
||||
GEN_HANDLER(wrtee, 0x1F, 0x03, 0x04, 0x000FFC01, PPC_WRTEE),
|
||||
GEN_HANDLER(wrteei, 0x1F, 0x03, 0x05, 0x000E7C01, PPC_WRTEE),
|
||||
GEN_HANDLER(dlmzb, 0x1F, 0x0E, 0x02, 0x00000000, PPC_440_SPEC),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue