I am having trouble understanding if software interrupts are still generated when system calls occur in x86. For example, I had thought a processor sends an interrupt to itself (a software interrupt specifically) when a system call is generated. Then this would generate the need to perform all the work of setting up the SS and CS before executing the specific SYSCALL/SYSRET instruction. I am know wondering if this really is the case. I am doing work with gem5, and I noticed there doesn't seem to be an intercepting point where a Software Interrupt is generated. But instead, it seems like the SYSCALL/SYSRET instructions are executed outright without an interrupt being generated (I have been using debug flags to see if anything gets generated when I perform a system call in my own applications). So is there an intercepting point with the new SYSCALL/SYSRET instructions between when a system call is first "recognized" in x86 and when the kernel takes over and performs the actual system call? I had thought x86 captures the vector number (to look up in the IVT) and stores the system call number in a register the kernel knows should hold the system call number. Any clarification would be greatly appreciated.
↧