MagicSpark
Newbie level 5
I found the following description about how the most processors service an interrupt. The steps are as follows:
1. Hardware generates the interrupt pulse
2. The interrupt controller (if any) prioritizes multiple simultaneous requests, and issues a single interrupt to the processor
3. The CPU responds with an interrupt acknowledge cycle
4. The controller drops an interrupt vector on the databus
5. The CPU reads the vector, and computes the address of the user-stored vector in memory. It then fetches this value.
6. The CPU pushes the current context, disables interrupts, and jumps to the ISR
My questions are:
The above description uses "CPU responds", "CPU reads", "CPU pushes" terms.
I'd like to know what steps are performed by hardware, and what steps are performed by software (OS or embedded program)?
Could anyone also give detailed description of step 6, i.e. who (hardware or software) and what (registers, process context, etc) are stored in stack. Who and how provides and implements jump to ISR?
Thanks in advance
1. Hardware generates the interrupt pulse
2. The interrupt controller (if any) prioritizes multiple simultaneous requests, and issues a single interrupt to the processor
3. The CPU responds with an interrupt acknowledge cycle
4. The controller drops an interrupt vector on the databus
5. The CPU reads the vector, and computes the address of the user-stored vector in memory. It then fetches this value.
6. The CPU pushes the current context, disables interrupts, and jumps to the ISR
My questions are:
The above description uses "CPU responds", "CPU reads", "CPU pushes" terms.
I'd like to know what steps are performed by hardware, and what steps are performed by software (OS or embedded program)?
Could anyone also give detailed description of step 6, i.e. who (hardware or software) and what (registers, process context, etc) are stored in stack. Who and how provides and implements jump to ISR?
Thanks in advance