Zephyr Project API 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
arch_esf Struct Reference

Exception stack frame. More...

#include <exception.h>

Data Structures

struct  __basic_sf

Data Fields

struct __fpu_sf fpu
struct arch_esf::__basic_sf basic
uint64_t x0
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 lr
uint64_t spsr
uint64_t elr
uint32_t r0
 General-purpose register R0.
uint32_t r1
 General-purpose register R1.
uint32_t r2
 General-purpose register R2.
uint32_t r3
 General-purpose register R3.
uint32_t r4
 General-purpose register R4.
uint32_t r5
 General-purpose register R5.
uint32_t r6
 General-purpose register R6.
uint32_t r7
 General-purpose register R7.
uint32_t r8
 General-purpose register R8.
uint32_t r9
 General-purpose register R9.
uint32_t r10
 General-purpose register R10.
uint32_t r11
 General-purpose register R11.
uint32_t r12
 General-purpose register R12.
uint32_t r13
 General-purpose register R13.
uint32_t r14
 General-purpose register R14.
uint32_t r15
 General-purpose register R15.
uint32_t r16
 General-purpose register R16 (callee-saved).
uint32_t r17
 General-purpose register R17 (callee-saved).
uint32_t r18
 General-purpose register R18 (callee-saved).
uint32_t r19
 General-purpose register R19 (callee-saved).
uint32_t r20
 General-purpose register R20 (callee-saved).
uint32_t r21
 General-purpose register R21 (callee-saved).
uint32_t r22
 General-purpose register R22 (callee-saved).
uint32_t r23
 General-purpose register R23 (callee-saved).
uint32_t r24
 General-purpose register R24 (callee-saved).
uint32_t r25
 General-purpose register R25 (callee-saved).
uint32_t r26
 General-purpose register R26 (callee-saved).
uint32_t r27
 General-purpose register R27 (callee-saved).
uint32_t r28
 General-purpose register R28.
uint32_t r29_sp
 Stack pointer (R29).
uint32_t r30_fp
 Frame pointer (R30).
uint32_t r31_lr
 Link register (R31).
uint32_t pc
 Program counter.
uint32_t event_type
 Event type that triggered this exception.
uint32_t event_info [4]
 Event information registers (g0-g3).
unsigned long ra
unsigned long gp
unsigned long t0
unsigned long t1
unsigned long t2
unsigned long t3
unsigned long t4
unsigned long t5
unsigned long t6
unsigned long t7
unsigned long t8
unsigned long t9
unsigned long a0
unsigned long a1
unsigned long a2
unsigned long a3
unsigned long v0
unsigned long v1
unsigned long at
unsigned long epc
unsigned long badvaddr
unsigned long hi
unsigned long lo
unsigned long status
unsigned long cause
uint32_t r29
uint32_t r31
uint32_t mac_lo
uint32_t mac_hi
uint32_t epcr
uint32_t esr
uint32_t dummy
unsigned long a4
unsigned long a5
unsigned long a6
unsigned long a7
unsigned long mepc
unsigned long mstatus
unsigned long s0
unsigned long sp
uint32_t acc_l
uint32_t acc_h
uint32_t entry_point
uint32_t psw
uint32_t out [8]
uint32_t global [8]
uint32_t psr
uint32_t npc
uint32_t wim
uint32_t tbr
uint32_t y
unsigned int ss
unsigned int gs
unsigned int fs
unsigned int es
unsigned int ds
unsigned int esp
unsigned int ebp
unsigned int ebx
unsigned int esi
unsigned int edi
unsigned int edx
unsigned int eax
unsigned int ecx
unsigned int errorCode
unsigned int eip
unsigned int cs
unsigned int eflags
unsigned long rbp
unsigned long rax
unsigned long rcx
unsigned long rdx
unsigned long rsi
unsigned long rdi
unsigned long r8
unsigned long r9
unsigned long r10
char fxsave [X86_FXSAVE_SIZE]
unsigned long r11
unsigned long vector
unsigned long code
unsigned long rip
unsigned long cs
unsigned long rflags
unsigned long rsp
unsigned long ss
int dummy

Detailed Description

Exception stack frame.

Exception Stack Frame.

Saved register state at the time of an exception or interrupt.

A pointer to an "exception stack frame" (ESF) is passed as an argument to exception handlers registered via nanoCpuExcConnect(). As the system always operates at ring 0, only the EIP, CS and EFLAGS registers are pushed onto the stack when an exception occurs.

The exception stack frame includes the volatile registers (EAX, ECX, and EDX) as well as the 5 non-volatile registers (EDI, ESI, EBX, EBP and ESP). Those registers are pushed onto the stack by _ExcEnt().

Field Documentation

◆ a0

unsigned long arch_esf::a0

◆ a1

unsigned long arch_esf::a1

◆ a2

unsigned long arch_esf::a2

◆ a3

unsigned long arch_esf::a3

◆ a4

unsigned long arch_esf::a4

◆ a5

unsigned long arch_esf::a5

◆ a6

unsigned long arch_esf::a6

◆ a7

unsigned long arch_esf::a7

◆ acc_h

uint32_t arch_esf::acc_h

◆ acc_l

uint32_t arch_esf::acc_l

◆ at

unsigned long arch_esf::at

◆ badvaddr

unsigned long arch_esf::badvaddr

◆ basic

struct arch_esf::__basic_sf arch_esf::basic

◆ cause

unsigned long arch_esf::cause

◆ code

unsigned long arch_esf::code

◆ cs [1/2]

unsigned int arch_esf::cs

◆ cs [2/2]

unsigned long arch_esf::cs

◆ ds

unsigned int arch_esf::ds

◆ dummy [1/2]

uint32_t arch_esf::dummy

◆ dummy [2/2]

int arch_esf::dummy

◆ eax

unsigned int arch_esf::eax

◆ ebp

unsigned int arch_esf::ebp

◆ ebx

unsigned int arch_esf::ebx

◆ ecx

unsigned int arch_esf::ecx

◆ edi

unsigned int arch_esf::edi

◆ edx

unsigned int arch_esf::edx

◆ eflags

unsigned int arch_esf::eflags

◆ eip

unsigned int arch_esf::eip

◆ elr

uint64_t arch_esf::elr

◆ entry_point

uint32_t arch_esf::entry_point

◆ epc

unsigned long arch_esf::epc

◆ epcr

uint32_t arch_esf::epcr

◆ errorCode

unsigned int arch_esf::errorCode

◆ es

unsigned int arch_esf::es

◆ esi

unsigned int arch_esf::esi

◆ esp

unsigned int arch_esf::esp

◆ esr

uint32_t arch_esf::esr

◆ event_info

uint32_t arch_esf::event_info[4]

Event information registers (g0-g3).

◆ event_type

uint32_t arch_esf::event_type

Event type that triggered this exception.

◆ fpu

struct __fpu_sf arch_esf::fpu

◆ fs

unsigned int arch_esf::fs

◆ fxsave

char arch_esf::fxsave[X86_FXSAVE_SIZE]

◆ global

uint32_t arch_esf::global[8]

◆ gp

unsigned long arch_esf::gp

◆ gs

unsigned int arch_esf::gs

◆ hi

unsigned long arch_esf::hi

◆ lo

unsigned long arch_esf::lo

◆ lr

uint64_t arch_esf::lr

◆ mac_hi

uint32_t arch_esf::mac_hi

◆ mac_lo

uint32_t arch_esf::mac_lo

◆ mepc

unsigned long arch_esf::mepc

◆ mstatus

unsigned long arch_esf::mstatus

◆ npc

uint32_t arch_esf::npc

◆ out

uint32_t arch_esf::out[8]

◆ pc

uint32_t arch_esf::pc

Program counter.

◆ psr

uint32_t arch_esf::psr

◆ psw

uint32_t arch_esf::psw

◆ r0

uint32_t arch_esf::r0

General-purpose register R0.

◆ r1

uint32_t arch_esf::r1

General-purpose register R1.

◆ r10 [1/2]

uint32_t arch_esf::r10

General-purpose register R10.

◆ r10 [2/2]

unsigned long arch_esf::r10

◆ r11 [1/2]

uint32_t arch_esf::r11

General-purpose register R11.

◆ r11 [2/2]

unsigned long arch_esf::r11

◆ r12

uint32_t arch_esf::r12

General-purpose register R12.

◆ r13

uint32_t arch_esf::r13

General-purpose register R13.

◆ r14

uint32_t arch_esf::r14

General-purpose register R14.

◆ r15

uint32_t arch_esf::r15

General-purpose register R15.

◆ r16

uint32_t arch_esf::r16

General-purpose register R16 (callee-saved).

◆ r17

uint32_t arch_esf::r17

General-purpose register R17 (callee-saved).

◆ r18

uint32_t arch_esf::r18

General-purpose register R18 (callee-saved).

◆ r19

uint32_t arch_esf::r19

General-purpose register R19 (callee-saved).

◆ r2

uint32_t arch_esf::r2

General-purpose register R2.

◆ r20

uint32_t arch_esf::r20

General-purpose register R20 (callee-saved).

◆ r21

uint32_t arch_esf::r21

General-purpose register R21 (callee-saved).

◆ r22

uint32_t arch_esf::r22

General-purpose register R22 (callee-saved).

◆ r23

uint32_t arch_esf::r23

General-purpose register R23 (callee-saved).

◆ r24

uint32_t arch_esf::r24

General-purpose register R24 (callee-saved).

◆ r25

uint32_t arch_esf::r25

General-purpose register R25 (callee-saved).

◆ r26

uint32_t arch_esf::r26

General-purpose register R26 (callee-saved).

◆ r27

uint32_t arch_esf::r27

General-purpose register R27 (callee-saved).

◆ r28

uint32_t arch_esf::r28

General-purpose register R28.

◆ r29

uint32_t arch_esf::r29

◆ r29_sp

uint32_t arch_esf::r29_sp

Stack pointer (R29).

◆ r3

uint32_t arch_esf::r3

General-purpose register R3.

◆ r30_fp

uint32_t arch_esf::r30_fp

Frame pointer (R30).

◆ r31

uint32_t arch_esf::r31

◆ r31_lr

uint32_t arch_esf::r31_lr

Link register (R31).

◆ r4

uint32_t arch_esf::r4

General-purpose register R4.

◆ r5

uint32_t arch_esf::r5

General-purpose register R5.

◆ r6

uint32_t arch_esf::r6

General-purpose register R6.

◆ r7

uint32_t arch_esf::r7

General-purpose register R7.

◆ r8 [1/2]

uint32_t arch_esf::r8

General-purpose register R8.

◆ r8 [2/2]

unsigned long arch_esf::r8

◆ r9 [1/2]

uint32_t arch_esf::r9

General-purpose register R9.

◆ r9 [2/2]

unsigned long arch_esf::r9

◆ ra

unsigned long arch_esf::ra

◆ rax

unsigned long arch_esf::rax

◆ rbp

unsigned long arch_esf::rbp

◆ rcx

unsigned long arch_esf::rcx

◆ rdi

unsigned long arch_esf::rdi

◆ rdx

unsigned long arch_esf::rdx

◆ rflags

unsigned long arch_esf::rflags

◆ rip

unsigned long arch_esf::rip

◆ rsi

unsigned long arch_esf::rsi

◆ rsp

unsigned long arch_esf::rsp

◆ s0

unsigned long arch_esf::s0

◆ sp

unsigned long arch_esf::sp

◆ spsr

uint64_t arch_esf::spsr

◆ ss [1/2]

unsigned int arch_esf::ss

◆ ss [2/2]

unsigned long arch_esf::ss

◆ status

unsigned long arch_esf::status

◆ t0

unsigned long arch_esf::t0

◆ t1

unsigned long arch_esf::t1

◆ t2

unsigned long arch_esf::t2

◆ t3

unsigned long arch_esf::t3

◆ t4

unsigned long arch_esf::t4

◆ t5

unsigned long arch_esf::t5

◆ t6

unsigned long arch_esf::t6

◆ t7

unsigned long arch_esf::t7

◆ t8

unsigned long arch_esf::t8

◆ t9

unsigned long arch_esf::t9

◆ tbr

uint32_t arch_esf::tbr

◆ v0

unsigned long arch_esf::v0

◆ v1

unsigned long arch_esf::v1

◆ vector

unsigned long arch_esf::vector

◆ wim

uint32_t arch_esf::wim

◆ x0

uint64_t arch_esf::x0

◆ x1

uint64_t arch_esf::x1

◆ x10

uint64_t arch_esf::x10

◆ x11

uint64_t arch_esf::x11

◆ x12

uint64_t arch_esf::x12

◆ x13

uint64_t arch_esf::x13

◆ x14

uint64_t arch_esf::x14

◆ x15

uint64_t arch_esf::x15

◆ x16

uint64_t arch_esf::x16

◆ x17

uint64_t arch_esf::x17

◆ x18

uint64_t arch_esf::x18

◆ x2

uint64_t arch_esf::x2

◆ x3

uint64_t arch_esf::x3

◆ x4

uint64_t arch_esf::x4

◆ x5

uint64_t arch_esf::x5

◆ x6

uint64_t arch_esf::x6

◆ x7

uint64_t arch_esf::x7

◆ x8

uint64_t arch_esf::x8

◆ x9

uint64_t arch_esf::x9

◆ y

uint32_t arch_esf::y

The documentation for this struct was generated from the following files: