aboutsummaryrefslogtreecommitdiff
path: root/x86_64/interrupt.S
Commit message (Collapse)AuthorAgeFilesLines
* Update kdb_kintr according to new interrupt stack layoutSamuel Thibault2022-11-271-0/+2
| | | | | | | | e2fcf261076b ("interrupt: Fix saving irq/ipl when linux drivers are disabled") changed the stack layout for interrupt handlers, but missed updating kdb_kintr's code that tries to mangle it. This restores the control-alt-d shortcut.
* interrupt: Fix saving irq/ipl when linux drivers are disabledSamuel Thibault2022-09-171-13/+31
| | | | | | | | | | | | | | When Linux drivers are disabled, in hardclock() the linux_timer_intr() call is dropped, and gcc can tail-recursion-optimize the call to clock_interrupt(). To do so, it overwrites the hardclock() parameters to suit the clock_interrupt parameters layout. This however means it thrashes the backups that the interrupt() function had made of irq/ipl, leading to mayhem. interrupt should thus really properly separate its irq/ipl backups from the interrupt function parameters. Thanks a lot to Etienne Brateau for the tricky investigation!
* fix register corruption in irq on qemuLuca Dariz2022-08-271-6/+6
| | | | | | | | | rbx was used to compute the irq index in iunit and ivect arrays, however it should be preserved by pushing it in to the stack. As a solution, we use rax instead, which is caller-saved. Signed-off-by: Luca Dariz <luca@orpolo.org> Message-Id: <20220205175129.309469-4-luca@orpolo.org>
* ioapic: Refactor EOIDamien Zammit2021-04-051-1/+0
| | | | Message-Id: <20210405115921.184572-2-damien@zamaudio.com>
* Don't call EOI on spurious interruptsDamien Zammit2021-04-051-6/+3
| | | | Message-Id: <20210405052916.174771-4-damien@zamaudio.com>
* Add ioapic support disabled by defaultDamien Zammit2021-04-041-1/+23
| | | | | | | Use --enable-ncpus=x --enable-apic where x > 1 for SMP+APIC support. Use neither for no SMP and old PIC support. Message-Id: <20210404050812.145483-1-damien@zamaudio.com>
* interrupt: Add 64bit variantSamuel Thibault2020-03-281-0/+84
* x86_64/interrupt.S: New file.