diff options
Diffstat (limited to 'sys/amd64')
-rw-r--r-- | sys/amd64/amd64/cpu_switch.S | 10 | ||||
-rw-r--r-- | sys/amd64/amd64/swtch.s | 10 | ||||
-rw-r--r-- | sys/amd64/include/apicreg.h | 8 |
3 files changed, 24 insertions, 4 deletions
diff --git a/sys/amd64/amd64/cpu_switch.S b/sys/amd64/amd64/cpu_switch.S index 0a3bf40..14d0a8a 100644 --- a/sys/amd64/amd64/cpu_switch.S +++ b/sys/amd64/amd64/cpu_switch.S @@ -33,7 +33,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: swtch.s,v 1.4 1997/07/30 22:51:11 smp Exp smp $ + * $Id: swtch.s,v 1.5 1997/08/04 17:17:29 smp Exp smp $ */ #include "npx.h" @@ -46,6 +46,7 @@ #ifdef SMP #include <machine/pmap.h> #include <machine/apic.h> +#include <machine/smptests.h> /** GRAB_LOPRIO */ #endif /* SMP */ #include "assym.s" @@ -509,6 +510,13 @@ swtch_com: movl %eax,(%esp) #ifdef SMP +#ifdef GRAB_LOPRIO /* hold LOPRIO for INTs */ +#ifdef CHEAP_TPR + movl $0, lapic_tpr +#else + andl $~APIC_TPR_PRIO, lapic_tpr +#endif /** CHEAP_TPR */ +#endif /** GRAB_LOPRIO */ movl _cpuid,%eax movb %al, P_ONCPU(%ecx) #endif /* SMP */ diff --git a/sys/amd64/amd64/swtch.s b/sys/amd64/amd64/swtch.s index 0a3bf40..14d0a8a 100644 --- a/sys/amd64/amd64/swtch.s +++ b/sys/amd64/amd64/swtch.s @@ -33,7 +33,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: swtch.s,v 1.4 1997/07/30 22:51:11 smp Exp smp $ + * $Id: swtch.s,v 1.5 1997/08/04 17:17:29 smp Exp smp $ */ #include "npx.h" @@ -46,6 +46,7 @@ #ifdef SMP #include <machine/pmap.h> #include <machine/apic.h> +#include <machine/smptests.h> /** GRAB_LOPRIO */ #endif /* SMP */ #include "assym.s" @@ -509,6 +510,13 @@ swtch_com: movl %eax,(%esp) #ifdef SMP +#ifdef GRAB_LOPRIO /* hold LOPRIO for INTs */ +#ifdef CHEAP_TPR + movl $0, lapic_tpr +#else + andl $~APIC_TPR_PRIO, lapic_tpr +#endif /** CHEAP_TPR */ +#endif /** GRAB_LOPRIO */ movl _cpuid,%eax movb %al, P_ONCPU(%ecx) #endif /* SMP */ diff --git a/sys/amd64/include/apicreg.h b/sys/amd64/include/apicreg.h index 8df09cd..50f8416 100644 --- a/sys/amd64/include/apicreg.h +++ b/sys/amd64/include/apicreg.h @@ -22,7 +22,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: apic.h,v 1.6 1997/07/30 22:44:20 smp Exp smp $ + * $Id: apic.h,v 1.7 1997/08/04 17:20:39 smp Exp smp $ */ #ifndef _MACHINE_APIC_H_ @@ -221,7 +221,11 @@ typedef struct IOAPIC ioapic_t; */ /* default level for TPR */ -#define LOPRIO_LEVEL 0x00000010 /* TPR of CPUs accepting INT */ +#define LOPRIO_LEVEL 0x00000010 /* TPR of CPU accepting INTs */ + +#ifdef GRAB_LOPRIO +#define ALLHWI_LEVEL 0x00000000 /* TPR of CPU grabbing INTs */ +#endif /** GRAB_LOPRIO */ /* XXX these 2 don't really belong here... */ #define COUNT_FIELD 0x00ffffff /* count portion of the lock */ |