Lines Matching refs:addr

19 int patch_instruction(unsigned int *addr, unsigned int instr)  in patch_instruction()  argument
23 __put_user_size(instr, addr, 4, err); in patch_instruction()
26 asm ("dcbst 0, %0; sync; icbi 0,%0; sync; isync" : : "r" (addr)); in patch_instruction()
30 int patch_branch(unsigned int *addr, unsigned long target, int flags) in patch_branch() argument
32 return patch_instruction(addr, create_branch(addr, target, flags)); in patch_branch()
35 unsigned int create_branch(const unsigned int *addr, in create_branch() argument
43 offset = offset - (unsigned long)addr; in create_branch()
55 unsigned int create_cond_branch(const unsigned int *addr, in create_cond_branch() argument
63 offset = offset - (unsigned long)addr; in create_cond_branch()
140 int instr_is_branch_to_addr(const unsigned int *instr, unsigned long addr) in instr_is_branch_to_addr() argument
143 return branch_target(instr) == addr; in instr_is_branch_to_addr()
163 void __patch_exception(int exc, unsigned long addr) in __patch_exception() argument
174 patch_branch(ibase + (exc / 4) + 1, addr, 0); in __patch_exception()
191 unsigned long addr; in test_branch_iform() local
193 addr = (unsigned long)&instr; in test_branch_iform()
221 check(instr_is_branch_to_addr(&instr, addr + 0x1FFFFFC)); in test_branch_iform()
224 check(instr_is_branch_to_addr(&instr, addr - 4)); in test_branch_iform()
227 check(instr_is_branch_to_addr(&instr, addr - 0x2000000)); in test_branch_iform()
230 instr = create_branch(&instr, addr, BRANCH_SET_LINK); in test_branch_iform()
231 check(instr_is_branch_to_addr(&instr, addr)); in test_branch_iform()
234 instr = create_branch(&instr, addr - 0x100, BRANCH_SET_LINK); in test_branch_iform()
235 check(instr_is_branch_to_addr(&instr, addr - 0x100)); in test_branch_iform()
238 instr = create_branch(&instr, addr + 0x100, 0); in test_branch_iform()
239 check(instr_is_branch_to_addr(&instr, addr + 0x100)); in test_branch_iform()
242 instr = create_branch(&instr, addr - 0x2000000, BRANCH_SET_LINK); in test_branch_iform()
243 check(instr_is_branch_to_addr(&instr, addr - 0x2000000)); in test_branch_iform()
246 instr = create_branch(&instr, addr - 0x2000004, BRANCH_SET_LINK); in test_branch_iform()
250 instr = create_branch(&instr, addr + 0x2000000, BRANCH_SET_LINK); in test_branch_iform()
254 instr = create_branch(&instr, addr + 3, BRANCH_SET_LINK); in test_branch_iform()
258 instr = create_branch(&instr, addr, 0xFFFFFFFC); in test_branch_iform()
259 check(instr_is_branch_to_addr(&instr, addr)); in test_branch_iform()
277 unsigned long addr; in test_branch_bform() local
281 addr = (unsigned long)iptr; in test_branch_bform()
300 check(instr_is_branch_to_addr(&instr, addr + 0x7FFC)); in test_branch_bform()
303 check(instr_is_branch_to_addr(&instr, addr - 4)); in test_branch_bform()
306 check(instr_is_branch_to_addr(&instr, addr - 0x8000)); in test_branch_bform()
312 instr = create_cond_branch(iptr, addr, flags); in test_branch_bform()
313 check(instr_is_branch_to_addr(&instr, addr)); in test_branch_bform()
316 instr = create_cond_branch(iptr, addr - 0x100, flags); in test_branch_bform()
317 check(instr_is_branch_to_addr(&instr, addr - 0x100)); in test_branch_bform()
320 instr = create_cond_branch(iptr, addr + 0x100, flags); in test_branch_bform()
321 check(instr_is_branch_to_addr(&instr, addr + 0x100)); in test_branch_bform()
324 instr = create_cond_branch(iptr, addr - 0x8000, flags); in test_branch_bform()
325 check(instr_is_branch_to_addr(&instr, addr - 0x8000)); in test_branch_bform()
328 instr = create_cond_branch(iptr, addr - 0x8004, flags); in test_branch_bform()
332 instr = create_cond_branch(iptr, addr + 0x8000, flags); in test_branch_bform()
336 instr = create_cond_branch(iptr, addr + 3, flags); in test_branch_bform()
340 instr = create_cond_branch(iptr, addr, 0xFFFFFFFC); in test_branch_bform()
341 check(instr_is_branch_to_addr(&instr, addr)); in test_branch_bform()
347 unsigned long addr; in test_translate_branch() local
358 addr = (unsigned long)p; in test_translate_branch()
359 patch_branch(p, addr, 0); in test_translate_branch()
360 check(instr_is_branch_to_addr(p, addr)); in test_translate_branch()
363 check(instr_is_branch_to_addr(q, addr)); in test_translate_branch()
367 addr = (unsigned long)p; in test_translate_branch()
368 patch_branch(p, addr, 0); in test_translate_branch()
371 check(instr_is_branch_to_addr(p, addr)); in test_translate_branch()
372 check(instr_is_branch_to_addr(q, addr)); in test_translate_branch()
377 addr = (unsigned long)p; in test_translate_branch()
378 patch_branch(p, addr, 0); in test_translate_branch()
381 check(instr_is_branch_to_addr(p, addr)); in test_translate_branch()
382 check(instr_is_branch_to_addr(q, addr)); in test_translate_branch()
387 addr = 0x1000000 + (unsigned long)buf; in test_translate_branch()
388 patch_branch(p, addr, BRANCH_SET_LINK); in test_translate_branch()
391 check(instr_is_branch_to_addr(p, addr)); in test_translate_branch()
392 check(instr_is_branch_to_addr(q, addr)); in test_translate_branch()
396 addr = 0x2000000 + (unsigned long)buf; in test_translate_branch()
397 patch_branch(p, addr, 0); in test_translate_branch()
400 check(instr_is_branch_to_addr(p, addr)); in test_translate_branch()
401 check(instr_is_branch_to_addr(q, addr)); in test_translate_branch()
408 addr = (unsigned long)p; in test_translate_branch()
409 patch_instruction(p, create_cond_branch(p, addr, 0)); in test_translate_branch()
410 check(instr_is_branch_to_addr(p, addr)); in test_translate_branch()
413 check(instr_is_branch_to_addr(q, addr)); in test_translate_branch()
417 addr = (unsigned long)p; in test_translate_branch()
418 patch_instruction(p, create_cond_branch(p, addr, 0xFFFFFFFC)); in test_translate_branch()
421 check(instr_is_branch_to_addr(p, addr)); in test_translate_branch()
422 check(instr_is_branch_to_addr(q, addr)); in test_translate_branch()
427 addr = (unsigned long)p; in test_translate_branch()
428 patch_instruction(p, create_cond_branch(p, addr, 0xFFFFFFFC)); in test_translate_branch()
431 check(instr_is_branch_to_addr(p, addr)); in test_translate_branch()
432 check(instr_is_branch_to_addr(q, addr)); in test_translate_branch()
437 addr = 0x3000 + (unsigned long)buf; in test_translate_branch()
438 patch_instruction(p, create_cond_branch(p, addr, BRANCH_SET_LINK)); in test_translate_branch()
441 check(instr_is_branch_to_addr(p, addr)); in test_translate_branch()
442 check(instr_is_branch_to_addr(q, addr)); in test_translate_branch()
446 addr = 0x4000 + (unsigned long)buf; in test_translate_branch()
447 patch_instruction(p, create_cond_branch(p, addr, 0)); in test_translate_branch()
450 check(instr_is_branch_to_addr(p, addr)); in test_translate_branch()
451 check(instr_is_branch_to_addr(q, addr)); in test_translate_branch()