linux-mips
[Top] [All Lists]

Re: get_mmu_context()

To: Rik van Riel <H.H.vanRiel@phys.uu.nl>
Subject: Re: get_mmu_context()
From: ralf@uni-koblenz.de
Date: Thu, 15 Oct 1998 01:49:55 +0200
Cc: Vladimir Roganov <roganov@niisi.msk.ru>, linux-mips@fnet.fr, linux@cthulhu.engr.sgi.com, linux-mips@vger.rutgers.edu, linux-kernel@vger.rutgers.edu
In-reply-to: <Pine.LNX.3.96.981014144230.10483B-100000@mirkwood.dummy.home>; from Rik van Riel on Wed, Oct 14, 1998 at 02:45:45PM +0000
References: <19981013215927.A2692@uni-koblenz.de> <Pine.LNX.3.96.981014144230.10483B-100000@mirkwood.dummy.home>
Sender: owner-linux@cthulhu.engr.sgi.com
On Wed, Oct 14, 1998 at 02:45:45PM +0000, Rik van Riel wrote:

> > Ok, here is a draft version of an agressively optimized version of
> > get_mmu_context().  I just didn't like the idea of referencing
> > global variables in get_mmu_context() if avoidable.  The code below
> > will work on both R3000 and R4000 with no performance penalty for
> > being generic.  The trick is to patch the operands of two machine
> > instructions at runtime, shoot me.
> 
> ROFL! No offense to the code, I'm sure it works, but
> this just _has_ to be the funniest piece of source
> code to appear on the lists this month...
> 
> Self-modifying code -- this is so much fun :)

Lame example of self modifying code, it doesn't even modify the instructions
and only on bootup.

> > extern inline void r3000_asid_setup(void)
> > 
> > extern inline void r4xx0_asid_setup(void)
> 
> Very nice Ralf... My compliments on this piece
> of code -- I can only imagine the amount of
> phantasy and inspiration that was needed to
> create it...

Guess why I had to post it :-)  Seriously, I didn't like the proposed
alternative and some of the older machines which have main memory latencies
like 1400ns for shure win each time when _not_ using memory.  Even in
case of a l1 hit the amount of time wasted for the load should still be
visible in context switching times.  So, no mercy.  Patch as patch can.
And maintenance isn't the issue.  I messed it up, I maintain it :-)

  Ralf

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