66 lines
1.3 KiB
C
66 lines
1.3 KiB
C
#ifndef SPSLR_LIST_H
|
|
#define SPSLR_LIST_H
|
|
|
|
#include "spslr_types.h"
|
|
|
|
#define __packed __attribute__((packed))
|
|
|
|
#define SPSLR_IPIN_OP_PATCH 1
|
|
#define SPSLR_IPIN_OP_ADD_INITIAL_OFFSET 2
|
|
#define SPSLR_IPIN_OP_SUB_INITIAL_OFFSET 3
|
|
#define SPSLR_IPIN_OP_ADD_OFFSET 4
|
|
#define SPSLR_IPIN_OP_SUB_OFFSET 5
|
|
#define SPSLR_IPIN_OP_ADD_CONST 6
|
|
|
|
#define SPSLR_FLAG_FIELD_FIXED 1
|
|
|
|
struct spslr_target {
|
|
spslr_u32 size;
|
|
spslr_u32 fieldcnt;
|
|
spslr_u32 fieldoff; // Offset into spslr_target_field array
|
|
} __packed;
|
|
|
|
struct spslr_target_field {
|
|
spslr_u32 offset;
|
|
spslr_u32 size;
|
|
spslr_u32 alignment;
|
|
spslr_u32 flags;
|
|
} __packed;
|
|
|
|
struct spslr_ipin {
|
|
spslr_u64 addr;
|
|
spslr_u32 size;
|
|
spslr_u32 program; // Index in spslr_ipin_op array
|
|
} __packed;
|
|
|
|
struct spslr_ipin_op {
|
|
spslr_u32 code;
|
|
|
|
union {
|
|
spslr_u32 patch_unused;
|
|
spslr_u32 add_initial_offset_target;
|
|
spslr_u32 sub_initial_offset_target;
|
|
spslr_u32 add_offset_target;
|
|
spslr_u32 sub_offset_target;
|
|
spslr_s32 add_const_value;
|
|
} op0;
|
|
|
|
union {
|
|
spslr_u32 patch_unused;
|
|
spslr_u32 add_initial_offset_field;
|
|
spslr_u32 sub_initial_offset_field;
|
|
spslr_u32 add_offset_field;
|
|
spslr_u32 sub_offset_field;
|
|
spslr_u32 add_const_unused;
|
|
} op1;
|
|
} __packed;
|
|
|
|
struct spslr_dpin {
|
|
spslr_u64 addr;
|
|
spslr_u32 target; // Index in spslr_target array
|
|
} __packed;
|
|
|
|
#undef __packed
|
|
|
|
#endif
|