diff options
-rw-r--r-- | sys/ia64/ia64/mp_machdep.c | 1 | ||||
-rw-r--r-- | sys/ia64/ia64/sal.c | 6 |
2 files changed, 5 insertions, 2 deletions
diff --git a/sys/ia64/ia64/mp_machdep.c b/sys/ia64/ia64/mp_machdep.c index 59a4b7d..a045ff5 100644 --- a/sys/ia64/ia64/mp_machdep.c +++ b/sys/ia64/ia64/mp_machdep.c @@ -372,6 +372,7 @@ ipi_send(struct pcpu *cpu, int ipi) pipi = __MEMIO_ADDR(ia64_lapic_address | ((cpu->pc_lid & LID_SAPIC_MASK) >> 12)); vector = (uint64_t)(ipi_vector[ipi] & 0xff); + KASSERT(vector != 0, ("IPI %d is not assigned a vector", ipi)); *pipi = vector; CTR3(KTR_SMP, "ipi_send(%p, %ld), cpuid=%d", pipi, vector, PCPU_GET(cpuid)); diff --git a/sys/ia64/ia64/sal.c b/sys/ia64/ia64/sal.c index c05f7be..251c1ee 100644 --- a/sys/ia64/ia64/sal.c +++ b/sys/ia64/ia64/sal.c @@ -72,13 +72,15 @@ setup_ipi_vectors(int ceil) int ipi; ipi_vector[IPI_MCA_RENDEZ] = ceil - 0x10; - ipi_vector[IPI_MCA_CMCV] = ceil - 0x30; - ipi_vector[IPI_TEST] = ceil - 0x30 + 1; ipi = IPI_AST; /* First generic IPI. */ ceil -= 0x20; /* First vector in group. */ while (ipi < IPI_COUNT) ipi_vector[ipi++] = ceil++; + + ipi_vector[IPI_HIGH_FP] = ceil - 0x30; + ipi_vector[IPI_MCA_CMCV] = ceil - 0x30 + 1; + ipi_vector[IPI_TEST] = ceil - 0x30 + 2; } void |