diff options
Diffstat (limited to 'cpu/interrupts')
-rw-r--r-- | cpu/interrupts/exceptions/edt.txt | 4 | ||||
-rw-r--r-- | cpu/interrupts/exceptions/execution.txt | 30 | ||||
-rw-r--r-- | cpu/interrupts/execution.txt | 10 | ||||
-rw-r--r-- | cpu/interrupts/hardware/execution.txt | 10 | ||||
-rw-r--r-- | cpu/interrupts/irqt.txt (renamed from cpu/interrupts/hardware/irqt.txt) | 0 | ||||
-rw-r--r-- | cpu/interrupts/software/execution.txt | 8 | ||||
-rw-r--r-- | cpu/interrupts/software/idt.txt | 11 |
7 files changed, 10 insertions, 63 deletions
diff --git a/cpu/interrupts/exceptions/edt.txt b/cpu/interrupts/exceptions/edt.txt deleted file mode 100644 index f1f5792..0000000 --- a/cpu/interrupts/exceptions/edt.txt +++ /dev/null @@ -1,4 +0,0 @@ -Each entry is n bits long, where n is the current mode in bits -TODO: Specify a limit for them - -Each entry is a pointer to the code to be executed diff --git a/cpu/interrupts/exceptions/execution.txt b/cpu/interrupts/exceptions/execution.txt deleted file mode 100644 index dbf8825..0000000 --- a/cpu/interrupts/exceptions/execution.txt +++ /dev/null @@ -1,30 +0,0 @@ -For non-double exceptions: - OPRE gets set to the PR from the previous code running - OIPE gets set to the IP from the previous code running - PR is set to all 1s - - Hardware interrupts will not occur until after the current processing has been finished via `irete` - Any exceptions that occur before `irete` will trigger a double exception instead of the normal one - - When returning via irete: - PR is set to OPRE - Execution jumps to OIPE - -For a double exception: - OPRDE is set to the PR from the previous code running - OIPDE is set to the IP from the previous code running - PR is set to all 1s - - Segmentation is ignored for the double exception handler, flat addressing is used with no protection - - If any exceptions occur during execution of the double exception handler: - If this is not the only core active on the system: - Broadcasts a triple fault message - Shuts down - - If this is the only core active on the system: - Restarts the system - - When returning via iretde: - PR is set to OPRDE - Execution jumps to OIPDE diff --git a/cpu/interrupts/execution.txt b/cpu/interrupts/execution.txt new file mode 100644 index 0000000..858334c --- /dev/null +++ b/cpu/interrupts/execution.txt @@ -0,0 +1,10 @@ +When an interrupt occurs: + OPRI gets set to the PR from the previous code running + OIPI gets set to the IP from the previous code running + PR is set to all 1s + +The next interrupt will not occur until after the current processing has been finished via `ireti` + +When returning via ireth: + PR is set to OPRI + Execution jumps to OIPI diff --git a/cpu/interrupts/hardware/execution.txt b/cpu/interrupts/hardware/execution.txt deleted file mode 100644 index 1644994..0000000 --- a/cpu/interrupts/hardware/execution.txt +++ /dev/null @@ -1,10 +0,0 @@ -When a hardware interrupt occurs: - OPRH gets set to the PR from the previous code running - OIPH gets set to the IP from the previous code running - PR is set to all 1s - -The next hardware interrupt will not occur until after the current processing has been finished via `ireth` - -When returning via ireth: - PR is set to OPRH - Execution jumps to OIPH diff --git a/cpu/interrupts/hardware/irqt.txt b/cpu/interrupts/irqt.txt index f1f5792..f1f5792 100644 --- a/cpu/interrupts/hardware/irqt.txt +++ b/cpu/interrupts/irqt.txt diff --git a/cpu/interrupts/software/execution.txt b/cpu/interrupts/software/execution.txt deleted file mode 100644 index 0cad31b..0000000 --- a/cpu/interrupts/software/execution.txt +++ /dev/null @@ -1,8 +0,0 @@ -When calling a software interrupt: - R0 gets overwritten with the current PR - R1 gets overwritten with a pointer of the same segment as IP, pointing to the next instruction - PR is set to all 1s - -When returning via iretp: - PR is set to R0 - Execution jumps to R1 diff --git a/cpu/interrupts/software/idt.txt b/cpu/interrupts/software/idt.txt deleted file mode 100644 index 7488808..0000000 --- a/cpu/interrupts/software/idt.txt +++ /dev/null @@ -1,11 +0,0 @@ -Each entry is n*2 bits long, where n is the current mode in bits -TODO: Specify a limit for them - -It uses the following format: - (higher address) - +--------------------------------+ - | Pointer to executable code run | - +--------------------------------+ - | Privileges required for usage | - +--------------------------------+ - (lower address) |