Home | History | Annotate | Download | only in codeflinger

Lines Matching refs: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,
307 u_int insn = di->di_readword(loc);
313 /* di->di_printf("loc=%08x insn=%08x : ", loc, insn);*/
316 if ((insn & i_ptr->mask) == i_ptr->pattern) {
324 di->di_printf("und%s\t%08x\n", insn_condition(insn), insn);
332 di->di_printf("%s%s", i_ptr->name, insn_condition(insn));
347 if (insn & 0x02000000) {
348 int rotate= ((insn >> 7) & 0x1e);
351 (insn & 0xff) << (32 - rotate) |
352 (insn & 0xff) >> rotate);
354 disasm_register_shift(di, insn);
359 di->di_printf("r%d", ((insn >> 12) & 0x0f));
363 if (((insn >> 12) & 0x0f) == 15)
368 di->di_printf("r%d", ((insn >> 16) & 0x0f));
372 di->di_printf("r%d", ((insn >> 8) & 0x0f));
376 di->di_printf("[r%d]", ((insn >> 16) & 0x0f));
380 di->di_printf("r%d", ((insn >> 0) & 0x0f));
384 disasm_insn_ldrstr(di, insn, loc);
388 disasm_insn_ldrhstrh(di, insn, loc);
392 disasm_print_reglist(di, insn);
396 di->di_printf("f%d", (insn >> 12) & 7);
400 di->di_printf("f%d", (insn >> 16) & 7);
404 if (insn & (1 << 3))
405 di->di_printf("#%s", insn_fpaimm(insn));
407 di->di_printf("f%d", insn & 7);
411 di->di_printf("ror #%d", ((insn >> 10) & 3) << 3);
415 di->di_printf("#%d", (insn >> 7) & 31);
419 di->di_printf("#%d", 1 + ((insn >> 16) & 31));
423 branch = ((insn << 2) & 0x03ffffff);
430 branch = ((insn << 2) & 0x03ffffff) |
431 (insn >> 23 & 0x00000002);
438 di->di_printf("%s", insn_blktrans(insn));
442 di->di_printf("%s", insn_stkblktrans(insn));
446 insn & 0x00ffffff));
451 (insn & 0x000fff00) >> 4 | (insn & 0x0000000f));
455 if (insn & 0x00400000)
463 if (insn & (1 << 16))
465 if (insn & (1 << 17))
467 if (insn & (1 << 18))
469 if (insn & (1 << 19))
474 if (insn & 0x00400000)
479 if (insn & (1 << 22))
484 if (insn & 0x00100000)
489 di->di_printf("%s", insn_fpaprec(insn));
496 di->di_printf("%s", insn_fparnd(insn));
500 if (insn & (1 << 21))
505 di->di_printf("p%d", (insn >> 8) & 0x0f);
509 disasm_insn_ldcstc(di, insn, loc);
513 di->di_printf("0x%08x", insn);
517 di->di_printf("%d, ", (insn >> 20) & 0x0f);
519 di->di_printf("c%d, c%d, c%d", (insn >> 12) & 0x0f,
520 (insn >> 16) & 0x0f, insn & 0x0f);
522 di->di_printf(", %d", (insn >> 5) & 0x07);
526 di->di_printf("%d, ", (insn >> 21) & 0x07);
528 (insn >> 12) & 0x0f, (insn >> 16) & 0x0f,
529 insn & 0x0f, (insn >> 5) & 0x07);
531 /* if (((insn >> 5) & 0x07) != 0)
532 di->di_printf(", %d", (insn >> 5) & 0x07);*/
556 disasm_register_shift(const disasm_interface_t *di, u_int insn)
558 di->di_printf("r%d", (insn & 0x0f));
559 if ((insn & 0x00000ff0) == 0)
561 else if ((insn & 0x00000ff0) == 0x00000060)
564 if (insn & 0x10)
565 di->di_printf(", %s r%d", op2_shift(insn),
566 (insn >> 8) & 0x0f);
568 di->di_printf(", %s #%d", op2_shift(insn),
569 (insn >> 7) & 0x1f);
575 disasm_print_reglist(const disasm_interface_t *di, u_int insn)
587 if (loop == 16 || !(insn & (1 << loop))) {
599 if (insn & (1 << loop))
605 if (insn & (1 << 22))
610 disasm_insn_ldrstr(const disasm_interface_t *di, u_int insn, u_int loc)
614 offset = insn & 0xfff;
615 if ((insn & 0x032f0000) == 0x010f0000) {
617 if (insn & 0x00800000)
623 di->di_printf("[r%d", (insn >> 16) & 0x0f);
624 if ((insn & 0x03000fff) != 0x01000000) {
625 di->di_printf("%s, ", (insn & (1 << 24)) ? "" : "]");
626 if (!(insn & 0x00800000))
628 if (insn & (1 << 25))
629 disasm_register_shift(di, insn);
633 if (insn & (1 << 24))
639 disasm_insn_ldrhstrh(const disasm_interface_t *di, u_int insn, u_int loc)
643 offset = ((insn & 0xf00) >> 4) | (insn & 0xf);
644 if ((insn & 0x004f0000) == 0x004f0000) {
646 if (insn & 0x00800000)
652 di->di_printf("[r%d", (insn >> 16) & 0x0f);
653 if ((insn & 0x01400f0f) != 0x01400000) {
654 di->di_printf("%s, ", (insn & (1 << 24)) ? "" : "]");
655 if (!(insn & 0x00800000))
657 if (insn & (1 << 22))
660 di->di_printf("r%d", (insn & 0x0f));
662 if (insn & (1 << 24))
668 disasm_insn_ldcstc(const disasm_interface_t *di, u_int insn, u_int __unused loc)
670 if (((insn >> 8) & 0xf) == 1)
671 di->di_printf("f%d, ", (insn >> 12) & 0x07);
673 di->di_printf("c%d, ", (insn >> 12) & 0x0f);
675 di->di_printf("[r%d", (insn >> 16) & 0x0f);
677 di->di_printf("%s, ", (insn & (1 << 24)) ? "" : "]");
679 if (!(insn & (1 << 23)))
682 di->di_printf("#0x%03x", (insn & 0xff) << 2);
684 if (insn & (1 << 24))
687 if (insn & (1 << 21))