From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S264586AbTDPUX6 (ORCPT ); Wed, 16 Apr 2003 16:23:58 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S264587AbTDPUX6 (ORCPT ); Wed, 16 Apr 2003 16:23:58 -0400 Received: from neon-gw-l3.transmeta.com ([63.209.4.196]:59409 "EHLO neon-gw.transmeta.com") by vger.kernel.org with ESMTP id S264586AbTDPUXz (ORCPT ); Wed, 16 Apr 2003 16:23:55 -0400 To: linux-kernel@vger.kernel.org From: "H. Peter Anvin" Subject: Re: System Call parameters Date: 16 Apr 2003 13:35:37 -0700 Organization: Transmeta Corporation, Santa Clara CA Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7BIT Disclaimer: Not speaking for Transmeta in any way, shape, or form. Copyright: Copyright 2003 H. Peter Anvin - All Rights Reserved Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Followup to: By author: "Richard B. Johnson" In newsgroup: linux.dev.kernel > > How does the kernel get more than five parameters? > > Currently... > eax = function code > ebx = first parameter > ecx = second parameter > edx = third parameter > esi = fourth parameter > edi = fifth parameter > > Some functions like mmap() take 6 parameters! > Does anybody know how these parameters get passed? > I have an "ultra-light" 'C' runtime library I have > been working on and, so-far, I've got everything up > to mmap() (in syscall.h) (89 functions) working. > I thought, maybe ebp was being used, but it doesn't > seem to be the case. > %ebp is used. However, on i386, SYS_mmap is a four-parameter system call where the last parameter is a pointer to a parameter block. SYS_mmap2 is the full six-parameter sane version. You may want to check out klibc. -hpa -- at work, in private! "Unix gives you enough rope to shoot yourself in the foot." Architectures needed: ia64 m68k mips64 ppc ppc64 s390 s390x sh v850 x86-64