summaryrefslogtreecommitdiff
path: root/cpu/mpc8260/interrupts.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpu/mpc8260/interrupts.c')
-rw-r--r--cpu/mpc8260/interrupts.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/cpu/mpc8260/interrupts.c b/cpu/mpc8260/interrupts.c
index 90620849a8..3c5ef7460e 100644
--- a/cpu/mpc8260/interrupts.c
+++ b/cpu/mpc8260/interrupts.c
@@ -155,7 +155,7 @@ static __inline__ unsigned long get_msr (void)
static __inline__ void set_msr (unsigned long msr)
{
- __asm__ __volatile__ ("mtmsr %0"::"r" (msr));
+ __asm__ __volatile__ ("mtmsr %0;sync;isync"::"r" (msr));
}
static __inline__ unsigned long get_dec (void)
@@ -208,6 +208,14 @@ int interrupt_init (void)
immr->im_intctl.ic_sipnrh = 0xffffffff;
immr->im_intctl.ic_sipnrl = 0xffffffff;
+#ifdef CONFIG_HYMOD
+ /*
+ * ensure all external interrupt sources default to trigger on
+ * high-to-low transition (i.e. edge triggered active low)
+ */
+ immr->im_intctl.ic_siexr = -1;
+#endif
+
set_dec (decrementer_count);
set_msr (get_msr () | MSR_EE);