Lines Matching refs:state
133 static void fixup_load(struct disasm_state *state, struct pt_regs *regs, in fixup_load() argument
139 if ((state->aa == 1) || (state->aa == 2)) { in fixup_load()
140 set_reg(state->wb_reg, state->src1 + state->src2, regs, cregs); in fixup_load()
142 if (state->aa == 2) in fixup_load()
143 state->src2 = 0; in fixup_load()
146 if (state->zz == 0) { in fixup_load()
147 get32_unaligned_check(val, state->src1 + state->src2); in fixup_load()
149 get16_unaligned_check(val, state->src1 + state->src2); in fixup_load()
151 if (state->x) in fixup_load()
155 if (state->pref == 0) in fixup_load()
156 set_reg(state->dest, val, regs, cregs); in fixup_load()
160 fault: state->fault = 1; in fixup_load()
163 static void fixup_store(struct disasm_state *state, struct pt_regs *regs, in fixup_store() argument
167 if ((state->aa == 1) || (state->aa == 2)) { in fixup_store()
168 set_reg(state->wb_reg, state->src2 + state->src3, regs, cregs); in fixup_store()
170 if (state->aa == 3) in fixup_store()
171 state->src3 = 0; in fixup_store()
172 } else if (state->aa == 3) { in fixup_store()
173 if (state->zz == 2) { in fixup_store()
174 set_reg(state->wb_reg, state->src2 + (state->src3 << 1), in fixup_store()
176 } else if (!state->zz) { in fixup_store()
177 set_reg(state->wb_reg, state->src2 + (state->src3 << 2), in fixup_store()
185 if (!state->zz) in fixup_store()
186 put32_unaligned_check(state->src1, state->src2 + state->src3); in fixup_store()
188 put16_unaligned_check(state->src1, state->src2 + state->src3); in fixup_store()
192 fault: state->fault = 1; in fixup_store()
202 struct disasm_state state; in misaligned_fixup() local
223 disasm_instr(regs->ret, &state, 1, regs, cregs); in misaligned_fixup()
225 if (state.fault) in misaligned_fixup()
229 if ((state.zz == 1) || (state.di)) in misaligned_fixup()
232 if (!state.write) in misaligned_fixup()
233 fixup_load(&state, regs, cregs); in misaligned_fixup()
235 fixup_store(&state, regs, cregs); in misaligned_fixup()
237 if (state.fault) in misaligned_fixup()
245 regs->ret += state.instr_len; in misaligned_fixup()
259 state.words[0], address); in misaligned_fixup()