Interrupts handling
Alexander Kuleshov
alex0xax at gmail.com
Wed Jun 17 07:22:28 EDT 2015
Hello,
I have a question about interrupt handling in Linux kernel for x86_64.
As we can read in the
64-ia-32-architectures-software-developer-vol-3a-part-1-manual, when
an interurpt/exception occurs, the handler's stack contains SS, RSP,
RFLAGS, CS, RIP and error code. My question is: does processor push
this register on the stack when an interrupt occurs or kernel must
push it?
In the arch/x86/kernel/entry_64.S we can see following code in the
idtentry macro:
.ifeq \has_error_code
pushq_cfi $-1
.endif
where pushq_cfi is:
.macro pushq_cfi reg
pushq \reg
CFI_ADJUST_CFA_OFFSET 8
.endm
First of all what does it mean $-1 here? I have write simple assembly
program and I see:
push 0xffffffffffffffff
in the gdb. The second question, if processor pushes error code and
other during interrupt why we push it here?
Thank you.
More information about the Kernelnewbies
mailing list