Lines Matching refs:regs
49 static void do_audit_syscall_entry(struct pt_regs *regs, u32 arch) in do_audit_syscall_entry() argument
53 audit_syscall_entry(regs->orig_ax, regs->di, in do_audit_syscall_entry()
54 regs->si, regs->dx, regs->r10); in do_audit_syscall_entry()
58 audit_syscall_entry(regs->orig_ax, regs->bx, in do_audit_syscall_entry()
59 regs->cx, regs->dx, regs->si); in do_audit_syscall_entry()
67 static long syscall_trace_enter(struct pt_regs *regs) in syscall_trace_enter() argument
77 BUG_ON(regs != task_pt_regs(current)); in syscall_trace_enter()
85 tracehook_report_syscall_entry(regs)) in syscall_trace_enter()
99 sd.nr = regs->orig_ax; in syscall_trace_enter()
100 sd.instruction_pointer = regs->ip; in syscall_trace_enter()
103 sd.args[0] = regs->di; in syscall_trace_enter()
104 sd.args[1] = regs->si; in syscall_trace_enter()
105 sd.args[2] = regs->dx; in syscall_trace_enter()
106 sd.args[3] = regs->r10; in syscall_trace_enter()
107 sd.args[4] = regs->r8; in syscall_trace_enter()
108 sd.args[5] = regs->r9; in syscall_trace_enter()
112 sd.args[0] = regs->bx; in syscall_trace_enter()
113 sd.args[1] = regs->cx; in syscall_trace_enter()
114 sd.args[2] = regs->dx; in syscall_trace_enter()
115 sd.args[3] = regs->si; in syscall_trace_enter()
116 sd.args[4] = regs->di; in syscall_trace_enter()
117 sd.args[5] = regs->bp; in syscall_trace_enter()
127 trace_sys_enter(regs, regs->orig_ax); in syscall_trace_enter()
129 do_audit_syscall_entry(regs, arch); in syscall_trace_enter()
131 return ret ?: regs->orig_ax; in syscall_trace_enter()
138 static void exit_to_usermode_loop(struct pt_regs *regs, u32 cached_flags) in exit_to_usermode_loop() argument
155 uprobe_notify_resume(regs); in exit_to_usermode_loop()
162 do_signal(regs); in exit_to_usermode_loop()
166 tracehook_notify_resume(regs); in exit_to_usermode_loop()
167 rseq_handle_notify_resume(NULL, regs); in exit_to_usermode_loop()
184 __visible inline void prepare_exit_to_usermode(struct pt_regs *regs) in prepare_exit_to_usermode() argument
197 exit_to_usermode_loop(regs, cached_flags); in prepare_exit_to_usermode()
221 static void syscall_slow_exit_work(struct pt_regs *regs, u32 cached_flags) in syscall_slow_exit_work() argument
225 audit_syscall_exit(regs); in syscall_slow_exit_work()
228 trace_sys_exit(regs, regs->ax); in syscall_slow_exit_work()
240 tracehook_report_syscall_exit(regs, step); in syscall_slow_exit_work()
247 __visible inline void syscall_return_slowpath(struct pt_regs *regs) in syscall_return_slowpath() argument
255 WARN(irqs_disabled(), "syscall %ld left IRQs disabled", regs->orig_ax)) in syscall_return_slowpath()
258 rseq_syscall(regs); in syscall_return_slowpath()
265 syscall_slow_exit_work(regs, cached_flags); in syscall_return_slowpath()
268 prepare_exit_to_usermode(regs); in syscall_return_slowpath()
272 __visible void do_syscall_64(unsigned long nr, struct pt_regs *regs) in do_syscall_64() argument
280 nr = syscall_trace_enter(regs); in do_syscall_64()
290 regs->ax = sys_call_table[nr](regs); in do_syscall_64()
293 syscall_return_slowpath(regs); in do_syscall_64()
304 static __always_inline void do_syscall_32_irqs_on(struct pt_regs *regs) in do_syscall_32_irqs_on() argument
307 unsigned int nr = (unsigned int)regs->orig_ax; in do_syscall_32_irqs_on()
320 nr = syscall_trace_enter(regs); in do_syscall_32_irqs_on()
326 regs->ax = ia32_sys_call_table[nr](regs); in do_syscall_32_irqs_on()
334 regs->ax = ia32_sys_call_table[nr]( in do_syscall_32_irqs_on()
335 (unsigned int)regs->bx, (unsigned int)regs->cx, in do_syscall_32_irqs_on()
336 (unsigned int)regs->dx, (unsigned int)regs->si, in do_syscall_32_irqs_on()
337 (unsigned int)regs->di, (unsigned int)regs->bp); in do_syscall_32_irqs_on()
341 syscall_return_slowpath(regs); in do_syscall_32_irqs_on()
345 __visible void do_int80_syscall_32(struct pt_regs *regs) in do_int80_syscall_32() argument
349 do_syscall_32_irqs_on(regs); in do_int80_syscall_32()
353 __visible long do_fast_syscall_32(struct pt_regs *regs) in do_fast_syscall_32() argument
368 regs->ip = landing_pad; in do_fast_syscall_32()
381 __get_user(*(u32 *)®s->bp, in do_fast_syscall_32()
382 (u32 __user __force *)(unsigned long)(u32)regs->sp) in do_fast_syscall_32()
384 get_user(*(u32 *)®s->bp, in do_fast_syscall_32()
385 (u32 __user __force *)(unsigned long)(u32)regs->sp) in do_fast_syscall_32()
391 regs->ax = -EFAULT; in do_fast_syscall_32()
392 prepare_exit_to_usermode(regs); in do_fast_syscall_32()
397 do_syscall_32_irqs_on(regs); in do_fast_syscall_32()
409 return regs->cs == __USER32_CS && regs->ss == __USER_DS && in do_fast_syscall_32()
410 regs->ip == landing_pad && in do_fast_syscall_32()
411 (regs->flags & (X86_EFLAGS_RF | X86_EFLAGS_TF)) == 0; in do_fast_syscall_32()
424 regs->cs == __USER_CS && regs->ss == __USER_DS && in do_fast_syscall_32()
425 regs->ip == landing_pad && in do_fast_syscall_32()
426 (regs->flags & (X86_EFLAGS_RF | X86_EFLAGS_TF | X86_EFLAGS_VM)) == 0; in do_fast_syscall_32()