diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2009-02-16 23:03:34 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2009-02-16 23:03:34 +0000 |
commit | 87a4d2b5dacf5480bd6311efb989058635268939 (patch) | |
tree | 9e8b702429fa4342598d574ff9e0df811bea5337 /sys/arch/mvme88k/include | |
parent | c2b751a79c81d1b576d343c8569ebbe7b62e4632 (diff) |
More 88110 SMP work. Contains, horribly entangled:
- dma_cachectl() split into a ``local cpu only'' and ``all cpus'', and an ipi
to broadcast ``local dma_cachectl'' is added.
- cpu_info fields are rearranged, to have the 88100-specific information
and the 88110-specific information overlap, and has many more 88110
ugly things.
- more ipi handling in the 197-specific area. Since it is not possible to
have the second processor receive any hardware interrupt (selection
is done on a level basis via ISEL, and we definitely do not want the
main cpu to lose interrupts), the best we can do is to inflict ourselves
a soft interrupt for late ipi processing. It gets used for softclock and
hardclock on the secondary processor, but since the soft interrupt
dispatcher doesn't have an exception frame, we have to remember parts
of it to build a fake clockframe from the soft ipi handler (ugly but
works).
This now lets GENERIC.MP run a few userland binaries before bugs trigger.
Diffstat (limited to 'sys/arch/mvme88k/include')
-rw-r--r-- | sys/arch/mvme88k/include/cpu.h | 3 | ||||
-rw-r--r-- | sys/arch/mvme88k/include/mvme197.h | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/sys/arch/mvme88k/include/cpu.h b/sys/arch/mvme88k/include/cpu.h index 929fb8f6a35..c386d65e2de 100644 --- a/sys/arch/mvme88k/include/cpu.h +++ b/sys/arch/mvme88k/include/cpu.h @@ -1,4 +1,4 @@ -/* $OpenBSD: cpu.h,v 1.40 2009/02/16 22:55:03 miod Exp $ */ +/* $OpenBSD: cpu.h,v 1.41 2009/02/16 23:03:33 miod Exp $ */ /* * Copyright (c) 1996 Nivas Madhur * Copyright (c) 1992, 1993 @@ -56,6 +56,7 @@ extern u_int (*md_raiseipl)(u_int); extern void (*md_init_clocks)(void); extern void (*md_send_ipi)(int, cpuid_t); extern void (*md_delay)(int); +extern void (*md_soft_ipi)(void); struct intrhand { SLIST_ENTRY(intrhand) ih_link; diff --git a/sys/arch/mvme88k/include/mvme197.h b/sys/arch/mvme88k/include/mvme197.h index 35d70652828..2f66bd88dc0 100644 --- a/sys/arch/mvme88k/include/mvme197.h +++ b/sys/arch/mvme88k/include/mvme197.h @@ -1,4 +1,4 @@ -/* $OpenBSD: mvme197.h,v 1.9 2007/12/15 19:34:35 miod Exp $ */ +/* $OpenBSD: mvme197.h,v 1.10 2009/02/16 23:03:33 miod Exp $ */ /* * Copyright (c) 1996 Nivas Madhur * Copyright (c) 1999 Steve Murphree, Jr. @@ -59,6 +59,7 @@ #define M197_IACK 0xfff00100 /* interrupt ACK base */ #ifdef _KERNEL +void m197_broadcast_complex_ipi(int, u_int32_t, u_int32_t); void m197_send_complex_ipi(int, cpuid_t, u_int32_t, u_int32_t); void m197_send_ipi(int, cpuid_t); #endif |