Loading...
Searching...
No Matches
context_frame.h File Reference

Thread context frame stored on stack. More...

Detailed Description

Thread context frame stored on stack.

Author
JP Bonn

Definition in file context_frame.h.

#include <stdint.h>
+ Include dependency graph for context_frame.h:

Go to the source code of this file.

Data Structures

struct  context_switch_frame
 Stores the registers and PC for a context switch. More...
 

Macros

#define CONTEXT_FRAME_SIZE   (pad_OFFSET + 3 * REGSZ)
 Size of context switch frame.
 
#define SP_OFFSET_IN_THREAD   0
 Offset of stack pointer in struct _thread.
 
#define REGSZ   (__riscv_xlen / 8)
 size of one register in bytes
 
#define REG_L   lw
 XLEN-sized load instruction mnemonic.
 
#define REG_S   sw
 XLEN-sized store instruction mnemonic.
 

Register offsets

#define s0_OFFSET   (0 * REGSZ)
 
#define s1_OFFSET   (1 * REGSZ)
 
#define s2_OFFSET   (2 * REGSZ)
 
#define s3_OFFSET   (3 * REGSZ)
 
#define s4_OFFSET   (4 * REGSZ)
 
#define s5_OFFSET   (5 * REGSZ)
 
#define s6_OFFSET   (6 * REGSZ)
 
#define s7_OFFSET   (7 * REGSZ)
 
#define s8_OFFSET   (8 * REGSZ)
 
#define s9_OFFSET   (9 * REGSZ)
 
#define s10_OFFSET   (10 * REGSZ)
 
#define s11_OFFSET   (11 * REGSZ)
 
#define ra_OFFSET   (12 * REGSZ)
 
#define t0_OFFSET   (13 * REGSZ)
 
#define t1_OFFSET   (14 * REGSZ)
 
#define t2_OFFSET   (15 * REGSZ)
 
#define t3_OFFSET   (16 * REGSZ)
 
#define t4_OFFSET   (17 * REGSZ)
 
#define t5_OFFSET   (18 * REGSZ)
 
#define t6_OFFSET   (19 * REGSZ)
 
#define a0_OFFSET   (20 * REGSZ)
 
#define a1_OFFSET   (21 * REGSZ)
 
#define a2_OFFSET   (22 * REGSZ)
 
#define a3_OFFSET   (23 * REGSZ)
 
#define a4_OFFSET   (24 * REGSZ)
 
#define a5_OFFSET   (25 * REGSZ)
 
#define a6_OFFSET   (26 * REGSZ)
 
#define a7_OFFSET   (27 * REGSZ)
 
#define pc_OFFSET   (28 * REGSZ)
 
#define pad_OFFSET   (29 * REGSZ)
 

Macro Definition Documentation

◆ a0_OFFSET

#define a0_OFFSET   (20 * REGSZ)

Definition at line 121 of file context_frame.h.

◆ a1_OFFSET

#define a1_OFFSET   (21 * REGSZ)

Definition at line 122 of file context_frame.h.

◆ a2_OFFSET

#define a2_OFFSET   (22 * REGSZ)

Definition at line 123 of file context_frame.h.

◆ a3_OFFSET

#define a3_OFFSET   (23 * REGSZ)

Definition at line 124 of file context_frame.h.

◆ a4_OFFSET

#define a4_OFFSET   (24 * REGSZ)

Definition at line 125 of file context_frame.h.

◆ a5_OFFSET

#define a5_OFFSET   (25 * REGSZ)

Definition at line 126 of file context_frame.h.

◆ a6_OFFSET

#define a6_OFFSET   (26 * REGSZ)

Definition at line 127 of file context_frame.h.

◆ a7_OFFSET

#define a7_OFFSET   (27 * REGSZ)

Definition at line 128 of file context_frame.h.

◆ CONTEXT_FRAME_SIZE

#define CONTEXT_FRAME_SIZE   (pad_OFFSET + 3 * REGSZ)

Size of context switch frame.

Definition at line 136 of file context_frame.h.

◆ pad_OFFSET

#define pad_OFFSET   (29 * REGSZ)

Definition at line 130 of file context_frame.h.

◆ pc_OFFSET

#define pc_OFFSET   (28 * REGSZ)

Definition at line 129 of file context_frame.h.

◆ ra_OFFSET

#define ra_OFFSET   (12 * REGSZ)

Definition at line 113 of file context_frame.h.

◆ REG_L

#define REG_L   lw

XLEN-sized load instruction mnemonic.

Definition at line 41 of file context_frame.h.

◆ REG_S

#define REG_S   sw

XLEN-sized store instruction mnemonic.

Definition at line 45 of file context_frame.h.

◆ REGSZ

#define REGSZ   (__riscv_xlen / 8)

size of one register in bytes

Definition at line 26 of file context_frame.h.

◆ s0_OFFSET

#define s0_OFFSET   (0 * REGSZ)

Definition at line 101 of file context_frame.h.

◆ s10_OFFSET

#define s10_OFFSET   (10 * REGSZ)

Definition at line 111 of file context_frame.h.

◆ s11_OFFSET

#define s11_OFFSET   (11 * REGSZ)

Definition at line 112 of file context_frame.h.

◆ s1_OFFSET

#define s1_OFFSET   (1 * REGSZ)

Definition at line 102 of file context_frame.h.

◆ s2_OFFSET

#define s2_OFFSET   (2 * REGSZ)

Definition at line 103 of file context_frame.h.

◆ s3_OFFSET

#define s3_OFFSET   (3 * REGSZ)

Definition at line 104 of file context_frame.h.

◆ s4_OFFSET

#define s4_OFFSET   (4 * REGSZ)

Definition at line 105 of file context_frame.h.

◆ s5_OFFSET

#define s5_OFFSET   (5 * REGSZ)

Definition at line 106 of file context_frame.h.

◆ s6_OFFSET

#define s6_OFFSET   (6 * REGSZ)

Definition at line 107 of file context_frame.h.

◆ s7_OFFSET

#define s7_OFFSET   (7 * REGSZ)

Definition at line 108 of file context_frame.h.

◆ s8_OFFSET

#define s8_OFFSET   (8 * REGSZ)

Definition at line 109 of file context_frame.h.

◆ s9_OFFSET

#define s9_OFFSET   (9 * REGSZ)

Definition at line 110 of file context_frame.h.

◆ SP_OFFSET_IN_THREAD

#define SP_OFFSET_IN_THREAD   0

Offset of stack pointer in struct _thread.

Definition at line 141 of file context_frame.h.

◆ t0_OFFSET

#define t0_OFFSET   (13 * REGSZ)

Definition at line 114 of file context_frame.h.

◆ t1_OFFSET

#define t1_OFFSET   (14 * REGSZ)

Definition at line 115 of file context_frame.h.

◆ t2_OFFSET

#define t2_OFFSET   (15 * REGSZ)

Definition at line 116 of file context_frame.h.

◆ t3_OFFSET

#define t3_OFFSET   (16 * REGSZ)

Definition at line 117 of file context_frame.h.

◆ t4_OFFSET

#define t4_OFFSET   (17 * REGSZ)

Definition at line 118 of file context_frame.h.

◆ t5_OFFSET

#define t5_OFFSET   (18 * REGSZ)

Definition at line 119 of file context_frame.h.

◆ t6_OFFSET

#define t6_OFFSET   (19 * REGSZ)

Definition at line 120 of file context_frame.h.