Home | History | Annotate | Download | only in codeflinger

Lines Matching defs:insn

62  *	insn[cc][mod]	[operands]
292 static void disasm_register_shift(const disasm_interface_t *di, u_int insn);
293 static void disasm_print_reglist(const disasm_interface_t *di, u_int insn);
294 static void disasm_insn_ldrstr(const disasm_interface_t *di, u_int insn,
296 static void disasm_insn_ldrhstrh(const disasm_interface_t *di, u_int insn,
298 static void disasm_insn_ldcstc(const disasm_interface_t *di, u_int insn,
308 u_int insn;
316 insn = di->di_readword(loc);
318 /* di->di_printf("loc=%08x insn=%08x : ", loc, insn);*/
321 if ((insn & i_ptr->mask) == i_ptr->pattern) {
329 di->di_printf("und%s\t%08x\n", insn_condition(insn), insn);
337 di->di_printf("%s%s", i_ptr->name, insn_condition(insn));
352 if (insn & 0x02000000) {
353 int rotate= ((insn >> 7) & 0x1e);
356 (insn & 0xff) << (32 - rotate) |
357 (insn & 0xff) >> rotate);
359 disasm_register_shift(di, insn);
364 di->di_printf("r%d", ((insn >> 12) & 0x0f));
368 if (((insn >> 12) & 0x0f) == 15)
373 di->di_printf("r%d", ((insn >> 16) & 0x0f));
377 di->di_printf("r%d", ((insn >> 8) & 0x0f));
381 di->di_printf("[r%d]", ((insn >> 16) & 0x0f));
385 di->di_printf("r%d", ((insn >> 0) & 0x0f));
389 disasm_insn_ldrstr(di, insn, loc);
393 disasm_insn_ldrhstrh(di, insn, loc);
397 disasm_print_reglist(di, insn);
401 di->di_printf("f%d", (insn >> 12) & 7);
405 di->di_printf("f%d", (insn >> 16) & 7);
409 if (insn & (1 << 3))
410 di->di_printf("#%s", insn_fpaimm(insn));
412 di->di_printf("f%d", insn & 7);
416 di->di_printf("ror #%d", ((insn >> 10) & 3) << 3);
420 di->di_printf("#%d", (insn >> 7) & 31);
424 di->di_printf("#%d", 1 + ((insn >> 16) & 31));
428 branch = ((insn << 2) & 0x03ffffff);
435 branch = ((insn << 2) & 0x03ffffff) |
436 (insn >> 23 & 0x00000002);
443 di->di_printf("%s", insn_blktrans(insn));
447 di->di_printf("%s", insn_stkblktrans(insn));
451 di->di_printf("0x%08x", (insn & 0x00ffffff));
456 (insn & 0x000fff00) >> 4 | (insn & 0x0000000f));
460 if (insn & 0x00400000)
468 if (insn & (1 << 16))
470 if (insn & (1 << 17))
472 if (insn & (1 << 18))
474 if (insn & (1 << 19))
479 if (insn & 0x00400000)
484 if (insn & (1 << 22))
489 if (insn & 0x00100000)
494 di->di_printf("%s", insn_fpaprec(insn));
501 di->di_printf("%s", insn_fparnd(insn));
505 if (insn & (1 << 21))
510 di->di_printf("p%d", (insn >> 8) & 0x0f);
514 disasm_insn_ldcstc(di, insn, loc);
518 di->di_printf("0x%08x", insn);
522 di->di_printf("%d, ", (insn >> 20) & 0x0f);
524 di->di_printf("c%d, c%d, c%d", (insn >> 12) & 0x0f,
525 (insn >> 16) & 0x0f, insn & 0x0f);
527 di->di_printf(", %d", (insn >> 5) & 0x07);
531 di->di_printf("%d, ", (insn >> 21) & 0x07);
533 (insn >> 12) & 0x0f, (insn >> 16) & 0x0f,
534 insn & 0x0f, (insn >> 5) & 0x07);
536 /* if (((insn >> 5) & 0x07) != 0)
537 di->di_printf(", %d", (insn >> 5) & 0x07);*/
561 disasm_register_shift(const disasm_interface_t *di, u_int insn)
563 di->di_printf("r%d", (insn & 0x0f));
564 if ((insn & 0x00000ff0) == 0)
566 else if ((insn & 0x00000ff0) == 0x00000060)
569 if (insn & 0x10)
570 di->di_printf(", %s r%d", op2_shift(insn),
571 (insn >> 8) & 0x0f);
573 di->di_printf(", %s #%d", op2_shift(insn),
574 (insn >> 7) & 0x1f);
580 disasm_print_reglist(const disasm_interface_t *di, u_int insn)
592 if (loop == 16 || !(insn & (1 << loop))) {
604 if (insn & (1 << loop))
610 if (insn & (1 << 22))
615 disasm_insn_ldrstr(const disasm_interface_t *di, u_int insn, u_int loc)
619 offset = insn & 0xfff;
620 if ((insn & 0x032f0000) == 0x010f0000) {
622 if (insn & 0x00800000)
628 di->di_printf("[r%d", (insn >> 16) & 0x0f);
629 if ((insn & 0x03000fff) != 0x01000000) {
630 di->di_printf("%s, ", (insn & (1 << 24)) ? "" : "]");
631 if (!(insn & 0x00800000))
633 if (insn & (1 << 25))
634 disasm_register_shift(di, insn);
638 if (insn & (1 << 24))
644 disasm_insn_ldrhstrh(const disasm_interface_t *di, u_int insn, u_int loc)
648 offset = ((insn & 0xf00) >> 4) | (insn & 0xf);
649 if ((insn & 0x004f0000) == 0x004f0000) {
651 if (insn & 0x00800000)
657 di->di_printf("[r%d", (insn >> 16) & 0x0f);
658 if ((insn & 0x01400f0f) != 0x01400000) {
659 di->di_printf("%s, ", (insn & (1 << 24)) ? "" : "]");
660 if (!(insn & 0x00800000))
662 if (insn & (1 << 22))
665 di->di_printf("r%d", (insn & 0x0f));
667 if (insn & (1 << 24))
673 disasm_insn_ldcstc(const disasm_interface_t *di, u_int insn, u_int loc)
675 if (((insn >> 8) & 0xf) == 1)
676 di->di_printf("f%d, ", (insn >> 12) & 0x07);
678 di->di_printf("c%d, ", (insn >> 12) & 0x0f);
680 di->di_printf("[r%d", (insn >> 16) & 0x0f);
682 di->di_printf("%s, ", (insn & (1 << 24)) ? "" : "]");
684 if (!(insn & (1 << 23)))
687 di->di_printf("#0x%03x", (insn & 0xff) << 2);
689 if (insn & (1 << 24))
692 if (insn & (1 << 21))