From 044e663dadab10cdb1e401c0638b4494654370db Mon Sep 17 00:00:00 2001 From: Sir Richard Date: Tue, 3 Aug 2010 01:56:35 +0000 Subject: [PATCH] [RTL]: Rtl ByteSwap functions should use intrinsics, isntead of assembly code. This should be merged into trunk! svn path=/branches/cmake-bringup/; revision=48425 --- lib/rtl/i386/rtlswap.S | 53 ------------------------------------------ lib/rtl/largeint.c | 34 +++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 53 deletions(-) delete mode 100644 lib/rtl/i386/rtlswap.S diff --git a/lib/rtl/i386/rtlswap.S b/lib/rtl/i386/rtlswap.S deleted file mode 100644 index 6ded910eb85..00000000000 --- a/lib/rtl/i386/rtlswap.S +++ /dev/null @@ -1,53 +0,0 @@ -/* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS Run-Time Library - * PURPOSE: Byte swap functions - * FILE: lib/rtl/i386/rtlswap.S - * PROGRAMER: Alex Ionescu (alex.ionescu@reactos.org) - */ - -.intel_syntax noprefix - -.globl @RtlUshortByteSwap@4 -.globl @RtlUlongByteSwap@4 -.globl @RtlUlonglongByteSwap@8 - -/* FUNCTIONS ***************************************************************/ - -.func @RtlUshortByteSwap@4, @RtlUshortByteSwap@4 -@RtlUshortByteSwap@4: - - /* Swap high and low bits */ - mov ah, cl - mov al, ch - ret -.endfunc - -.func @RtlUlongByteSwap@4, @RtlUlongByteSwap@4 -@RtlUlongByteSwap@4: - - /* Swap high and low bits */ - mov eax, ecx - bswap eax - ret -.endfunc - -.func @RtlUlonglongByteSwap@8, @RtlUlonglongByteSwap@8 -@RtlUlonglongByteSwap@8: - - /* Get 64-bit integer */ - mov edx, [esp+8] - mov eax, [esp+4] - - /* Swap it */ - bswap edx - bswap eax - - /* Return it */ - mov ecx, eax - mov eax, edx - mov edx, ecx - ret -.endfunc - - diff --git a/lib/rtl/largeint.c b/lib/rtl/largeint.c index cc7475241ac..5934f8c8449 100644 --- a/lib/rtl/largeint.c +++ b/lib/rtl/largeint.c @@ -14,6 +14,40 @@ /* FUNCTIONS *****************************************************************/ +#undef RtlUlonglongByteSwap +#undef RtlUlongByteSwap +#undef RtlUshortByteSwap + +/* + * @implemented + */ +USHORT +FASTCALL +RtlUshortByteSwap(IN USHORT Source) +{ + return _byteswap_ushort(Source); +} + +/* + * @implemented + */ +ULONG +FASTCALL +RtlUlongByteSwap(IN ULONG Source) +{ + return _byteswap_ulong(Source); +} + +/* + * @implemented + */ +ULONGLONG +FASTCALL +RtlUlonglongByteSwap(IN ULONGLONG Source) +{ + return _byteswap_uint64(Source); +} + /* * @implemented */ -- 2.17.1