I have a question about IA32 tasks.
A TSS allows only one context to be saved for a task; therefore, once a task is called(dispatched), a recursive (or re-entrant) call to the task would cause the current state of the task to be lost.
I simply don't understand why tasks are non-reentrant in IA 32. If you have a task running and then you do a jmp far using the tss segment selector of the actual task, the current state of the task will be saved in the tss. Then it will search for the tss descriptor, and load the state that has been previously saved. So, the EIP woulb point to the next instruction,etc. What is wrong with this reasoning?
I understand how the busy bit works, but not the reason why they forbid calling the same task. I notice that if you have a chain of nested task, and then one calls itself, it will create a sort of loop because the previous task link of the tss will be itself.
Recently, I have been reading the Intel IA-32 Developer Manual. My unserstanding about non recursive call of IA-32 tasks is: