28#include <packet2_types.h>
89 static inline void packet2_update(
packet2_t *packet2, qword_t *qw) { packet2->
next = qw; }
96 static inline void packet2_advance_next(
packet2_t *packet2, u32 i)
98 packet2->
next = (qword_t *)((u8 *)packet2->
next + i);
101 static inline void packet2_add_u128(
packet2_t *packet2,
const u128 val)
103 *((u128 *)packet2->
next) = val;
104 packet2_advance_next(packet2,
sizeof(u128));
108 static inline void packet2_add_s64(
packet2_t *packet2,
const s64 val)
110 *((s64 *)packet2->
next) = val;
111 packet2_advance_next(packet2,
sizeof(s64));
114 static inline void packet2_add_2x_s64(
packet2_t *packet2,
const s64 v1,
const s64 v2)
116 packet2_add_s64(packet2, v1);
117 packet2_add_s64(packet2, v2);
120 static inline void packet2_add_s128(
packet2_t *packet2,
const s128 val)
122 *((s128 *)packet2->
next) = val;
123 packet2_advance_next(packet2,
sizeof(s128));
127 static inline void packet2_add_u64(
packet2_t *packet2,
const u64 val)
129 *((u64 *)packet2->
next) = val;
130 packet2_advance_next(packet2,
sizeof(u64));
134 static inline void packet2_add_u32(
packet2_t *packet2,
const u32 val)
136 *((u32 *)packet2->
next) = val;
137 packet2_advance_next(packet2,
sizeof(u32));
141 static inline void packet2_add_s32(
packet2_t *packet2,
const s32 val)
143 *((s32 *)packet2->
next) = val;
144 packet2_advance_next(packet2,
sizeof(s32));
148 static inline void packet2_add_float(
packet2_t *packet2,
const float val)
150 *((
float *)packet2->
next) = val;
151 packet2_advance_next(packet2,
sizeof(
float));
154 static inline void packet2_add_data(
packet2_t *packet2,
void *t_data, u32 t_size)
157 for (i = 0; i < t_size; i++)
158 packet2_add_u128(packet2, ((u128 *)t_data)[i]);
164 static inline void packet2_pad96(
packet2_t *packet2,
const u32 val)
166 while ((((u32)packet2->
next + 4) & 0xf) != 0)
167 packet2_add_u32(packet2, val);
173 static inline void packet2_pad128(
packet2_t *packet2,
const u32 val)
175 while (((u32)packet2->
next & 0xf) != 0)
176 packet2_add_u32(packet2, val);
200 static inline u32 packet2_get_qw_count(
packet2_t *packet2) {
return ((u32)packet2->
next - (u32)packet2->base) >> 4; }
203 static inline u8 packet2_doesnt_have_even_number_of_quads(
packet2_t *packet2) {
return ((u32)packet2->
next & 0xF) != 0; }
void packet2_print(packet2_t *packet2, u32 qw_count)
void packet2_free(packet2_t *packet2)
void packet2_print_qw_count(packet2_t *packet2)
void packet2_reset(packet2_t *packet2, u8 clear_mem)
packet2_t * packet2_create_from(qword_t *base, qword_t *next, u16 qwords, enum Packet2Type type, enum Packet2Mode mode, u8 tte)
void packet2_add(packet2_t *a, packet2_t *b)
packet2_t * packet2_create(u16 qwords, enum Packet2Type type, enum Packet2Mode mode, u8 tte)
vif_code_t * vif_code_opened_at
dma_tag_t * tag_opened_at