mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 09:43:56 -06:00
ppc: Rework POWER7 & POWER8 exception model
From: Benjamin Herrenschmidt <benh@kernel.crashing.org> This patch fixes the current AIL implementation for POWER8. The interrupt vector address can be calculated directly from LPCR when the exception is handled. The excp_prefix update becomes useless and we can cleanup the H_SET_MODE hcall. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> [clg: Removed LPES0/1 handling for HV vs. !HV Fixed LPCR_ILE case for POWERPC_EXCP_POWER8 ] Signed-off-by: Cédric Le Goater <clg@fr.ibm.com> [dwg: This was written as a cleanup, but it also fixes a real bug where setting an alternative interrupt location would not be correctly migrated] Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
2e3a76ae3e
commit
5c94b2a5e5
5 changed files with 59 additions and 23 deletions
|
@ -824,7 +824,6 @@ static target_ulong h_set_mode_resource_addr_trans_mode(PowerPCCPU *cpu,
|
|||
{
|
||||
CPUState *cs;
|
||||
PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu);
|
||||
target_ulong prefix;
|
||||
|
||||
if (!(pcc->insns_flags2 & PPC2_ISA207S)) {
|
||||
return H_P2;
|
||||
|
@ -836,25 +835,12 @@ static target_ulong h_set_mode_resource_addr_trans_mode(PowerPCCPU *cpu,
|
|||
return H_P4;
|
||||
}
|
||||
|
||||
switch (mflags) {
|
||||
case H_SET_MODE_ADDR_TRANS_NONE:
|
||||
prefix = 0;
|
||||
break;
|
||||
case H_SET_MODE_ADDR_TRANS_0001_8000:
|
||||
prefix = 0x18000;
|
||||
break;
|
||||
case H_SET_MODE_ADDR_TRANS_C000_0000_0000_4000:
|
||||
prefix = 0xC000000000004000ULL;
|
||||
break;
|
||||
default:
|
||||
if (mflags == AIL_RESERVED) {
|
||||
return H_UNSUPPORTED_FLAG;
|
||||
}
|
||||
|
||||
CPU_FOREACH(cs) {
|
||||
CPUPPCState *env = &POWERPC_CPU(cpu)->env;
|
||||
|
||||
set_spr(cs, SPR_LPCR, mflags << LPCR_AIL_SHIFT, LPCR_AIL);
|
||||
env->excp_prefix = prefix;
|
||||
}
|
||||
|
||||
return H_SUCCESS;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue