need a fast byteorder changing routine
Wells, Charles
Charles.Wells at nielsenmedia.com
Fri Jul 18 23:24:23 EST 2003
Li,
If you must do it one word at a time, the following works.
long SwapBytes(long* p)
{
__asm__(" lwbrx 3,0,3");
}
Charlie
-----Original Message-----
From: Wells, Charles [mailto:Charles.Wells at nielsenmedia.com]
Sent: Friday, July 18, 2003 9:04 AM
To: 'li'
Cc: linuxppc-embedded at lists.linuxppc.org
Subject: RE: need a fast byteorder changing routine
Li,
There's several ways of doing it. This way is pretty fast and makes few
assumptions about the buffer.
void FixEndian(long* buf, unsigned long num_longs)
{
__asm__(" addi 3,3,-4");
__asm__(" mtspr 9,4");
__asm__(" lwzu 4,4(3)");
__asm__(" stwbrx 4,0,3");
__asm__(" bc 16,0,$-8");
}
Charlie
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded
mailing list