From owner-freebsd-questions@FreeBSD.ORG Thu Oct 18 19:38:10 2007 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1F12C16A475 for ; Thu, 18 Oct 2007 19:38:10 +0000 (UTC) (envelope-from yuri@rawbw.com) Received: from mail0.rawbw.com (mail0.rawbw.com [198.144.192.41]) by mx1.freebsd.org (Postfix) with ESMTP id 0279C13C481 for ; Thu, 18 Oct 2007 19:38:09 +0000 (UTC) (envelope-from yuri@rawbw.com) Received: from mail0.rawbw.com (localhost [127.0.0.1]) by mail0.rawbw.com (8.13.8/8.13.8) with ESMTP id l9IJc60J089995; Thu, 18 Oct 2007 12:38:06 -0700 (PDT) Received: (from www@localhost) by mail0.rawbw.com (8.13.8/8.13.8/Submit) id l9IJc646089994; Thu, 18 Oct 2007 12:38:06 -0700 (PDT) X-Authentication-Warning: mail0.rawbw.com: www set sender to yuri@rawbw.com using -f Received: from new-5000.Cadence.COM (new-5000.Cadence.COM [158.140.1.25]) by webmail.rawbw.com (IMP) with HTTP for ; Thu, 18 Oct 2007 12:38:06 -0700 Message-ID: <1192736286.4717b61e1dcc0@webmail.rawbw.com> Date: Thu, 18 Oct 2007 12:38:06 -0700 From: Yuri To: Derek Ragona References: <1192731161.4717a21980065@webmail.rawbw.com> <6.0.0.22.2.20071018132410.02311ad8@mail.computinginnovations.com> <1192733243.4717aa3b1843f@webmail.rawbw.com> <6.0.0.22.2.20071018141850.02482e78@mail.computinginnovations.com> In-Reply-To: <6.0.0.22.2.20071018141850.02482e78@mail.computinginnovations.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit User-Agent: Internet Messaging Program (IMP) 3.2.1 X-Originating-IP: 158.140.1.25 Cc: freebsd-questions@freebsd.org Subject: Re: Calling syscalls through int 0x80 documentation? X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Oct 2007 19:38:10 -0000 By experimenting I found the working version now. I still don't understand why first element on stack while going into 'int 0x80' should be stack pointer. asm( ".text\n" "mysyscall:\n" " movl %esp,%eax\n" " push 28(%eax)\n" " push 24(%eax)\n" " push 20(%eax)\n" " push 16(%eax)\n" " push 12(%eax)\n" " push 8(%eax)\n" " push %eax\n" " movl 4(%eax), %eax\n" " int $0x80\n" " pop %ecx\n" " pop %ecx\n" " pop %ecx\n" " pop %ecx\n" " pop %ecx\n" " pop %ecx\n" " pop %ecx\n" " ret\n" ".previous\n" );