Zephyr API Documentation 4.2.0-rc3
A Scalable Open Source RTOS
 4.2.0-rc3
arch_esf Struct Reference

Exception Stack Frame. More...

#include <zephyr/arch/arm/cortex_a_r/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
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 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 r1
uint32_t r2
uint32_t r3
uint32_t r4
uint32_t r5
uint32_t r6
uint32_t r7
uint32_t r8
uint32_t r9
uint32_t r10
uint32_t r11
uint32_t r12
uint32_t r13
uint32_t r14
uint32_t r15
uint32_t entry_point
uint32_t psw
uint32_t out [8]
uint32_t global [8]
uint32_t psr
uint32_t pc
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.

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

◆ errorCode

unsigned int arch_esf::errorCode

◆ es

unsigned int arch_esf::es

◆ esi

unsigned int arch_esf::esi

◆ esp

unsigned int arch_esf::esp

◆ 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

◆ 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

◆ psr

uint32_t arch_esf::psr

◆ psw

uint32_t arch_esf::psw

◆ r1

uint32_t arch_esf::r1

◆ r10 [1/2]

uint32_t arch_esf::r10

◆ r10 [2/2]

unsigned long arch_esf::r10

◆ r11 [1/2]

uint32_t arch_esf::r11

◆ r11 [2/2]

unsigned long arch_esf::r11

◆ r12

uint32_t arch_esf::r12

◆ r13

uint32_t arch_esf::r13

◆ r14

uint32_t arch_esf::r14

◆ r15

uint32_t arch_esf::r15

◆ r2

uint32_t arch_esf::r2

◆ r3

uint32_t arch_esf::r3

◆ r4

uint32_t arch_esf::r4

◆ r5

uint32_t arch_esf::r5

◆ r6

uint32_t arch_esf::r6

◆ r7

uint32_t arch_esf::r7

◆ r8 [1/2]

uint32_t arch_esf::r8

◆ r8 [2/2]

unsigned long arch_esf::r8

◆ r9 [1/2]

uint32_t arch_esf::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: