Lines Matching refs:regs

62 static void warn_bad_vsyscall(const char *level, struct pt_regs *regs,  in warn_bad_vsyscall()  argument
70 message, regs->ip, regs->cs, in warn_bad_vsyscall()
71 regs->sp, regs->ax, regs->si, regs->di); in warn_bad_vsyscall()
116 bool emulate_vsyscall(struct pt_regs *regs, unsigned long address) in emulate_vsyscall() argument
129 WARN_ON_ONCE(address != regs->ip); in emulate_vsyscall()
132 warn_bad_vsyscall(KERN_INFO, regs, in emulate_vsyscall()
142 warn_bad_vsyscall(KERN_WARNING, regs, in emulate_vsyscall()
147 if (get_user(caller, (unsigned long __user *)regs->sp) != 0) { in emulate_vsyscall()
148 warn_bad_vsyscall(KERN_WARNING, regs, in emulate_vsyscall()
165 if (!write_ok_or_segv(regs->di, sizeof(struct timeval)) || in emulate_vsyscall()
166 !write_ok_or_segv(regs->si, sizeof(struct timezone))) { in emulate_vsyscall()
175 if (!write_ok_or_segv(regs->di, sizeof(time_t))) { in emulate_vsyscall()
184 if (!write_ok_or_segv(regs->di, sizeof(unsigned)) || in emulate_vsyscall()
185 !write_ok_or_segv(regs->si, sizeof(unsigned))) { in emulate_vsyscall()
201 regs->orig_ax = syscall_nr; in emulate_vsyscall()
202 regs->ax = -ENOSYS; in emulate_vsyscall()
204 if ((!tmp && regs->orig_ax != syscall_nr) || regs->ip != address) { in emulate_vsyscall()
205 warn_bad_vsyscall(KERN_DEBUG, regs, in emulate_vsyscall()
209 regs->orig_ax = -1; in emulate_vsyscall()
224 (struct timeval __user *)regs->di, in emulate_vsyscall()
225 (struct timezone __user *)regs->si); in emulate_vsyscall()
229 ret = sys_time((time_t __user *)regs->di); in emulate_vsyscall()
233 ret = sys_getcpu((unsigned __user *)regs->di, in emulate_vsyscall()
234 (unsigned __user *)regs->si, in emulate_vsyscall()
244 warn_bad_vsyscall(KERN_INFO, regs, in emulate_vsyscall()
258 regs->ax = ret; in emulate_vsyscall()
262 regs->ip = caller; in emulate_vsyscall()
263 regs->sp += 8; in emulate_vsyscall()