Date: Wed, 24 Apr 2002 20:06:09 -0400 (EDT) From: Kenneth Culver <culverk@alpha.yumyumyum.org> To: Peter Wemm <peter@wemm.org> Cc: Andrew Gallatin <gallatin@cs.duke.edu>, Brandon S Allbery KF8NH <allbery@ece.cmu.edu>, <freebsd-hackers@FreeBSD.ORG>, FreeBSD-CURRENT List <freebsd-current@FreeBSD.ORG> Subject: Re: implementing linux mmap2 syscall Message-ID: <20020424195920.D39879-100000@alpha.yumyumyum.org> In-Reply-To: <20020424235122.263FB38FD@overcee.wemm.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> Here's where it happens: > sys/i386/linux/linux_sysvec.c > > static void > linux_prepsyscall(struct trapframe *tf, int *args, u_int *code, caddr_t *params) > { > args[0] = tf->tf_ebx; > args[1] = tf->tf_ecx; > args[2] = tf->tf_edx; > args[3] = tf->tf_esi; > args[4] = tf->tf_edi; > *params = NULL; /* no copyin */ > } > > You probably want to add: > args[5] = tf->tf_ebp; > so that it ends up in the syscallargs struct. Yeah, I did that... it still doesn't work, tf_ebp isn't getting set... So I'm thinking that either I have a glibc that's too old, or something else is wrong... > > For FreeBSD syscalls, we copy this from the top of stack for the number of > 32 bit words specified in the syscall table in i386/trap.c: > if (params && (i = narg * sizeof(int)) && > (error = copyin(params, (caddr_t)args, (u_int)i))) { > (narg comes from the syscall table). > OK, that gives me an idea... Ken To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020424195920.D39879-100000>