Lines Matching +full:pc +full:- +full:ack
28 if (env->psw_pm == 0) { in rx_cpu_unpack_psw()
29 env->psw_ipl = FIELD_EX32(psw, PSW, IPL); in rx_cpu_unpack_psw()
32 env->psw_pm = FIELD_EX32(psw, PSW, PM); in rx_cpu_unpack_psw()
34 env->psw_u = FIELD_EX32(psw, PSW, U); in rx_cpu_unpack_psw()
35 env->psw_i = FIELD_EX32(psw, PSW, I); in rx_cpu_unpack_psw()
37 env->psw_o = FIELD_EX32(psw, PSW, O) << 31; in rx_cpu_unpack_psw()
38 env->psw_s = FIELD_EX32(psw, PSW, S) << 31; in rx_cpu_unpack_psw()
39 env->psw_z = 1 - FIELD_EX32(psw, PSW, Z); in rx_cpu_unpack_psw()
40 env->psw_c = FIELD_EX32(psw, PSW, C); in rx_cpu_unpack_psw()
47 int do_irq = cs->interrupt_request & INT_FLAGS; in rx_cpu_do_interrupt()
50 env->in_sleep = 0; in rx_cpu_do_interrupt()
52 if (env->psw_u) { in rx_cpu_do_interrupt()
53 env->usp = env->regs[0]; in rx_cpu_do_interrupt()
55 env->isp = env->regs[0]; in rx_cpu_do_interrupt()
58 env->psw_pm = env->psw_i = env->psw_u = 0; in rx_cpu_do_interrupt()
62 env->bpc = env->pc; in rx_cpu_do_interrupt()
63 env->bpsw = save_psw; in rx_cpu_do_interrupt()
64 env->pc = env->fintv; in rx_cpu_do_interrupt()
65 env->psw_ipl = 15; in rx_cpu_do_interrupt()
66 cs->interrupt_request &= ~CPU_INTERRUPT_FIR; in rx_cpu_do_interrupt()
67 qemu_set_irq(env->ack, env->ack_irq); in rx_cpu_do_interrupt()
70 env->isp -= 4; in rx_cpu_do_interrupt()
71 cpu_stl_data(env, env->isp, save_psw); in rx_cpu_do_interrupt()
72 env->isp -= 4; in rx_cpu_do_interrupt()
73 cpu_stl_data(env, env->isp, env->pc); in rx_cpu_do_interrupt()
74 env->pc = cpu_ldl_data(env, env->intb + env->ack_irq * 4); in rx_cpu_do_interrupt()
75 env->psw_ipl = env->ack_ipl; in rx_cpu_do_interrupt()
76 cs->interrupt_request &= ~CPU_INTERRUPT_HARD; in rx_cpu_do_interrupt()
77 qemu_set_irq(env->ack, env->ack_irq); in rx_cpu_do_interrupt()
79 "interrupt 0x%02x raised\n", env->ack_irq); in rx_cpu_do_interrupt()
82 uint32_t vec = cs->exception_index; in rx_cpu_do_interrupt()
85 env->isp -= 4; in rx_cpu_do_interrupt()
86 cpu_stl_data(env, env->isp, save_psw); in rx_cpu_do_interrupt()
87 env->isp -= 4; in rx_cpu_do_interrupt()
88 cpu_stl_data(env, env->isp, env->pc); in rx_cpu_do_interrupt()
91 env->pc = cpu_ldl_data(env, 0xffffff80 + vec * 4); in rx_cpu_do_interrupt()
93 env->pc = cpu_ldl_data(env, env->intb + (vec & 0xff) * 4); in rx_cpu_do_interrupt()
109 expname = "non-maskable interrupt"; in rx_cpu_do_interrupt()
117 env->regs[0] = env->isp; in rx_cpu_do_interrupt()
126 env->psw_i && (env->psw_ipl < env->req_ipl)) { in rx_cpu_exec_interrupt()
127 env->ack_irq = env->req_irq; in rx_cpu_exec_interrupt()
128 env->ack_ipl = env->req_ipl; in rx_cpu_exec_interrupt()
133 env->psw_i && (env->psw_ipl < 15)) { in rx_cpu_exec_interrupt()