[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1268931823.19726.127.camel@spokane1.rchland.ibm.com>
Date: Thu, 18 Mar 2010 12:03:43 -0500
From: Steven Munroe <munroesj@...ux.vnet.ibm.com>
To: Andreas Schwab <schwab@...hat.com>
Cc: munroesj@...ibm.com,
Benjamin Herrenschmidt <benh@...nel.crashing.org>,
"H. Peter Anvin" <hpa@...or.com>,
Ulrich Drepper <drepper@...hat.com>,
David Miller <davem@...emloft.net>, ralf@...ux-mips.org,
linux-arch@...r.kernel.org, linux-kernel@...r.kernel.org,
kernel@...savvy.com, torvalds@...ux-foundation.org
Subject: Re: 64-syscall args on 32-bit vs syscall()
On Thu, 2010-03-18 at 17:21 +0100, Andreas Schwab wrote:
> Steven Munroe <munroesj@...ux.vnet.ibm.com> writes:
>
> > extern long int syscall (long int __sysno, ...) __THROW;
> >
> > #endif /* Use misc. */
> >
> > Changing this would be an ABI change and would have to be versioned. It
> > would effect any one using syscall not just SYS_fallocate.
> >
> > the question is do programmers in practice include unistd.h when they
> > use syscall.
> >
> > If the changed prototype is not in scope then the 1st parm (__sysno)
> > defaults to int and is passed in on r3 which gets moved to r0.
>
> int is incompatible with long, so you already get undefined behaviour
> anyway.
>
Sorry in and long are compatible in 32-bit but not long long.
int and long are not compatible in 64-bit
It is hard the keep all the nodes and arguments straight.
But the concern about changing the prototype and are people actually
using the prototype are still valid.
> Andreas.
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists