Rework of the X86 irq stack handling:

  The irq stack switching was moved out of the ASM entry code in course of
  the entry code consolidation. It ended up being suboptimal in various
  ways.

  - Make the stack switching inline so the stackpointer manipulation is not
    longer at an easy to find place.

  - Get rid of the unnecessary indirect call.

  - Avoid the double stack switching in interrupt return and reuse the
    interrupt stack for softirq handling.

  - A objtool fix for CONFIG_FRAME_POINTER=y builds where it got confused
    about the stack pointer manipulation.