dev builds
themes manual
device status forums
mailing lists
IRC bugs
dev guide

Rockbox mail archive

Subject: Re: Possible optimizations for coldfire

Re: Possible optimizations for coldfire

From: Jens Arnold <>
Date: Thu, 20 Apr 2006 01:08:52 +0200

On 19.04.2006, Jens Arnold wrote:

> On 19.04.2006, RaeNye wrote:

> ...

>> 3. GNU's memcpy() and memset() are not using all possible
>> registers (i.e. movem.l does only 16 bytes writes instead of
>> the possible 48). It also spends so much time on alignment
>> (which is not necessary for movem.l, IIRC).

> Rockbox' memcpy() and memset() for coldfire are not gnu - they
> are our own, coded by me. There are numerous reasons why they
> are designed as they are designed.

> ...

P.S.: If you manage to handle 48 (or even 32) bytes in one
movem.l cycle in memcpy() - congratulations. You would need 12
(or 8) free registers in addition to the loop & alignment stuff.
Plus, you can't shift address registers, so you'd need some
extra register swapping.

Just another hint: Freeing up registers for use in memcpy also
has a penalty - 2 longword stack accesses per register: quite
noticeable slowdown. Not all thread stacks are in IRAM.

Regards, Jens
Received on 2006-04-20

Page template was last modified "Tue Sep 7 00:00:02 2021" The Rockbox Crew -- Privacy Policy