Lines Matching refs:regs
77 static inline int mipsr6_emul(struct pt_regs *regs, u32 ir) in mipsr6_emul() argument
82 regs->regs[MIPSInst_RT(ir)] = in mipsr6_emul()
83 (s32)regs->regs[MIPSInst_RS(ir)] + in mipsr6_emul()
91 regs->regs[MIPSInst_RT(ir)] = in mipsr6_emul()
92 (s64)regs->regs[MIPSInst_RS(ir)] + in mipsr6_emul()
105 regs->regs[MIPSInst_RD(ir)] = in mipsr6_emul()
106 regs->regs[MIPSInst_RS(ir)] | in mipsr6_emul()
107 regs->regs[MIPSInst_RT(ir)]; in mipsr6_emul()
114 regs->regs[MIPSInst_RD(ir)] = in mipsr6_emul()
115 (s32)(((u32)regs->regs[MIPSInst_RT(ir)]) << in mipsr6_emul()
123 regs->regs[MIPSInst_RD(ir)] = in mipsr6_emul()
124 (s32)(((u32)regs->regs[MIPSInst_RT(ir)]) >> in mipsr6_emul()
132 regs->regs[MIPSInst_RD(ir)] = in mipsr6_emul()
133 (s32)((u32)regs->regs[MIPSInst_RS(ir)] + in mipsr6_emul()
134 (u32)regs->regs[MIPSInst_RT(ir)]); in mipsr6_emul()
141 regs->regs[MIPSInst_RD(ir)] = in mipsr6_emul()
142 (s32)((u32)regs->regs[MIPSInst_RS(ir)] - in mipsr6_emul()
143 (u32)regs->regs[MIPSInst_RT(ir)]); in mipsr6_emul()
150 regs->regs[MIPSInst_RD(ir)] = in mipsr6_emul()
151 (s64)(((u64)regs->regs[MIPSInst_RT(ir)]) << in mipsr6_emul()
159 regs->regs[MIPSInst_RD(ir)] = in mipsr6_emul()
160 (s64)(((u64)regs->regs[MIPSInst_RT(ir)]) >> in mipsr6_emul()
168 regs->regs[MIPSInst_RD(ir)] = in mipsr6_emul()
169 (u64)regs->regs[MIPSInst_RS(ir)] + in mipsr6_emul()
170 (u64)regs->regs[MIPSInst_RT(ir)]; in mipsr6_emul()
177 regs->regs[MIPSInst_RD(ir)] = in mipsr6_emul()
178 (s64)((u64)regs->regs[MIPSInst_RS(ir)] - in mipsr6_emul()
179 (u64)regs->regs[MIPSInst_RT(ir)]); in mipsr6_emul()
198 static int movf_func(struct pt_regs *regs, u32 ir) in movf_func() argument
207 regs->regs[MIPSInst_RD(ir)] = regs->regs[MIPSInst_RS(ir)]; in movf_func()
221 static int movt_func(struct pt_regs *regs, u32 ir) in movt_func() argument
230 regs->regs[MIPSInst_RD(ir)] = regs->regs[MIPSInst_RS(ir)]; in movt_func()
246 static int jr_func(struct pt_regs *regs, u32 ir) in jr_func() argument
252 if (delay_slot(regs)) in jr_func()
256 nepc = regs->cp0_epc; in jr_func()
258 regs->cp0_epc -= 4; in jr_func()
259 epc = regs->cp0_epc; in jr_func()
260 err = __compute_return_epc(regs); in jr_func()
267 cepc = regs->cp0_epc; in jr_func()
283 err = mipsr6_emul(regs, nir); in jr_func()
285 regs->cp0_epc = nepc; in jr_func()
286 err = mips_dsemul(regs, nir, cepc); in jr_func()
303 static int movz_func(struct pt_regs *regs, u32 ir) in movz_func() argument
305 if (((regs->regs[MIPSInst_RT(ir)]) == 0) && MIPSInst_RD(ir)) in movz_func()
306 regs->regs[MIPSInst_RD(ir)] = regs->regs[MIPSInst_RS(ir)]; in movz_func()
319 static int movn_func(struct pt_regs *regs, u32 ir) in movn_func() argument
321 if (((regs->regs[MIPSInst_RT(ir)]) != 0) && MIPSInst_RD(ir)) in movn_func()
322 regs->regs[MIPSInst_RD(ir)] = regs->regs[MIPSInst_RS(ir)]; in movn_func()
335 static int mfhi_func(struct pt_regs *regs, u32 ir) in mfhi_func() argument
338 regs->regs[MIPSInst_RD(ir)] = regs->hi; in mfhi_func()
352 static int mthi_func(struct pt_regs *regs, u32 ir) in mthi_func() argument
354 regs->hi = regs->regs[MIPSInst_RS(ir)]; in mthi_func()
368 static int mflo_func(struct pt_regs *regs, u32 ir) in mflo_func() argument
371 regs->regs[MIPSInst_RD(ir)] = regs->lo; in mflo_func()
385 static int mtlo_func(struct pt_regs *regs, u32 ir) in mtlo_func() argument
387 regs->lo = regs->regs[MIPSInst_RS(ir)]; in mtlo_func()
401 static int mult_func(struct pt_regs *regs, u32 ir) in mult_func() argument
406 rt = regs->regs[MIPSInst_RT(ir)]; in mult_func()
407 rs = regs->regs[MIPSInst_RS(ir)]; in mult_func()
411 regs->lo = (s64)rs; in mult_func()
414 regs->hi = res; in mult_func()
428 static int multu_func(struct pt_regs *regs, u32 ir) in multu_func() argument
433 rt = regs->regs[MIPSInst_RT(ir)]; in multu_func()
434 rs = regs->regs[MIPSInst_RS(ir)]; in multu_func()
437 regs->lo = (s64)rt; in multu_func()
438 regs->hi = (s64)(res >> 32); in multu_func()
452 static int div_func(struct pt_regs *regs, u32 ir) in div_func() argument
456 rt = regs->regs[MIPSInst_RT(ir)]; in div_func()
457 rs = regs->regs[MIPSInst_RS(ir)]; in div_func()
459 regs->lo = (s64)(rs / rt); in div_func()
460 regs->hi = (s64)(rs % rt); in div_func()
474 static int divu_func(struct pt_regs *regs, u32 ir) in divu_func() argument
478 rt = regs->regs[MIPSInst_RT(ir)]; in divu_func()
479 rs = regs->regs[MIPSInst_RS(ir)]; in divu_func()
481 regs->lo = (s64)(rs / rt); in divu_func()
482 regs->hi = (s64)(rs % rt); in divu_func()
496 static int dmult_func(struct pt_regs *regs, u32 ir) in dmult_func() argument
504 rt = regs->regs[MIPSInst_RT(ir)]; in dmult_func()
505 rs = regs->regs[MIPSInst_RS(ir)]; in dmult_func()
508 regs->lo = res; in dmult_func()
514 regs->hi = res; in dmult_func()
528 static int dmultu_func(struct pt_regs *regs, u32 ir) in dmultu_func() argument
536 rt = regs->regs[MIPSInst_RT(ir)]; in dmultu_func()
537 rs = regs->regs[MIPSInst_RS(ir)]; in dmultu_func()
540 regs->lo = res; in dmultu_func()
546 regs->hi = res; in dmultu_func()
560 static int ddiv_func(struct pt_regs *regs, u32 ir) in ddiv_func() argument
567 rt = regs->regs[MIPSInst_RT(ir)]; in ddiv_func()
568 rs = regs->regs[MIPSInst_RS(ir)]; in ddiv_func()
570 regs->lo = rs / rt; in ddiv_func()
571 regs->hi = rs % rt; in ddiv_func()
585 static int ddivu_func(struct pt_regs *regs, u32 ir) in ddivu_func() argument
592 rt = regs->regs[MIPSInst_RT(ir)]; in ddivu_func()
593 rs = regs->regs[MIPSInst_RS(ir)]; in ddivu_func()
595 regs->lo = rs / rt; in ddivu_func()
596 regs->hi = rs % rt; in ddivu_func()
632 static int madd_func(struct pt_regs *regs, u32 ir) in madd_func() argument
637 rt = regs->regs[MIPSInst_RT(ir)]; in madd_func()
638 rs = regs->regs[MIPSInst_RS(ir)]; in madd_func()
640 rt = regs->hi; in madd_func()
641 rs = regs->lo; in madd_func()
645 regs->lo = (s64)rt; in madd_func()
647 regs->hi = (s64)rs; in madd_func()
661 static int maddu_func(struct pt_regs *regs, u32 ir) in maddu_func() argument
666 rt = regs->regs[MIPSInst_RT(ir)]; in maddu_func()
667 rs = regs->regs[MIPSInst_RS(ir)]; in maddu_func()
669 rt = regs->hi; in maddu_func()
670 rs = regs->lo; in maddu_func()
674 regs->lo = (s64)rt; in maddu_func()
676 regs->hi = (s64)rs; in maddu_func()
690 static int msub_func(struct pt_regs *regs, u32 ir) in msub_func() argument
695 rt = regs->regs[MIPSInst_RT(ir)]; in msub_func()
696 rs = regs->regs[MIPSInst_RS(ir)]; in msub_func()
698 rt = regs->hi; in msub_func()
699 rs = regs->lo; in msub_func()
703 regs->lo = (s64)rt; in msub_func()
705 regs->hi = (s64)rs; in msub_func()
719 static int msubu_func(struct pt_regs *regs, u32 ir) in msubu_func() argument
724 rt = regs->regs[MIPSInst_RT(ir)]; in msubu_func()
725 rs = regs->regs[MIPSInst_RS(ir)]; in msubu_func()
727 rt = regs->hi; in msubu_func()
728 rs = regs->lo; in msubu_func()
732 regs->lo = (s64)rt; in msubu_func()
734 regs->hi = (s64)rs; in msubu_func()
748 static int mul_func(struct pt_regs *regs, u32 ir) in mul_func() argument
755 rt = regs->regs[MIPSInst_RT(ir)]; in mul_func()
756 rs = regs->regs[MIPSInst_RS(ir)]; in mul_func()
760 regs->regs[MIPSInst_RD(ir)] = (s64)rs; in mul_func()
774 static int clz_func(struct pt_regs *regs, u32 ir) in clz_func() argument
782 rs = regs->regs[MIPSInst_RS(ir)]; in clz_func()
784 regs->regs[MIPSInst_RD(ir)] = res; in clz_func()
799 static int clo_func(struct pt_regs *regs, u32 ir) in clo_func() argument
807 rs = regs->regs[MIPSInst_RS(ir)]; in clo_func()
809 regs->regs[MIPSInst_RD(ir)] = res; in clo_func()
823 static int dclz_func(struct pt_regs *regs, u32 ir) in dclz_func() argument
834 rs = regs->regs[MIPSInst_RS(ir)]; in dclz_func()
836 regs->regs[MIPSInst_RD(ir)] = res; in dclz_func()
850 static int dclo_func(struct pt_regs *regs, u32 ir) in dclo_func() argument
861 rs = regs->regs[MIPSInst_RS(ir)]; in dclo_func()
863 regs->regs[MIPSInst_RD(ir)] = res; in dclo_func()
884 static inline int mipsr2_find_op_func(struct pt_regs *regs, u32 inst, in mipsr2_find_op_func() argument
892 err = (p->func)(regs, inst); in mipsr2_find_op_func()
905 int mipsr2_decoder(struct pt_regs *regs, u32 inst, unsigned long *fcr31) in mipsr2_decoder() argument
916 r31 = regs->regs[31]; in mipsr2_decoder()
917 epc = regs->cp0_epc; in mipsr2_decoder()
918 err = compute_return_epc(regs); in mipsr2_decoder()
928 err = mipsr2_find_op_func(regs, inst, spec_op_table); in mipsr2_decoder()
931 regs->cp0_cause |= CAUSEF_BD; in mipsr2_decoder()
936 err = mipsr2_find_op_func(regs, inst, spec2_op_table); in mipsr2_decoder()
943 if ((long)regs->regs[rs] >= MIPSInst_SIMM(inst)) in mipsr2_decoder()
944 do_trap_or_bp(regs, 0, "TGEI"); in mipsr2_decoder()
950 if (regs->regs[rs] >= MIPSInst_UIMM(inst)) in mipsr2_decoder()
951 do_trap_or_bp(regs, 0, "TGEIU"); in mipsr2_decoder()
957 if ((long)regs->regs[rs] < MIPSInst_SIMM(inst)) in mipsr2_decoder()
958 do_trap_or_bp(regs, 0, "TLTI"); in mipsr2_decoder()
964 if (regs->regs[rs] < MIPSInst_UIMM(inst)) in mipsr2_decoder()
965 do_trap_or_bp(regs, 0, "TLTIU"); in mipsr2_decoder()
971 if (regs->regs[rs] == MIPSInst_SIMM(inst)) in mipsr2_decoder()
972 do_trap_or_bp(regs, 0, "TEQI"); in mipsr2_decoder()
978 if (regs->regs[rs] != MIPSInst_SIMM(inst)) in mipsr2_decoder()
979 do_trap_or_bp(regs, 0, "TNEI"); in mipsr2_decoder()
988 if (delay_slot(regs)) { in mipsr2_decoder()
992 regs->regs[31] = r31; in mipsr2_decoder()
993 regs->cp0_epc = epc; in mipsr2_decoder()
994 err = __compute_return_epc(regs); in mipsr2_decoder()
999 cpc = regs->cp0_epc; in mipsr2_decoder()
1030 regs->cp0_cause |= CAUSEF_BD; in mipsr2_decoder()
1034 err = mipsr6_emul(regs, nir); in mipsr2_decoder()
1036 err = mips_dsemul(regs, nir, cpc); in mipsr2_decoder()
1045 if (delay_slot(regs)) { in mipsr2_decoder()
1049 regs->regs[31] = r31; in mipsr2_decoder()
1050 regs->cp0_epc = epc; in mipsr2_decoder()
1051 err = __compute_return_epc(regs); in mipsr2_decoder()
1054 cpc = regs->cp0_epc; in mipsr2_decoder()
1079 regs->cp0_cause |= CAUSEF_BD; in mipsr2_decoder()
1083 err = mipsr6_emul(regs, nir); in mipsr2_decoder()
1085 err = mips_dsemul(regs, nir, cpc); in mipsr2_decoder()
1093 regs->regs[31] = r31; in mipsr2_decoder()
1094 regs->cp0_epc = epc; in mipsr2_decoder()
1104 if (delay_slot(regs)) { in mipsr2_decoder()
1108 regs->regs[31] = r31; in mipsr2_decoder()
1109 regs->cp0_epc = epc; in mipsr2_decoder()
1110 err = __compute_return_epc(regs); in mipsr2_decoder()
1115 cpc = regs->cp0_epc; in mipsr2_decoder()
1146 regs->cp0_cause |= CAUSEF_BD; in mipsr2_decoder()
1150 err = mipsr6_emul(regs, nir); in mipsr2_decoder()
1152 err = mips_dsemul(regs, nir, cpc); in mipsr2_decoder()
1164 regs->regs[31] = r31; in mipsr2_decoder()
1165 regs->cp0_epc = epc; in mipsr2_decoder()
1172 err = fpu_emulator_cop1Handler(regs, ¤t->thread.fpu, 0, in mipsr2_decoder()
1200 rt = regs->regs[MIPSInst_RT(inst)]; in mipsr2_decoder()
1201 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst); in mipsr2_decoder()
1266 regs->regs[MIPSInst_RT(inst)] = rt; in mipsr2_decoder()
1273 rt = regs->regs[MIPSInst_RT(inst)]; in mipsr2_decoder()
1274 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst); in mipsr2_decoder()
1340 regs->regs[MIPSInst_RT(inst)] = rt; in mipsr2_decoder()
1347 rt = regs->regs[MIPSInst_RT(inst)]; in mipsr2_decoder()
1348 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst); in mipsr2_decoder()
1417 rt = regs->regs[MIPSInst_RT(inst)]; in mipsr2_decoder()
1418 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst); in mipsr2_decoder()
1492 rt = regs->regs[MIPSInst_RT(inst)]; in mipsr2_decoder()
1493 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst); in mipsr2_decoder()
1600 regs->regs[MIPSInst_RT(inst)] = rt; in mipsr2_decoder()
1611 rt = regs->regs[MIPSInst_RT(inst)]; in mipsr2_decoder()
1612 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst); in mipsr2_decoder()
1719 regs->regs[MIPSInst_RT(inst)] = rt; in mipsr2_decoder()
1730 rt = regs->regs[MIPSInst_RT(inst)]; in mipsr2_decoder()
1731 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst); in mipsr2_decoder()
1848 rt = regs->regs[MIPSInst_RT(inst)]; in mipsr2_decoder()
1849 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst); in mipsr2_decoder()
1961 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst); in mipsr2_decoder()
2011 regs->regs[MIPSInst_RT(inst)] = res; in mipsr2_decoder()
2017 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst); in mipsr2_decoder()
2049 res = regs->regs[MIPSInst_RT(inst)]; in mipsr2_decoder()
2068 regs->regs[MIPSInst_RT(inst)] = res; in mipsr2_decoder()
2080 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst); in mipsr2_decoder()
2129 regs->regs[MIPSInst_RT(inst)] = res; in mipsr2_decoder()
2141 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst); in mipsr2_decoder()
2173 res = regs->regs[MIPSInst_RT(inst)]; in mipsr2_decoder()
2192 regs->regs[MIPSInst_RT(inst)] = res; in mipsr2_decoder()
2209 regs->cp0_cause &= ~CAUSEF_BD; in mipsr2_decoder()
2210 err = get_user(inst, (u32 __user *)regs->cp0_epc); in mipsr2_decoder()
2219 regs->regs[31] = r31; in mipsr2_decoder()
2220 regs->cp0_epc = epc; in mipsr2_decoder()