Linux kernel has separate stacks for user mode and kernel mode process and also some special stacks. One of this special stacks is interrupt stack with the size 16 kilobytes placed in the irq_stack_union: union irq_stack_union {    char irq_stack[IRQ_STACK_SIZE];    struct {        char gs_base[40];        unsigned long stack_canary;    };};There is definition of the pointer to this stack - irq_stack_ptr. As I understand correctly this irq_stack_ptr must point to the end of the irq_stack or in another words to irq_stack + IRQ_STACK_SIZE - 1, but definition of the irq_stack_ptr is:DEFINE_PER_CPU(char *, irq_stack_ptr) =    init_per_cpu_var(irq_stack_union.irq_stack) + IRQ_STACK_SIZE - 64;Why we subtract 64 bytes from the end of the irq_stack_union.irq_stack here?Thank you.
Stack pointer of the interrupt stack
linux;kernel;interrupt