aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Gerd Zellweger <mail@gerdzellweger.com> 2016-05-28 00:16:31 +0200
committerGravatar Gerd Zellweger <mail@gerdzellweger.com> 2016-05-28 00:16:31 +0200
commit32dbae106654aa89a4aca8ab92fae13b668121f2 (patch)
tree19d91fb17dc36d1f30277a79cc06d0cea8cb32a9 /src
parent33658a99b13eec17ab34336e8ee65c25a95678b7 (diff)
parent7c07222a256831d6cbc2098a8559cc23479bec37 (diff)
downloadrust-x86-32dbae106654aa89a4aca8ab92fae13b668121f2.tar.gz
rust-x86-32dbae106654aa89a4aca8ab92fae13b668121f2.tar.zst
rust-x86-32dbae106654aa89a4aca8ab92fae13b668121f2.zip
Merge pull request #13 from dschatzberg/additional_exceptions
This commit adds exceptions 15-20 as listed in Intel Volume 3 6.15 It also fixes exception 1 (the Debug Exception)
Diffstat (limited to 'src')
-rw-r--r--src/irq.rs50
1 files changed, 46 insertions, 4 deletions
diff --git a/src/irq.rs b/src/irq.rs
index c7a90fa..046fce9 100644
--- a/src/irq.rs
+++ b/src/irq.rs
@@ -25,7 +25,7 @@ impl fmt::Display for InterruptDescription {
/// x86 External Interrupts (1-16).
-pub static EXCEPTIONS: [InterruptDescription; 15] = [InterruptDescription {
+pub static EXCEPTIONS: [InterruptDescription; 21] = [InterruptDescription {
vector: 0,
mnemonic: "#DE",
description: "Divide Error",
@@ -35,14 +35,14 @@ pub static EXCEPTIONS: [InterruptDescription; 15] = [InterruptDescription {
InterruptDescription {
vector: 1,
mnemonic: "#DB",
- description: "RESERVED",
+ description: "Debug",
irqtype: "Fault/ Trap",
- source: "For Intel use only.",
+ source: "Debug condition",
},
InterruptDescription {
vector: 2,
mnemonic: "NMI",
- description: "Interrupt",
+ description: "Nonmaskable Interrupt",
irqtype: "Interrupt",
source: "Nonmaskable external interrupt.",
},
@@ -138,6 +138,48 @@ pub static EXCEPTIONS: [InterruptDescription; 15] = [InterruptDescription {
description: "Page Fault",
irqtype: "Fault",
source: "Any memory reference.",
+ },
+ InterruptDescription {
+ vector: 15,
+ mnemonic: "",
+ description: "RESERVED",
+ irqtype: "",
+ source: "None.",
+ },
+ InterruptDescription {
+ vector: 16,
+ mnemonic: "#MF",
+ description: "x87 FPU Floating-Point",
+ irqtype: "Fault",
+ source: "x87 FPU instructions.",
+ },
+ InterruptDescription {
+ vector: 17,
+ mnemonic: "#AC",
+ description: "Alignment Check",
+ irqtype: "Fault",
+ source: "Unaligned memory access.",
+ },
+ InterruptDescription {
+ vector: 18,
+ mnemonic: "#MC",
+ description: "Machine Check",
+ irqtype: "Abort",
+ source: "Internal machine error.",
+ },
+ InterruptDescription {
+ vector: 19,
+ mnemonic: "#XM",
+ description: "SIMD Floating-Point",
+ irqtype: "Fault",
+ source: "SSE SIMD instructions.",
+ },
+ InterruptDescription {
+ vector: 20,
+ mnemonic: "#VE",
+ description: "Virtualization",
+ irqtype: "Fault",
+ source: "EPT violation.",
}];