Interrupts handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux