mirror of
https://github.com/phil-opp/blog_os.git
synced 2025-12-16 14:27:49 +00:00
Mention that we need to enable the abi_x86_interrupt feature (#318)
This commit is contained in:
committed by
GitHub
parent
f94062a9d5
commit
559e85a597
@@ -248,6 +248,25 @@ extern "x86-interrupt" fn breakpoint_handler(
|
|||||||
|
|
||||||
Our handler just outputs a message and pretty-prints the exception stack frame.
|
Our handler just outputs a message and pretty-prints the exception stack frame.
|
||||||
|
|
||||||
|
When we try to compile it, the following error occurs:
|
||||||
|
|
||||||
|
```
|
||||||
|
error: x86-interrupt ABI is experimental and subject to change (see issue #40180)
|
||||||
|
--> src/interrupts.rs:8:1
|
||||||
|
|
|
||||||
|
8 | extern "x86-interrupt" fn breakpoint_handler(
|
||||||
|
| _^ starting here...
|
||||||
|
9 | | stack_frame: &mut ExceptionStackFrame)
|
||||||
|
10 | | {
|
||||||
|
11 | | println!("EXCEPTION: BREAKPOINT\n{:#?}", stack_frame);
|
||||||
|
12 | | }
|
||||||
|
| |_^ ...ending here
|
||||||
|
|
|
||||||
|
= help: add #![feature(abi_x86_interrupt)] to the crate attributes to enable
|
||||||
|
```
|
||||||
|
|
||||||
|
This error occurs because the `x86-interrupt` calling convention is still unstable. To use it anyway, we have to explicitly enable it by adding `#![feature(abi_x86_interrupt)]` on the top of our `lib.rs`.
|
||||||
|
|
||||||
### Loading the IDT
|
### Loading the IDT
|
||||||
In order that the CPU uses our new interrupt descriptor table, we need to load it using the [`lidt`] instruction. The `Idt` struct of the `x86_64` provides a [`load`][Idt::load] method function for that. Let's try to use it:
|
In order that the CPU uses our new interrupt descriptor table, we need to load it using the [`lidt`] instruction. The `Idt` struct of the `x86_64` provides a [`load`][Idt::load] method function for that. Let's try to use it:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user