ddb1ff5587
The constructor calls for GlobalDescriptorTable and InterruptDescriptorTable were run on each CPU, each time clearing out any changes already done on other CPUs. For the IDT this didn't matter as the result would always be the same. In case of the GDT the result would surprisingly be mostly hidden. The used GDT entries are for the double fault stacks (which is rarely hit), the user TLS (which will only be used in compat mode) and the TSS which is immediately cached in the task register. The clearing of the GDT allowed for a tiny window of time between setting up the entry for the TSS and it actually being loaded (and cached) in the task register. When this happened, the load of the TR caused a not present fault, which at this point leads to a tripple fault and reset due to no fault handlers being installed yet. Fixes #14659. Change-Id: I6e5c00d412ab17c3ef05740ba71228e6ca266c1e Reviewed-on: https://review.haiku-os.org/810 Reviewed-by: Jérôme Duval <jerome.duval@gmail.com> |
||
---|---|---|
.. | ||
boot | ||
glue | ||
kernel | ||
ldscripts | ||
libnetwork | ||
libroot | ||
runtime_loader | ||
Jamfile |