diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2022-09-17 20:05:26 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2022-09-17 20:22:58 +0200 |
commit | e2fcf261076bfe00eed678dcfd2f86b4854b5516 (patch) | |
tree | dd9024f4e93ff0d74875ca2fed5b78bdf0fff0a7 /include | |
parent | f6a7b166a232949c21eb3c864bc299271add5e45 (diff) | |
download | gnumach-e2fcf261076bfe00eed678dcfd2f86b4854b5516.tar.gz gnumach-e2fcf261076bfe00eed678dcfd2f86b4854b5516.tar.bz2 gnumach-e2fcf261076bfe00eed678dcfd2f86b4854b5516.zip |
interrupt: Fix saving irq/ipl when linux drivers are disabled
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!
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions