I want to understand difference between ISR (Interrupt Service Routine) and Function call.
I feel both the function call and ISR are the same from the hardware perspecti
The above answers are pretty much complete...special note to the software interrupts by Clifford.
The only addition I would make is this. The register context stored on a function call is defined by the Procedure Calling Convention for the CPU Architecture. This usually means that the caller saves somethings on stack and the callee saves some things and is pretty much a static set. Exception: IA64 which has a dynamic window of register saves/restores.
On ISR, the only register context stored is what is going to be used in the ISR. If one register is used, only that register is saved/restored.
On most cpus, the register set stored/restored in a function call is much bigger than the ones stored/restored in an ISR due to the static nature of procedure calling conventions.