195 __REGIMM_RESERVED_13,
197 __REGIMM_RESERVED_15,
202 __REGIMM_RESERVED_20,
203 __REGIMM_RESERVED_21,
204 __REGIMM_RESERVED_22,
205 __REGIMM_RESERVED_23,
206 __REGIMM_RESERVED_24,
207 __REGIMM_RESERVED_25,
208 __REGIMM_RESERVED_26,
209 __REGIMM_RESERVED_27,
210 __REGIMM_RESERVED_28,
211 __REGIMM_RESERVED_29,
212 __REGIMM_RESERVED_30,
213 __REGIMM_RESERVED_31,
273 __C0_REG_RESERVED_21,
274 __C0_REG_RESERVED_22,
275 __C0_REG_RESERVED_23,
276 __C0_REG_RESERVED_24,
277 __C0_REG_RESERVED_25,
283 __C0_REG_RESERVED_31,
290 __COPZ_RS_RESERVED_3,
294 __COPZ_RS_RESERVED_7,
296 __COPZ_RS_RESERVED_9,
297 __COPZ_RS_RESERVED_10,
298 __COPZ_RS_RESERVED_11,
299 __COPZ_RS_RESERVED_12,
300 __COPZ_RS_RESERVED_13,
301 __COPZ_RS_RESERVED_14,
302 __COPZ_RS_RESERVED_15,
306 __C0_FUNCT_RESERVED_0,
309 __C0_FUNCT_RESERVED_3,
310 __C0_FUNCT_RESERVED_4,
311 __C0_FUNCT_RESERVED_5,
313 __C0_FUNCT_RESERVED_7,
315 __C0_FUNCT_RESERVED_9,
316 __C0_FUNCT_RESERVED_10,
317 __C0_FUNCT_RESERVED_11,
318 __C0_FUNCT_RESERVED_12,
319 __C0_FUNCT_RESERVED_13,
320 __C0_FUNCT_RESERVED_14,
321 __C0_FUNCT_RESERVED_15,
322 __C0_FUNCT_RESERVED_16,
323 __C0_FUNCT_RESERVED_17,
324 __C0_FUNCT_RESERVED_18,
325 __C0_FUNCT_RESERVED_19,
326 __C0_FUNCT_RESERVED_20,
327 __C0_FUNCT_RESERVED_21,
328 __C0_FUNCT_RESERVED_22,
329 __C0_FUNCT_RESERVED_23,
331 __C0_FUNCT_RESERVED_25,
332 __C0_FUNCT_RESERVED_26,
333 __C0_FUNCT_RESERVED_27,
334 __C0_FUNCT_RESERVED_28,
335 __C0_FUNCT_RESERVED_29,
336 __C0_FUNCT_RESERVED_30,
337 __C0_FUNCT_RESERVED_31,
338 __C0_FUNCT_RESERVED_32,
339 __C0_FUNCT_RESERVED_33,
340 __C0_FUNCT_RESERVED_34,
341 __C0_FUNCT_RESERVED_35,
342 __C0_FUNCT_RESERVED_36,
343 __C0_FUNCT_RESERVED_37,
344 __C0_FUNCT_RESERVED_38,
345 __C0_FUNCT_RESERVED_39,
346 __C0_FUNCT_RESERVED_40,
347 __C0_FUNCT_RESERVED_41,
348 __C0_FUNCT_RESERVED_42,
349 __C0_FUNCT_RESERVED_43,
350 __C0_FUNCT_RESERVED_44,
351 __C0_FUNCT_RESERVED_45,
352 __C0_FUNCT_RESERVED_46,
353 __C0_FUNCT_RESERVED_47,
354 __C0_FUNCT_RESERVED_48,
355 __C0_FUNCT_RESERVED_49,
356 __C0_FUNCT_RESERVED_50,
357 __C0_FUNCT_RESERVED_51,
358 __C0_FUNCT_RESERVED_52,
359 __C0_FUNCT_RESERVED_53,
360 __C0_FUNCT_RESERVED_54,
361 __C0_FUNCT_RESERVED_55,
362 __C0_FUNCT_RESERVED_56,
363 __C0_FUNCT_RESERVED_57,
364 __C0_FUNCT_RESERVED_58,
365 __C0_FUNCT_RESERVED_59,
366 __C0_FUNCT_RESERVED_60,
367 __C0_FUNCT_RESERVED_61,
368 __C0_FUNCT_RESERVED_62,
369 __C0_FUNCT_RESERVED_63,
372#define __ASM_I_INST(o, s, t, i) \
373 (((vr4300_instruction_t){.i_type = {.op = (o), .rs = (s), .rt = (t), .imm = (i)&0xFFFF}}).raw)
374#define __ASM_J_INST(o, t) (((vr4300_instruction_t){.j_type = {.op = (o), .target = (t)&0x3FFFFFF}}).raw)
375#define __ASM_R_INST(o, s, t, d, a, f) \
376 (((vr4300_instruction_t){.r_type = {.op = (o), .rs = (s), .rt = (t), .rd = (d), .sa = (a), .funct = (f)}}).raw)
377#define __ASM_C_INST(o, c, f) (((vr4300_instruction_t){.c_type = {.op = (o), .co = (c), .funct = (f)}}).raw)
379#define A_OFFSET(a) ((int16_t)((a)&0xFFFF))
380#define A_BASE(a) ((uint16_t)((((a) >> 16) & 0xFFFF) + (A_OFFSET(a) < 0 ? 1 : 0)))
382#define I_ADDIU(rt, rs, immediate) __ASM_I_INST(OP_ADDIU, rs, rt, immediate)
383#define I_AND(rd, rs, rt) __ASM_R_INST(OP_SPECIAL, rs, rt, rd, 0, FUNCT_AND)
384#define I_ANDI(rt, rs, immediate) __ASM_I_INST(OP_ANDI, rs, rt, immediate)
385#define I_BEQ(rs, rt, offset) __ASM_I_INST(OP_BEQ, rs, rt, offset)
386#define I_BGTZ(rs, offset) __ASM_I_INST(OP_BGTZ, rs, 0, offset)
387#define I_BNE(rs, rt, offset) __ASM_I_INST(OP_BNE, rs, rt, offset)
388#define I_BNEL(rs, rt, offset) __ASM_I_INST(OP_BNEL, rs, rt, offset)
389#define I_CACHE(op, offset, base) __ASM_I_INST(OP_CACHE, base, op, offset)
390#define I_ERET() __ASM_C_INST(OP_COP0, 1, C0_FUNCT_ERET)
391#define I_J(target) __ASM_J_INST(OP_J, (target >> 2))
392#define I_JR(rs) __ASM_R_INST(OP_SPECIAL, rs, REG_ZERO, REG_ZERO, 0, FUNCT_JR)
393#define I_LBU(rt, offset, base) __ASM_I_INST(OP_LBU, base, rt, offset)
394#define I_LHU(rt, offset, base) __ASM_I_INST(OP_LHU, base, rt, offset)
395#define I_LUI(rt, immediate) __ASM_I_INST(OP_LUI, 0, rt, immediate)
396#define I_LW(rt, offset, base) __ASM_I_INST(OP_LW, base, rt, offset)
397#define I_MFC0(rt, rd) __ASM_R_INST(OP_COP0, COPZ_RS_MF, rt, rd, 0, 0)
398#define I_MTC0(rt, rd) __ASM_R_INST(OP_COP0, COPZ_RS_MT, rt, rd, 0, 0)
399#define I_NOP() __ASM_R_INST(OP_SPECIAL, REG_ZERO, REG_ZERO, REG_ZERO, 0, FUNCT_SSL)
400#define I_OR(rd, rs, rt) __ASM_R_INST(OP_SPECIAL, rs, rt, rd, 0, FUNCT_OR)
401#define I_ORI(rt, rs, immediate) __ASM_I_INST(OP_ORI, rs, rt, immediate)
402#define I_SB(rt, offset, base) __ASM_I_INST(OP_SB, base, rt, offset)
403#define I_SH(rt, offset, base) __ASM_I_INST(OP_SH, base, rt, offset)
404#define I_SRL(rd, rt, sa) __ASM_R_INST(OP_SPECIAL, 0, rt, rd, sa, FUNCT_SRL)
405#define I_SW(rt, offset, base) __ASM_I_INST(OP_SW, base, rt, offset)
VR4300 Instruction Structure.
Definition vr4300_asm.h:11
uint32_t raw
Definition vr4300_asm.h:12