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:
Till Straumann
2011-08-05 00:15:50 +00:00
parent 0f660eb744
commit e94aa61b68
2 changed files with 12 additions and 2 deletions

View File

@@ -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

View File

@@ -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: