intr_machdep.c (208165) | intr_machdep.c (210528) |
---|---|
1/*- 2 * Copyright (c) 2006-2009 RMI Corporation 3 * Copyright (c) 2002-2004 Juli Mallett <jmallett@FreeBSD.org> 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 13 unchanged lines hidden (view full) --- 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 * 27 */ 28 29#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2006-2009 RMI Corporation 3 * Copyright (c) 2002-2004 Juli Mallett <jmallett@FreeBSD.org> 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 13 unchanged lines hidden (view full) --- 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 * 27 */ 28 29#include <sys/cdefs.h> |
30__FBSDID("$FreeBSD: head/sys/mips/rmi/intr_machdep.c 208165 2010-05-16 19:43:48Z rrs $"); | 30__FBSDID("$FreeBSD: head/sys/mips/rmi/intr_machdep.c 210528 2010-07-27 09:22:41Z jchandra $"); |
31 32#include <sys/param.h> 33#include <sys/systm.h> 34#include <sys/bus.h> 35#include <sys/interrupt.h> 36#include <sys/kernel.h> 37 38#include <machine/cpu.h> --- 100 unchanged lines hidden (view full) --- 139 eimr = read_c0_eimr64(); 140 eirr &= eimr; 141 142 if (eirr == 0) { 143 critical_exit(); 144 return; 145 } 146 /* | 31 32#include <sys/param.h> 33#include <sys/systm.h> 34#include <sys/bus.h> 35#include <sys/interrupt.h> 36#include <sys/kernel.h> 37 38#include <machine/cpu.h> --- 100 unchanged lines hidden (view full) --- 139 eimr = read_c0_eimr64(); 140 eirr &= eimr; 141 142 if (eirr == 0) { 143 critical_exit(); 144 return; 145 } 146 /* |
147 * No need to clear the EIRR here. the handler is gonna write to 148 * compare which clears eirr also | 147 * No need to clear the EIRR here as the handler writes to 148 * compare which ACKs the interrupt. |
149 */ 150 if (eirr & (1 << IRQ_TIMER)) { | 149 */ 150 if (eirr & (1 << IRQ_TIMER)) { |
151 count_compare_clockhandler(tf); | 151 intr_event_handle(mips_intr_events[IRQ_TIMER], tf); |
152 critical_exit(); 153 return; 154 } 155 156 /* FIXME sched pin >? LOCK>? */ 157 for (i = sizeof(eirr) * 8 - 1; i >= 0; i--) { 158 if ((eirr & (1ULL << i)) == 0) 159 continue; --- 59 unchanged lines hidden --- | 152 critical_exit(); 153 return; 154 } 155 156 /* FIXME sched pin >? LOCK>? */ 157 for (i = sizeof(eirr) * 8 - 1; i >= 0; i--) { 158 if ((eirr & (1ULL << i)) == 0) 159 continue; --- 59 unchanged lines hidden --- |