• Home
  • Raw
  • Download

Lines Matching +full:0 +full:x4a000000

29 	asm ("dcbst 0, %0; sync; icbi 0,%1; sync; isync" :: "r" (patch_addr),  in __patch_instruction()
32 return 0; in __patch_instruction()
58 return 0; in text_area_cpu_up()
64 return 0; in text_area_cpu_down()
81 return 0; in setup_text_poke_area()
104 return 0; in map_patch_area()
143 return 0; in unmap_patch_area()
196 pr_debug("Skipping init section patching addr: 0x%px\n", addr); in patch_instruction()
197 return 0; in patch_instruction()
216 * 0 6 30 31 in is_offset_in_branch_range()
220 * Where AA = 0 and LK = 0 in is_offset_in_branch_range()
223 * by: imm32 = SignExtend(LI:'0b00', 32); in is_offset_in_branch_range()
226 * (0x007fffff << 2) = 0x01fffffc = 0x1fffffc in is_offset_in_branch_range()
228 * (0xff800000 << 2) = 0xfe000000 = -0x2000000 in is_offset_in_branch_range()
230 return (offset >= -0x2000000 && offset <= 0x1fffffc && !(offset & 0x3)); in is_offset_in_branch_range()
235 return offset >= -0x8000 && offset <= 0x7fff && !(offset & 0x3); in is_offset_in_cond_branch_range()
249 switch ((ppc_inst_val(instr) >> 1) & 0x3ff) { in is_conditional_branch()
266 *instr = ppc_inst(0); in create_branch()
276 *instr = ppc_inst(0x48000000 | (flags & 0x3) | (offset & 0x03FFFFFC)); in create_branch()
278 return 0; in create_branch()
295 *instr = ppc_inst(0x40000000 | (flags & 0x3FF0003) | (offset & 0xFFFC)); in create_cond_branch()
297 return 0; in create_cond_branch()
302 return ppc_inst_primary_opcode(instr) & 0x3F; in branch_opcode()
318 return 0; in instr_is_relative_branch()
332 imm = ppc_inst_val(*instr) & 0x3FFFFFC; in branch_iform_target()
335 if (imm & 0x2000000) in branch_iform_target()
336 imm -= 0x4000000; in branch_iform_target()
338 if ((ppc_inst_val(*instr) & BRANCH_ABSOLUTE) == 0) in branch_iform_target()
348 imm = ppc_inst_val(*instr) & 0xFFFC; in branch_bform_target()
351 if (imm & 0x8000) in branch_bform_target()
352 imm -= 0x10000; in branch_bform_target()
354 if ((ppc_inst_val(*instr) & BRANCH_ABSOLUTE) == 0) in branch_bform_target()
367 return 0; in branch_target()
376 return 0; in instr_is_branch_to_addr()
407 patch_branch((struct ppc_inst *)(ibase + (exc / 4) + 1), addr, 0); in __patch_exception()
430 check(instr_is_branch_iform(ppc_inst(0x48000000))); in test_branch_iform()
432 check(instr_is_branch_iform(ppc_inst(0x4bffffff))); in test_branch_iform()
434 check(!instr_is_branch_iform(ppc_inst(0xcbffffff))); in test_branch_iform()
436 check(!instr_is_branch_iform(ppc_inst(0x7bffffff))); in test_branch_iform()
439 check(instr_is_branch_iform(ppc_inst(0x48000001))); in test_branch_iform()
441 check(instr_is_branch_iform(ppc_inst(0x4bfffffd))); in test_branch_iform()
443 check(instr_is_branch_iform(ppc_inst(0x4bff00fd))); in test_branch_iform()
445 check(!instr_is_branch_iform(ppc_inst(0x7bfffffd))); in test_branch_iform()
447 /* Absolute branch to 0x100 */ in test_branch_iform()
448 instr = ppc_inst(0x48000103); in test_branch_iform()
449 check(instr_is_branch_to_addr(&instr, 0x100)); in test_branch_iform()
450 /* Absolute branch to 0x420fc */ in test_branch_iform()
451 instr = ppc_inst(0x480420ff); in test_branch_iform()
452 check(instr_is_branch_to_addr(&instr, 0x420fc)); in test_branch_iform()
454 instr = ppc_inst(0x49fffffc); in test_branch_iform()
455 check(instr_is_branch_to_addr(&instr, addr + 0x1FFFFFC)); in test_branch_iform()
457 instr = ppc_inst(0x4bfffffc); in test_branch_iform()
460 instr = ppc_inst(0x4a000000); in test_branch_iform()
461 check(instr_is_branch_to_addr(&instr, addr - 0x2000000)); in test_branch_iform()
467 /* Branch to self - 0x100, with link */ in test_branch_iform()
468 err = create_branch(&instr, &instr, addr - 0x100, BRANCH_SET_LINK); in test_branch_iform()
469 check(instr_is_branch_to_addr(&instr, addr - 0x100)); in test_branch_iform()
471 /* Branch to self + 0x100, no link */ in test_branch_iform()
472 err = create_branch(&instr, &instr, addr + 0x100, 0); in test_branch_iform()
473 check(instr_is_branch_to_addr(&instr, addr + 0x100)); in test_branch_iform()
476 err = create_branch(&instr, &instr, addr - 0x2000000, BRANCH_SET_LINK); in test_branch_iform()
477 check(instr_is_branch_to_addr(&instr, addr - 0x2000000)); in test_branch_iform()
480 err = create_branch(&instr, &instr, addr - 0x2000004, BRANCH_SET_LINK); in test_branch_iform()
484 err = create_branch(&instr, &instr, addr + 0x2000000, BRANCH_SET_LINK); in test_branch_iform()
492 err = create_branch(&instr, &instr, addr, 0xFFFFFFFC); in test_branch_iform()
494 check(ppc_inst_equal(instr, ppc_inst(0x48000000))); in test_branch_iform()
522 check(instr_is_branch_bform(ppc_inst(0x40000000))); in test_branch_bform()
524 check(instr_is_branch_bform(ppc_inst(0x43ffffff))); in test_branch_bform()
526 check(!instr_is_branch_bform(ppc_inst(0xc3ffffff))); in test_branch_bform()
528 check(!instr_is_branch_bform(ppc_inst(0x7bffffff))); in test_branch_bform()
530 /* Absolute conditional branch to 0x100 */ in test_branch_bform()
531 instr = ppc_inst(0x43ff0103); in test_branch_bform()
532 check(instr_is_branch_to_addr(&instr, 0x100)); in test_branch_bform()
533 /* Absolute conditional branch to 0x20fc */ in test_branch_bform()
534 instr = ppc_inst(0x43ff20ff); in test_branch_bform()
535 check(instr_is_branch_to_addr(&instr, 0x20fc)); in test_branch_bform()
537 instr = ppc_inst(0x43ff7ffc); in test_branch_bform()
538 check(instr_is_branch_to_addr(&instr, addr + 0x7FFC)); in test_branch_bform()
540 instr = ppc_inst(0x43fffffc); in test_branch_bform()
543 instr = ppc_inst(0x43ff8000); in test_branch_bform()
544 check(instr_is_branch_to_addr(&instr, addr - 0x8000)); in test_branch_bform()
547 flags = 0x3ff000 | BRANCH_SET_LINK; in test_branch_bform()
553 /* Branch to self - 0x100 */ in test_branch_bform()
554 err = create_cond_branch(&instr, iptr, addr - 0x100, flags); in test_branch_bform()
555 check(instr_is_branch_to_addr(&instr, addr - 0x100)); in test_branch_bform()
557 /* Branch to self + 0x100 */ in test_branch_bform()
558 err = create_cond_branch(&instr, iptr, addr + 0x100, flags); in test_branch_bform()
559 check(instr_is_branch_to_addr(&instr, addr + 0x100)); in test_branch_bform()
562 err = create_cond_branch(&instr, iptr, addr - 0x8000, flags); in test_branch_bform()
563 check(instr_is_branch_to_addr(&instr, addr - 0x8000)); in test_branch_bform()
566 err = create_cond_branch(&instr, iptr, addr - 0x8004, flags); in test_branch_bform()
570 err = create_cond_branch(&instr, iptr, addr + 0x8000, flags); in test_branch_bform()
578 err = create_cond_branch(&instr, iptr, addr, 0xFFFFFFFC); in test_branch_bform()
580 check(ppc_inst_equal(instr, ppc_inst(0x43FF0000))); in test_branch_bform()
590 buf = vmalloc(PAGE_ALIGN(0x2000000 + 1)); in test_translate_branch()
598 patch_branch(p, addr, 0); in test_translate_branch()
608 patch_branch(p, addr, 0); in test_translate_branch()
609 q = buf + 0x2000000; in test_translate_branch()
614 check(ppc_inst_equal(ppc_inst_read(q), ppc_inst(0x4a000000))); in test_translate_branch()
617 p = buf + 0x2000000; in test_translate_branch()
619 patch_branch(p, addr, 0); in test_translate_branch()
625 check(ppc_inst_equal(ppc_inst_read(q), ppc_inst(0x49fffffc))); in test_translate_branch()
629 addr = 0x1000000 + (unsigned long)buf; in test_translate_branch()
631 q = buf + 0x1400000; in test_translate_branch()
638 p = buf + 0x1000000; in test_translate_branch()
639 addr = 0x2000000 + (unsigned long)buf; in test_translate_branch()
640 patch_branch(p, addr, 0); in test_translate_branch()
653 create_cond_branch(&instr, p, addr, 0); in test_translate_branch()
664 create_cond_branch(&instr, p, addr, 0xFFFFFFFC); in test_translate_branch()
666 q = buf + 0x8000; in test_translate_branch()
671 check(ppc_inst_equal(ppc_inst_read(q), ppc_inst(0x43ff8000))); in test_translate_branch()
674 p = buf + 0x8000; in test_translate_branch()
676 create_cond_branch(&instr, p, addr, 0xFFFFFFFC); in test_translate_branch()
683 check(ppc_inst_equal(ppc_inst_read(q), ppc_inst(0x43ff7ffc))); in test_translate_branch()
687 addr = 0x3000 + (unsigned long)buf; in test_translate_branch()
690 q = buf + 0x5000; in test_translate_branch()
697 p = buf + 0x2000; in test_translate_branch()
698 addr = 0x4000 + (unsigned long)buf; in test_translate_branch()
699 create_cond_branch(&instr, p, addr, 0); in test_translate_branch()
719 ppc_inst_prefix(OP_PREFIX << 26, 0x00000000), in test_prefixed_patching()
741 return 0; in test_code_patching()