summaryrefslogtreecommitdiff
path: root/cpu/task_switching/execution.txt
diff options
context:
space:
mode:
Diffstat (limited to 'cpu/task_switching/execution.txt')
-rw-r--r--cpu/task_switching/execution.txt24
1 files changed, 12 insertions, 12 deletions
diff --git a/cpu/task_switching/execution.txt b/cpu/task_switching/execution.txt
index 63a9126..78f587c 100644
--- a/cpu/task_switching/execution.txt
+++ b/cpu/task_switching/execution.txt
@@ -1,15 +1,15 @@
All task switches will occur after the current instructions in the queue have finished being processed and written
Will not conflict with other writes within the same instruction queue
- Triggers <TODO> exception if multiple task switches occur within the same instruction queue
+ Triggers `illegal instruction` exception if multiple task switches occur within the same instruction queue
TODO: mark current CPU executing it
Call process:
Only allowed to be used by the original process
- Triggers <TODO> exception otherwise
+ Triggers `invalid operation` exception otherwise
Custom ID must match between the tdt at the index and the one specified by the instruction, and the target must be marked as valid
- TODO: trigger exception? set a flag?
+ Sets the `zero` flag and skips execution of this instruction otherwise
One segment may be passed to the callee, used by the callee with all segment bits set
Caller may call with all segment bits set to not pass a segment
@@ -24,7 +24,7 @@ Call process:
Return process:
Only allowed to be used by the callee
- Triggers <TODO> exception otherwise
+ Triggers `invalid operation` exception otherwise
Segments will be loaded from the tdt
Process id in the tdt is set to the original process's id
@@ -35,27 +35,27 @@ Return process:
Switch process:
Only allowed to be used by the original process
- Triggers <TODO> exception otherwise
+ Triggers `invalid operation` exception otherwise
Only allowed to switch to a process that is not currently active
- TODO: trigger exception? set a flag?
+ Sets the `zero` flag and skips execution of this instruction otherwise
Custom ID must match between the tdt at the index and the one specified by the instruction, and the target must be marked as valid
- TODO: trigger exception? set a flag?
+ Sets the `zero` flag and skips execution of this instruction otherwise
All registers are saved to the current tdt and loaded from the target's tdt index
Loads all registers from the target's tdt index
Switch process and exit exception/interrupt handler:
- Only allowed to be used while in an exception/interrupt handler (TODO: different opcode for each?)
- Triggers <TODO> exception otherwise
+ Only allowed to be used while in an exception/interrupt handler
+ Triggers `invalid operation` exception otherwise
Only allowed to switch to a process that is not currently active
- TODO: trigger exception? set a flag?
+ Sets the `zero` flag and skips execution of this instruction otherwise
- Only allowed to switch to a process that is valid
- TODO: trigger exception? set a flag?
+ Custom ID must match between the tdt at the index and the one specified by the instruction, and the target must be marked as valid
+ Sets the `zero` flag and skips execution of this instruction otherwise
All registers are saved to the current tdt and loaded from the target's tdt index
IP and PR are saved as if all exception/interrupt handlers returned