![]() |
RTEMS 7.0-rc1
|
Interrupt stack frame (ISF). More...
#include <cpu.h>
Data Fields | |
| uint64_t | x0 |
| uint64_t | register_lr_original |
| uint64_t | register_lr |
| uint64_t | x1 |
| uint64_t | x2 |
| uint64_t | x3 |
| uint64_t | x4 |
| uint64_t | x5 |
| uint64_t | x6 |
| uint64_t | x7 |
| uint64_t | x8 |
| uint64_t | x9 |
| uint64_t | x10 |
| uint64_t | x11 |
| uint64_t | x12 |
| uint64_t | x13 |
| uint64_t | x14 |
| uint64_t | x15 |
| uint64_t | x16 |
| uint64_t | x17 |
| uint64_t | x18 |
| uint64_t | x19 |
| uint64_t | x20 |
| uint64_t | x21 |
| uint64_t | register_elr |
| uint64_t | register_spsr |
| uint64_t | register_fpsr |
| uint64_t | register_fpcr |
| uint32_t | reserved [3] |
| uint32_t | isr_vector |
| uint32_t | ebx |
| uint32_t | ebp |
| uint32_t | esp |
| uint32_t | edx |
| uint32_t | ecx |
| uint32_t | eax |
| uint32_t | eip |
| uint32_t | cs |
| uint32_t | eflags |
| uint32_t | vecnum |
| __MIPS_REGISTER_TYPE | r0 |
| __MIPS_REGISTER_TYPE | at |
| __MIPS_REGISTER_TYPE | v0 |
| __MIPS_REGISTER_TYPE | v1 |
| __MIPS_REGISTER_TYPE | a0 |
| __MIPS_REGISTER_TYPE | a1 |
| __MIPS_REGISTER_TYPE | a2 |
| __MIPS_REGISTER_TYPE | a3 |
| __MIPS_REGISTER_TYPE | t0 |
| __MIPS_REGISTER_TYPE | t1 |
| __MIPS_REGISTER_TYPE | t2 |
| __MIPS_REGISTER_TYPE | t3 |
| __MIPS_REGISTER_TYPE | t4 |
| __MIPS_REGISTER_TYPE | t5 |
| __MIPS_REGISTER_TYPE | t6 |
| __MIPS_REGISTER_TYPE | t7 |
| __MIPS_REGISTER_TYPE | s0 |
| __MIPS_REGISTER_TYPE | s1 |
| __MIPS_REGISTER_TYPE | s2 |
| __MIPS_REGISTER_TYPE | s3 |
| __MIPS_REGISTER_TYPE | s4 |
| __MIPS_REGISTER_TYPE | s5 |
| __MIPS_REGISTER_TYPE | s6 |
| __MIPS_REGISTER_TYPE | s7 |
| __MIPS_REGISTER_TYPE | t8 |
| __MIPS_REGISTER_TYPE | t9 |
| __MIPS_REGISTER_TYPE | k0 |
| __MIPS_REGISTER_TYPE | k1 |
| __MIPS_REGISTER_TYPE | gp |
| __MIPS_REGISTER_TYPE | sp |
| __MIPS_REGISTER_TYPE | fp |
| __MIPS_REGISTER_TYPE | ra |
| __MIPS_REGISTER_TYPE | c0_sr |
| __MIPS_REGISTER_TYPE | mdlo |
| __MIPS_REGISTER_TYPE | mdhi |
| __MIPS_REGISTER_TYPE | badvaddr |
| __MIPS_REGISTER_TYPE | cause |
| __MIPS_REGISTER_TYPE | epc |
| __MIPS_FPU_REGISTER_TYPE | f0 |
| __MIPS_FPU_REGISTER_TYPE | f1 |
| __MIPS_FPU_REGISTER_TYPE | f2 |
| __MIPS_FPU_REGISTER_TYPE | f3 |
| __MIPS_FPU_REGISTER_TYPE | f4 |
| __MIPS_FPU_REGISTER_TYPE | f5 |
| __MIPS_FPU_REGISTER_TYPE | f6 |
| __MIPS_FPU_REGISTER_TYPE | f7 |
| __MIPS_FPU_REGISTER_TYPE | f8 |
| __MIPS_FPU_REGISTER_TYPE | f9 |
| __MIPS_FPU_REGISTER_TYPE | f10 |
| __MIPS_FPU_REGISTER_TYPE | f11 |
| __MIPS_FPU_REGISTER_TYPE | f12 |
| __MIPS_FPU_REGISTER_TYPE | f13 |
| __MIPS_FPU_REGISTER_TYPE | f14 |
| __MIPS_FPU_REGISTER_TYPE | f15 |
| __MIPS_FPU_REGISTER_TYPE | f16 |
| __MIPS_FPU_REGISTER_TYPE | f17 |
| __MIPS_FPU_REGISTER_TYPE | f18 |
| __MIPS_FPU_REGISTER_TYPE | f19 |
| __MIPS_FPU_REGISTER_TYPE | f20 |
| __MIPS_FPU_REGISTER_TYPE | f21 |
| __MIPS_FPU_REGISTER_TYPE | f22 |
| __MIPS_FPU_REGISTER_TYPE | f23 |
| __MIPS_FPU_REGISTER_TYPE | f24 |
| __MIPS_FPU_REGISTER_TYPE | f25 |
| __MIPS_FPU_REGISTER_TYPE | f26 |
| __MIPS_FPU_REGISTER_TYPE | f27 |
| __MIPS_FPU_REGISTER_TYPE | f28 |
| __MIPS_FPU_REGISTER_TYPE | f29 |
| __MIPS_FPU_REGISTER_TYPE | f30 |
| __MIPS_FPU_REGISTER_TYPE | f31 |
| __MIPS_REGISTER_TYPE | fcsr |
| __MIPS_REGISTER_TYPE | feir |
| __MIPS_REGISTER_TYPE | tlbhi |
| __MIPS_REGISTER_TYPE | inx |
| __MIPS_REGISTER_TYPE | rand |
| __MIPS_REGISTER_TYPE | ctxt |
| __MIPS_REGISTER_TYPE | exctype |
| __MIPS_REGISTER_TYPE | mode |
| __MIPS_REGISTER_TYPE | prid |
| __MIPS_REGISTER_TYPE | tar |
| uint32_t | special_interrupt_register |
| uintptr_t | FRAME_SP |
| uintptr_t | FRAME_LR |
| uintptr_t | EXC_SRR0 |
| uintptr_t | EXC_SRR1 |
| uint32_t | RESERVED_FOR_ALIGNMENT_0 |
| uint32_t | EXC_INTERRUPT_ENTRY_INSTANT |
| uint32_t | EXC_CR |
| uint32_t | EXC_XER |
| uintptr_t | EXC_CTR |
| uintptr_t | EXC_LR |
| uintptr_t | EXC_INTERRUPT_FRAME |
| PPC_GPR_TYPE | GPR0 |
| PPC_GPR_TYPE | GPR1 |
| PPC_GPR_TYPE | GPR2 |
| PPC_GPR_TYPE | GPR3 |
| PPC_GPR_TYPE | GPR4 |
| PPC_GPR_TYPE | GPR5 |
| PPC_GPR_TYPE | GPR6 |
| PPC_GPR_TYPE | GPR7 |
| PPC_GPR_TYPE | GPR8 |
| PPC_GPR_TYPE | GPR9 |
| PPC_GPR_TYPE | GPR10 |
| PPC_GPR_TYPE | GPR11 |
| PPC_GPR_TYPE | GPR12 |
| SPARC_Minimum_stack_frame | Stack_frame |
| uint32_t | psr |
| uint32_t | pc |
| uint32_t | npc |
| uint32_t | g1 |
| uint32_t | g2 |
| uint32_t | g3 |
| uint32_t | g4 |
| uint32_t | g5 |
| uint32_t | reserved_for_alignment |
| uint32_t | g7 |
| uint32_t | i0 |
| uint32_t | i1 |
| uint32_t | i2 |
| uint32_t | i3 |
| uint32_t | i4 |
| uint32_t | i5 |
| uint32_t | i6_fp |
| uint32_t | i7 |
| uint32_t | y |
| uint32_t | tpc |
| uint64_t | error_code |
| uint64_t | rip |
| uint64_t | cs |
| uint64_t | rflags |
| uint64_t | rsp |
| uint64_t | ss |
| uint64_t | rdi |
| uint64_t | rbp |
| uint64_t | rbx |
| uint8_t | sse_state [512] |
| uint64_t | rax |
| uint64_t | rcx |
| uint64_t | rdx |
| uint64_t | rsi |
| uint64_t | r8 |
| uint64_t | r9 |
| uint64_t | r10 |
| uint64_t | r11 |
| uint64_t | saved_rsp |
| uint8_t | padding [8] |
Interrupt stack frame (ISF).
Context saved on stack for an interrupt.
NOTE: The PSR, PC, and NPC are only saved in this structure for the benefit of the user's handler.
| uint32_t CPU_Interrupt_frame::g1 |
This is the offset of the g1 register on an ISF.
| uint32_t CPU_Interrupt_frame::g2 |
This is the offset of the g2 register on an ISF.
| uint32_t CPU_Interrupt_frame::g3 |
This is the offset of the g3 register on an ISF.
| uint32_t CPU_Interrupt_frame::g4 |
This is the offset of the g4 register on an ISF.
| uint32_t CPU_Interrupt_frame::g5 |
This is the offset of the g5 register on an ISF.
| uint32_t CPU_Interrupt_frame::g7 |
This is the offset of the g7 register on an ISF.
| uint32_t CPU_Interrupt_frame::i0 |
This is the offset of the i0 register on an ISF.
| uint32_t CPU_Interrupt_frame::i1 |
This is the offset of the i1 register on an ISF.
| uint32_t CPU_Interrupt_frame::i2 |
This is the offset of the i2 register on an ISF.
| uint32_t CPU_Interrupt_frame::i3 |
This is the offset of the i3 register on an ISF.
| uint32_t CPU_Interrupt_frame::i4 |
This is the offset of the i4 register on an ISF.
| uint32_t CPU_Interrupt_frame::i5 |
This is the offset of the i5 register on an ISF.
| uint32_t CPU_Interrupt_frame::i6_fp |
This is the offset of the i6 register on an ISF.
| uint32_t CPU_Interrupt_frame::i7 |
This is the offset of the i7 register on an ISF.
| uint32_t CPU_Interrupt_frame::npc |
This is the offset of the XXX on an ISF.
| uint8_t CPU_Interrupt_frame::padding[8] |
The caller-saved registers needs to start in a 16-byte aligned position on the stack for the FXSAVE instruction. Therefore, we have 8 extra bytes in case the interrupt handler needs to align it.
| uint32_t CPU_Interrupt_frame::pc |
This is the offset of the XXX on an ISF.
| uint32_t CPU_Interrupt_frame::psr |
This is the offset of the PSR on an ISF.
| uint32_t CPU_Interrupt_frame::reserved_for_alignment |
This is the offset is reserved for alignment on an ISF.
| uint32_t CPU_Interrupt_frame::special_interrupt_register |
This field is a hint that a port will have a number of integer registers that need to be saved when an interrupt occurs or when a context switch occurs at the end of an ISR.
| SPARC_Minimum_stack_frame CPU_Interrupt_frame::Stack_frame |
On an interrupt, we must save the minimum stack frame.
| uint32_t CPU_Interrupt_frame::tpc |
This is the offset of the tpc register on an ISF.
| uint32_t CPU_Interrupt_frame::y |
This is the offset of the y register on an ISF.