Lines Matching full:pc
17 unsigned long pc = regs->csr_era; in simu_pc() local
21 if (pc & 3) { in simu_pc()
22 pr_warn("%s: invalid pc 0x%lx\n", __func__, pc); in simu_pc()
28 regs->regs[rd] = pc + sign_extend64(imm << 2, 21); in simu_pc()
31 regs->regs[rd] = pc + sign_extend64(imm << 12, 31); in simu_pc()
34 regs->regs[rd] = pc + sign_extend64(imm << 18, 37); in simu_pc()
37 regs->regs[rd] = pc + sign_extend64(imm << 12, 31); in simu_pc()
51 unsigned long pc = regs->csr_era; in simu_branch() local
53 if (pc & 3) { in simu_branch()
54 pr_warn("%s: invalid pc 0x%lx\n", __func__, pc); in simu_branch()
62 regs->csr_era = pc + sign_extend64((imm_h << 16 | imm_l) << 2, 27); in simu_branch()
65 regs->csr_era = pc + sign_extend64((imm_h << 16 | imm_l) << 2, 27); in simu_branch()
66 regs->regs[1] = pc + LOONGARCH_INSN_SIZE; in simu_branch()
76 regs->csr_era = pc + sign_extend64((imm_h << 16 | imm_l) << 2, 22); in simu_branch()
78 regs->csr_era = pc + LOONGARCH_INSN_SIZE; in simu_branch()
82 regs->csr_era = pc + sign_extend64((imm_h << 16 | imm_l) << 2, 22); in simu_branch()
84 regs->csr_era = pc + LOONGARCH_INSN_SIZE; in simu_branch()
94 regs->csr_era = pc + sign_extend64(imm << 2, 17); in simu_branch()
96 regs->csr_era = pc + LOONGARCH_INSN_SIZE; in simu_branch()
100 regs->csr_era = pc + sign_extend64(imm << 2, 17); in simu_branch()
102 regs->csr_era = pc + LOONGARCH_INSN_SIZE; in simu_branch()
106 regs->csr_era = pc + sign_extend64(imm << 2, 17); in simu_branch()
108 regs->csr_era = pc + LOONGARCH_INSN_SIZE; in simu_branch()
112 regs->csr_era = pc + sign_extend64(imm << 2, 17); in simu_branch()
114 regs->csr_era = pc + LOONGARCH_INSN_SIZE; in simu_branch()
118 regs->csr_era = pc + sign_extend64(imm << 2, 17); in simu_branch()
120 regs->csr_era = pc + LOONGARCH_INSN_SIZE; in simu_branch()
124 regs->csr_era = pc + sign_extend64(imm << 2, 17); in simu_branch()
126 regs->csr_era = pc + LOONGARCH_INSN_SIZE; in simu_branch()
130 regs->regs[rd] = pc + LOONGARCH_INSN_SIZE; in simu_branch()
284 u32 larch_insn_gen_b(unsigned long pc, unsigned long dest) in larch_insn_gen_b() argument
286 long offset = dest - pc; in larch_insn_gen_b()
299 u32 larch_insn_gen_bl(unsigned long pc, unsigned long dest) in larch_insn_gen_bl() argument
301 long offset = dest - pc; in larch_insn_gen_bl()