forked from Imagelibrary/rtems
2011-08-04 Till Straumann <strauman@slac.stanford.edu>
* shared/irq/irq_asm.S: BUGFIX (introduced by SMP changes which moved code around, apparently): *must* store i8259 mask to frame *before* switching to IRQ stack. The code retrieves the mask after switching back to original stack. Also, the IRQ stack has no reserved space for the mask; storing it there could overwrite memory!
This commit is contained in:
@@ -1,3 +1,12 @@
|
|||||||
|
2011-08-04 Till Straumann <strauman@slac.stanford.edu>
|
||||||
|
|
||||||
|
* shared/irq/irq_asm.S: BUGFIX (introduced by SMP changes
|
||||||
|
which moved code around, apparently): *must* store i8259
|
||||||
|
mask to frame *before* switching to IRQ stack. The code
|
||||||
|
retrieves the mask after switching back to original stack.
|
||||||
|
Also, the IRQ stack has no reserved space for the mask;
|
||||||
|
storing it there could overwrite memory!
|
||||||
|
|
||||||
2011-08-01 Jennifer Averett <Jennifer.Averett@OARcorp.com>
|
2011-08-01 Jennifer Averett <Jennifer.Averett@OARcorp.com>
|
||||||
|
|
||||||
PR 1802
|
PR 1802
|
||||||
|
|||||||
@@ -76,6 +76,8 @@ SYM (_ISR_Handler):
|
|||||||
movl ebx, EBX_OFF(esp)
|
movl ebx, EBX_OFF(esp)
|
||||||
movl eax, ESP_OFF(esp)
|
movl eax, ESP_OFF(esp)
|
||||||
movl ebp, EBP_OFF(esp)
|
movl ebp, EBP_OFF(esp)
|
||||||
|
movw SYM (i8259s_cache), ax /* save current i8259 interrupt mask */
|
||||||
|
movl eax, MSK_OFF(esp) /* save in stack frame */
|
||||||
|
|
||||||
#ifdef __SSE__
|
#ifdef __SSE__
|
||||||
/* NOTE: SSE only is supported if the BSP enables fxsave/fxrstor
|
/* NOTE: SSE only is supported if the BSP enables fxsave/fxrstor
|
||||||
@@ -142,8 +144,7 @@ nested:
|
|||||||
/*
|
/*
|
||||||
* acknowledge the interrupt
|
* acknowledge the interrupt
|
||||||
*/
|
*/
|
||||||
movw SYM (i8259s_cache), ax /* save current i8259 interrupt mask */
|
movw SYM (i8259s_cache), ax /* fetch current i8259 interrupt mask */
|
||||||
movl eax, MSK_OFF(esp) /* save in stack frame */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* compute the new PIC mask:
|
* compute the new PIC mask:
|
||||||
|
|||||||
Reference in New Issue
Block a user