diff options
Diffstat (limited to '')
-rw-r--r-- | cpu/interrupts/exceptions/execution.txt | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/cpu/interrupts/exceptions/execution.txt b/cpu/interrupts/exceptions/execution.txt new file mode 100644 index 0000000..c20dd5f --- /dev/null +++ b/cpu/interrupts/exceptions/execution.txt @@ -0,0 +1,29 @@ +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` + + 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 tripple 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 |