Lines Matching refs:regs

15 static inline unsigned long *pt_regs_nr(struct pt_regs *regs, int nr)  in pt_regs_nr()  argument
17 int reg_offset = pt_regs_offset(regs, nr); in pt_regs_nr()
23 return (unsigned long *)((unsigned long)regs + reg_offset); in pt_regs_nr()
33 struct pt_regs *regs) in ex_handler_default() argument
36 regs->ax = 0; in ex_handler_default()
38 regs->dx = 0; in ex_handler_default()
40 regs->ip = ex_fixup_addr(e); in ex_handler_default()
57 struct pt_regs *regs, in ex_handler_zeropad() argument
66 len = next_ip - regs->ip; in ex_handler_zeropad()
70 if (insn_decode(&insn, (void *) regs->ip, len, INSN_MODE_KERN)) in ex_handler_zeropad()
80 addr = (unsigned long) insn_get_addr_ref(&insn, regs); in ex_handler_zeropad()
89 reg = insn_get_modrm_reg_ptr(&insn, regs); in ex_handler_zeropad()
94 return ex_handler_default(e, regs); in ex_handler_zeropad()
98 struct pt_regs *regs, int trapnr) in ex_handler_fault() argument
100 regs->ax = trapnr; in ex_handler_fault()
101 return ex_handler_default(fixup, regs); in ex_handler_fault()
105 struct pt_regs *regs, int trapnr) in ex_handler_sgx() argument
107 regs->ax = trapnr | SGX_ENCLS_FAULT_FLAG; in ex_handler_sgx()
108 return ex_handler_default(fixup, regs); in ex_handler_sgx()
122 struct pt_regs *regs) in ex_handler_fprestore() argument
124 regs->ip = ex_fixup_addr(fixup); in ex_handler_fprestore()
127 (void *)instruction_pointer(regs)); in ex_handler_fprestore()
158 struct pt_regs *regs, int trapnr, in ex_handler_uaccess() argument
163 return ex_handler_default(fixup, regs); in ex_handler_uaccess()
167 struct pt_regs *regs, int trapnr) in ex_handler_copy() argument
170 return ex_handler_fault(fixup, regs, trapnr); in ex_handler_copy()
174 struct pt_regs *regs, bool wrmsr, bool safe, int reg) in ex_handler_msr() argument
178 (unsigned int)regs->cx, (unsigned int)regs->dx, in ex_handler_msr()
179 (unsigned int)regs->ax, regs->ip, (void *)regs->ip); in ex_handler_msr()
180 show_stack_regs(regs); in ex_handler_msr()
185 (unsigned int)regs->cx, regs->ip, (void *)regs->ip); in ex_handler_msr()
186 show_stack_regs(regs); in ex_handler_msr()
191 regs->ax = 0; in ex_handler_msr()
192 regs->dx = 0; in ex_handler_msr()
196 *pt_regs_nr(regs, reg) = -EIO; in ex_handler_msr()
198 return ex_handler_default(fixup, regs); in ex_handler_msr()
202 struct pt_regs *regs) in ex_handler_clear_fs() argument
207 return ex_handler_default(fixup, regs); in ex_handler_clear_fs()
211 struct pt_regs *regs, int reg, int imm) in ex_handler_imm_reg() argument
213 *pt_regs_nr(regs, reg) = (long)imm; in ex_handler_imm_reg()
214 return ex_handler_default(fixup, regs); in ex_handler_imm_reg()
218 struct pt_regs *regs, int trapnr, in ex_handler_ucopy_len() argument
222 regs->cx = imm * regs->cx + *pt_regs_nr(regs, reg); in ex_handler_ucopy_len()
223 return ex_handler_uaccess(fixup, regs, trapnr, fault_address); in ex_handler_ucopy_len()
233 int fixup_exception(struct pt_regs *regs, int trapnr, unsigned long error_code, in fixup_exception() argument
240 if (unlikely(SEGMENT_IS_PNP_CODE(regs->cs))) { in fixup_exception()
253 e = search_exception_tables(regs->ip); in fixup_exception()
264 return ex_handler_default(e, regs); in fixup_exception()
267 return ex_handler_fault(e, regs, trapnr); in fixup_exception()
269 return ex_handler_uaccess(e, regs, trapnr, fault_addr); in fixup_exception()
271 return ex_handler_copy(e, regs, trapnr); in fixup_exception()
273 return ex_handler_clear_fs(e, regs); in fixup_exception()
275 return ex_handler_fprestore(e, regs); in fixup_exception()
277 return ex_handler_bpf(e, regs); in fixup_exception()
279 return ex_handler_msr(e, regs, true, false, reg); in fixup_exception()
281 return ex_handler_msr(e, regs, false, false, reg); in fixup_exception()
283 return ex_handler_msr(e, regs, true, true, reg); in fixup_exception()
285 return ex_handler_msr(e, regs, false, true, reg); in fixup_exception()
287 ex_handler_msr_mce(regs, true); in fixup_exception()
290 ex_handler_msr_mce(regs, false); in fixup_exception()
293 regs->sp += sizeof(long); in fixup_exception()
296 return ex_handler_imm_reg(e, regs, reg, imm); in fixup_exception()
298 return ex_handler_sgx(e, regs, trapnr); in fixup_exception()
300 return ex_handler_ucopy_len(e, regs, trapnr, fault_addr, reg, imm); in fixup_exception()
302 return ex_handler_zeropad(e, regs, fault_addr); in fixup_exception()
310 void __init early_fixup_exception(struct pt_regs *regs, int trapnr) in early_fixup_exception() argument
325 if (!xen_pv_domain() && regs->cs != __KERNEL_CS) in early_fixup_exception()
342 if (fixup_exception(regs, trapnr, regs->orig_ax, 0)) in early_fixup_exception()
346 if (report_bug(regs->ip, regs) == BUG_TRAP_TYPE_WARN) { in early_fixup_exception()
348 regs->ip += LEN_UD2; in early_fixup_exception()
361 (unsigned)trapnr, (unsigned long)regs->cs, regs->ip, in early_fixup_exception()
362 regs->orig_ax, read_cr2()); in early_fixup_exception()
364 show_regs(regs); in early_fixup_exception()