Kenneth Culver writes:
 > OK, I THINK I found what calls the actual kernel syscall handler, and
 > sets it's args first, but I'm not sure:
 > from linux_locore.s
 > NON_GPROF_ENTRY(linux_sigcode)

 > Does anyone who actually knows assembly have any ideas?

This is the linux sigtramp, or signal trampoline.  It is used to wrap
a signal handler.  Eg, the kernel "calls" it (by returning to it) when
it delivers a signal.  It calls the apps signal handler.  When the
handler returns, it calls the linux sigreturn system call.

This has essentially nothing to do with system calls.

The system call entry point on x86 is int0x80_syscall, which is

 * Call gate entry for FreeBSD ELF and Linux/NetBSD syscall (int 0x80)

This then calls syscall2(), which calls the linux prepsyscall.

Maybe the argument isn't where you expect it to be, but is there.
Can you make a test program which calls mmap2 with its 6th arg as
something unique like 0xdeadbeef?  Then print out (in hex :) the trapframe
from the linux prepsyscall routine & see if you can find the deadbeef.


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to