linux-mips
[Top] [All Lists]

Re: [PATCH] Improve o32 syscall handling

To: Ralf Baechle <ralf@linux-mips.org>
Subject: Re: [PATCH] Improve o32 syscall handling
From: Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de>
Date: Mon, 22 Nov 2004 08:00:04 +0100
Cc: linux-mips@linux-mips.org
In-reply-to: <20041122061854.GA25433@linux-mips.org>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20041121164557.GQ20986@rembrandt.csv.ica.uni-stuttgart.de> <20041122061854.GA25433@linux-mips.org>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.5.6i
Ralf Baechle wrote:
> On Sun, Nov 21, 2004 at 05:45:57PM +0100, Thiemo Seufer wrote:
> 
> > For the 64bit Kernel, it
> >  - checks for unaligned user stack
> 
> Why bother, the unaligned exception handler should take care of this.

It really does so for unaligned accesses from kernel space?

> >  - also allows now up to 8 arguments
> 
> Quite frankly I'd prefer to see this being handle in userspace.  For o32
> it's too late to go for that but for N32 / N64 we still may have a chance.

My changes are for O32 only. N32/N64 doesn't need more than 6 arguments.

> > -   LONG_L  a2, TI_FLAGS($28)       # current->work
> > +   lw      a2, TI_FLAGS($28)       # current->work
> 
> Flags is a long variable.

"long" isn't a quantity the assembler knows about. :-)

The whole assembler file for O32 support in 32bit Kernels makes only
sense when it is compiled as 32bit code. In that case, the C "long"
has 4 bytes and is loaded with lw. Using a macro which abstracts for
32/64bit compilation hides this needlessly, and can even lead to the
erraneous impression the code would be useful for 64bit, too.


Thiemo

<Prev in Thread] Current Thread [Next in Thread>