When a FAR CALL contains a target code selector ( CS ) which is a CALL GATE, the processor ignores the offset ( IP ) contained in the instruction and gets the true target CS and offset ( IP ) from the CALL GATE. In addition, if the call is to a more privileged program, the processor locates a fresh stack for it to use, stores the current stack selector and stack pointer in the new, more privileged stack, copies the parameters from the old stack to the new one, and finally saves the return information in the new stack. All this happens during the execution of the call instruction.
Briefly, when the return occurs, all this gets undone.