|
@@ -1,4 +1,4 @@
|
|
|
-Interrupts and Interrupt Handling. Part 2.
|
|
|
+Ineerrupts and Interrupt Handling. Part 2.
|
|
|
================================================================================
|
|
|
|
|
|
Start to dive into interrupt and exceptions handling in the Linux kernel
|
|
@@ -9,7 +9,7 @@ We saw some theory about interrupts and exception handling in the previous [part
|
|
|
If you've read the previous parts, you can remember that the earliest place in the Linux kernel `x86_64` architecture-specific source code which is related to the interrupt is located in the [arch/x86/boot/pm.c](https://github.com/torvalds/linux/blob/16f73eb02d7e1765ccab3d2018e0bd98eb93d973/arch/x86/boot/pm.c) source code file and represents the first setup of the [Interrupt Descriptor Table](http://en.wikipedia.org/wiki/Interrupt_descriptor_table). It occurs right before the transition into the [protected mode](http://en.wikipedia.org/wiki/Protected_mode) in the `go_to_protected_mode` function by the call of the `setup_idt`:
|
|
|
|
|
|
```C
|
|
|
-void go_to_protected_mode(void)
|
|
|
+vd more about its implementation in the part about Early interrupt and exception handling)/oid go_to_protected_mode(void)
|
|
|
{
|
|
|
...
|
|
|
setup_idt();
|
|
@@ -224,7 +224,7 @@ ENTRY(early_idt_handler_array)
|
|
|
ENDPROC(early_idt_handler_common)
|
|
|
```
|
|
|
|
|
|
-It fills `early_idt_handler_array` with the `.rept NUM_EXCEPTION_VECTORS` and contains entry of the `early_make_pgtable` interrupt handler (more about its implementation you can read in the part about [Early interrupt and exception handling](https://0xax.gitbooks.io/linux-insides/content/Initialization/linux-initialization-2.html)). For now we come to the end of the `x86_64` architecture-specific code and the next part is the generic kernel code. Of course you already can know that we will return to the architecture-specific code in the `setup_arch` function and other places, but this is the end of the `x86_64` early code.
|
|
|
+It fills `early_idt_handler_array` with the `.rept NUM_EXCEPTION_VECTORS` and contains entry of the `early_make_pgtable` interrupt handler (you can read more about its implementation in the part about [Early interrupt and exception handling](https://0xax.gitbooks.io/linux-insides/content/Initialization/linux-initialization-2.html)). For now, we have reached the end of the x86_64 architecture-specific code and the next part is the generic kernel code. You probably already know, that we will return to the architecture-specific code in the `setup_arch` function and other places, but this is the end of the `x86_64` early code.
|
|
|
|
|
|
Setting stack canary for the interrupt stack
|
|
|
-------------------------------------------------------------------------------
|