![]() | ||||||||||
Messages in this thread |
> > Look into the btfixup mechanism the 32-bit sparc port now uses in the
> > vger CVS sources. You can have multiple memcpy/memset
> > etc. implementations, pick the one which performs best at boot time,
> > and make it zero cost.
>
> Ahh, cute! (You sparc guys seem to come up with the most fascinating
> code.) On intel's we can get away with self modifying code which is a
> bit easier, though. I never thought I'd be endorsing the use of self
> modifying code... oh well ;-)
Actually, btfixup is self-modifying code, but the modification is done at
boot time and then are all I-caches flushed. From that time the kernel code
does not change.
We needed it a lot - sparc32 has two completely incompatible mmus, 3
incompatible IRQ handlings, etc. - and all that is done by one single image
kernel. We used indirect calls before, but it was way slower.
Cheers,
Jakub
___________________________________________________________________
Jakub Jelinek | jj@sunsite.mff.cuni.cz | http://sunsite.mff.cuni.cz
Administrator of SunSITE Czech Republic, MFF, Charles University
___________________________________________________________________
Ultralinux - first 64bit OS to take full power of the UltraSparc
Linux version 2.1.89 on a sparc64 machine (498.80 BogoMips).
___________________________________________________________________
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
| |||||||||
| Last update: 2005-03-22 12:41 [from the cache] ©2003-2008 | ||||||||||