Lines Matching refs:state
136 static void fixup_load(struct disasm_state *state, struct pt_regs *regs, in fixup_load() argument
142 if ((state->aa == 1) || (state->aa == 2)) { in fixup_load()
143 set_reg(state->wb_reg, state->src1 + state->src2, regs, cregs); in fixup_load()
145 if (state->aa == 2) in fixup_load()
146 state->src2 = 0; in fixup_load()
149 if (state->zz == 0) { in fixup_load()
150 get32_unaligned_check(val, state->src1 + state->src2); in fixup_load()
152 get16_unaligned_check(val, state->src1 + state->src2); in fixup_load()
154 if (state->x) in fixup_load()
158 if (state->pref == 0) in fixup_load()
159 set_reg(state->dest, val, regs, cregs); in fixup_load()
163 fault: state->fault = 1; in fixup_load()
166 static void fixup_store(struct disasm_state *state, struct pt_regs *regs, in fixup_store() argument
170 if ((state->aa == 1) || (state->aa == 2)) { in fixup_store()
171 set_reg(state->wb_reg, state->src2 + state->src3, regs, cregs); in fixup_store()
173 if (state->aa == 3) in fixup_store()
174 state->src3 = 0; in fixup_store()
175 } else if (state->aa == 3) { in fixup_store()
176 if (state->zz == 2) { in fixup_store()
177 set_reg(state->wb_reg, state->src2 + (state->src3 << 1), in fixup_store()
179 } else if (!state->zz) { in fixup_store()
180 set_reg(state->wb_reg, state->src2 + (state->src3 << 2), in fixup_store()
188 if (!state->zz) in fixup_store()
189 put32_unaligned_check(state->src1, state->src2 + state->src3); in fixup_store()
191 put16_unaligned_check(state->src1, state->src2 + state->src3); in fixup_store()
195 fault: state->fault = 1; in fixup_store()
205 struct disasm_state state; in misaligned_fixup() local
227 disasm_instr(regs->ret, &state, 1, regs, cregs); in misaligned_fixup()
229 if (state.fault) in misaligned_fixup()
233 if ((state.zz == 1) || (state.di)) in misaligned_fixup()
236 if (!state.write) in misaligned_fixup()
237 fixup_load(&state, regs, cregs); in misaligned_fixup()
239 fixup_store(&state, regs, cregs); in misaligned_fixup()
241 if (state.fault) in misaligned_fixup()
248 regs->ret += state.instr_len; in misaligned_fixup()
262 state.words[0], address); in misaligned_fixup()