Skip to content

Instantly share code, notes, and snippets.

@cdcs
Created August 24, 2013 17:53
Show Gist options
  • Save cdcs/6329471 to your computer and use it in GitHub Desktop.
Save cdcs/6329471 to your computer and use it in GitHub Desktop.
typedef struct {
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 l0;
uint32_t l1;
uint32_t l2;
uint32_t l3;
uint32_t l4;
uint32_t l5;
uint32_t l6;
uint32_t l7;
} _CPU_Register_Window;
typedef struct {
double g0_g1;
uint32_t g2;
uint32_t g3;
uint32_t g4;
uint32_t g5;
uint32_t g6;
uint32_t g7;
} _CPU_Register_Globals;
typedef struct {
_CPU_Register_Window window[SPARC_NUMBER_OF_REGISTER_WINDOWS];
_CPU_Register_Globals globals;
uint32_t psr;
uint32_t wim;
uint32_t y;
} _CPU_Register_Context;
#define I0_OFFSET 0x00
#define I1_OFFSET 0x04
#define I2_OFFSET 0x08
#define I3_OFFSET 0x0C
#define I4_OFFSET 0x10
#define I5_OFFSET 0x14
#define I6_OFFSET 0x18
#define I7_OFFSET 0x1C
#define L0_OFFSET 0x20
#define L1_OFFSET 0x24
#define L2_OFFSET 0x28
#define L3_OFFSET 0x2C
#define L4_OFFSET 0x30
#define L5_OFFSET 0x34
#define L6_OFFSET 0x38
#define L7_OFFSET 0x3C
#define CPU_REGISTER_WINDOW_SIZE 0x40
#define CPU_REGISTER_WINDOWS_SIZE 0x40*SPARC_NUMBER_OF_REGISTER_WINDOWS
#define G0_OFFSET 0x00
#define G1_OFFSET 0x04
#define G2_OFFSET 0x08
#define G3_OFFSET 0x0C
#define G4_OFFSET 0x10
#define G5_OFFSET 0x14
#define G6_OFFSET 0x18
#define G7_OFFSET 0x1C
#define CPU_REGISTER_GLOBALS_SIZE 0x20
#define PSR_OFFSET (CPU_REGISTER_WINDOWS_SIZE+CPU_REGISTER_GLOBALS_SIZE)
#define WIM_OFFSET (PSR_OFFSET + 4)
#define Y_OFFSET (PSR_OFFSET + 8)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment