Re: [Linux-ia64] A clarification about sys32_execve/ia32_execve

From: David Mosberger <davidm_at_napali.hpl.hp.com>
Date: 2003-04-08 07:26:26
Hi Chandra,

>>>>> On Fri, 4 Apr 2003 09:50:16 -0800 (PST), Chandra Kapate <cs_kapate@yahoo.com> said:

  Chandra> Hi,
  Chandra> I was looking at how execve syscalls work wrt to 32/64
  Chandra> syscalls. I have a basic question. I appreciate if
  Chandra> some once can clarify. I apologize if I am overlooking
  Chandra> some thing very obvious.

  Chandra> The ia32_execve (in ia32_entry.S) sets up out0, out1,
  Chandra> out2 and out3 before invoking sys32_execve. The out3
  Chandra> is setup for regs. But, in sys32_execve, the regs
  Chandra> is set locally using 9th parameters. I can see how
  Chandra> the regs is set using 9th parameter. I don't 
  Chandra> understand  why is set again in sys32_execve
  Chandra> when it is already set in out3 in ia32_execve and 
  Chandra> could have used as 4th parameter? Does args mis-match 
  Chandra> between ia32_execve and sys32_execve matter? 
  Chandra> OTH, sys_execve does use the regs set in ia64_execve.
  Chandra> Sorry, if i am overlooking something.

Looks like you found an inconsistency.  The code should work as it
stands, but it certainly looks confusing.  It looks to me like one end
of the interface was updated at one point but not the other.

The reason sys32_execve() works is because the 9th (scalar) argument
is the first argument that gets passed on the stack.  Taking its
address will give "sp+16", which is exactly what out3 is set to.

Thanks for pointing out this inconsistency (I'll see about fixing it).

	--david
Received on Mon Apr 07 14:28:03 2003

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:13 EST