Revision 1000822b target-sh4/op.c
b/target-sh4/op.c | ||
---|---|---|
37 | 37 |
clr_t(); |
38 | 38 |
} |
39 | 39 |
|
40 |
void OPPROTO op_bf_s(void) |
|
41 |
{ |
|
42 |
env->delayed_pc = PARAM1; |
|
43 |
if (!(env->sr & SR_T)) { |
|
44 |
env->flags |= DELAY_SLOT_TRUE; |
|
45 |
} |
|
46 |
RETURN(); |
|
47 |
} |
|
48 |
|
|
49 |
void OPPROTO op_bt_s(void) |
|
50 |
{ |
|
51 |
env->delayed_pc = PARAM1; |
|
52 |
if (env->sr & SR_T) { |
|
53 |
env->flags |= DELAY_SLOT_TRUE; |
|
54 |
} |
|
55 |
RETURN(); |
|
56 |
} |
|
57 |
|
|
58 |
void OPPROTO op_store_flags(void) |
|
59 |
{ |
|
60 |
env->flags &= DELAY_SLOT_TRUE; |
|
61 |
env->flags |= PARAM1; |
|
62 |
RETURN(); |
|
63 |
} |
|
64 |
|
|
65 |
void OPPROTO op_bra(void) |
|
66 |
{ |
|
67 |
env->delayed_pc = PARAM1; |
|
68 |
RETURN(); |
|
69 |
} |
|
70 |
|
|
71 |
void OPPROTO op_braf_T0(void) |
|
72 |
{ |
|
73 |
env->delayed_pc = PARAM1 + T0; |
|
74 |
RETURN(); |
|
75 |
} |
|
76 |
|
|
77 |
void OPPROTO op_bsr(void) |
|
78 |
{ |
|
79 |
env->pr = PARAM1; |
|
80 |
env->delayed_pc = PARAM2; |
|
81 |
RETURN(); |
|
82 |
} |
|
83 |
|
|
84 |
void OPPROTO op_bsrf_T0(void) |
|
85 |
{ |
|
86 |
env->pr = PARAM1; |
|
87 |
env->delayed_pc = PARAM1 + T0; |
|
88 |
RETURN(); |
|
89 |
} |
|
90 |
|
|
91 |
void OPPROTO op_jsr_T0(void) |
|
92 |
{ |
|
93 |
env->pr = PARAM1; |
|
94 |
env->delayed_pc = T0; |
|
95 |
RETURN(); |
|
96 |
} |
|
97 |
|
|
98 |
void OPPROTO op_rts(void) |
|
99 |
{ |
|
100 |
env->delayed_pc = env->pr; |
|
101 |
RETURN(); |
|
102 |
} |
|
103 |
|
|
104 | 40 |
void OPPROTO op_ldtlb(void) |
105 | 41 |
{ |
106 | 42 |
helper_ldtlb(); |
... | ... | |
119 | 55 |
RETURN(); |
120 | 56 |
} |
121 | 57 |
|
122 |
void OPPROTO op_rte(void) |
|
123 |
{ |
|
124 |
env->sr = env->ssr; |
|
125 |
env->delayed_pc = env->spc; |
|
126 |
RETURN(); |
|
127 |
} |
|
128 |
|
|
129 | 58 |
void OPPROTO op_addc_T0_T1(void) |
130 | 59 |
{ |
131 | 60 |
helper_addc_T0_T1(); |
... | ... | |
257 | 186 |
RETURN(); |
258 | 187 |
} |
259 | 188 |
|
260 |
void OPPROTO op_jmp_T0(void) |
|
261 |
{ |
|
262 |
env->delayed_pc = T0; |
|
263 |
RETURN(); |
|
264 |
} |
|
265 |
|
|
266 | 189 |
void OPPROTO op_ldcl_rMplus_rN_bank(void) |
267 | 190 |
{ |
268 | 191 |
env->gregs[PARAM2] = env->gregs[PARAM1]; |
... | ... | |
568 | 491 |
RETURN(); |
569 | 492 |
} |
570 | 493 |
|
571 |
void OPPROTO op_jT(void) |
|
572 |
{ |
|
573 |
if (env->sr & SR_T) |
|
574 |
GOTO_LABEL_PARAM(1); |
|
575 |
RETURN(); |
|
576 |
} |
|
577 |
|
|
578 |
void OPPROTO op_jdelayed(void) |
|
579 |
{ |
|
580 |
if (env->flags & DELAY_SLOT_TRUE) { |
|
581 |
env->flags &= ~DELAY_SLOT_TRUE; |
|
582 |
GOTO_LABEL_PARAM(1); |
|
583 |
} |
|
584 |
RETURN(); |
|
585 |
} |
|
586 |
|
|
587 |
void OPPROTO op_movl_delayed_pc_PC(void) |
|
588 |
{ |
|
589 |
env->pc = env->delayed_pc; |
|
590 |
RETURN(); |
|
591 |
} |
|
592 |
|
|
593 | 494 |
void OPPROTO op_raise_illegal_instruction(void) |
594 | 495 |
{ |
595 | 496 |
env->exception_index = 0x180; |
Also available in: Unified diff