> 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 [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to