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.
_______________________________________________
Kernelnewbies mailing list
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies