Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// TITLE("Byte Swap Functions") //++ // // Copyright (c) 1998 Intel Corporation // Copyright (c) 1997 Microsoft Corporation // // Module Name: // // byteswap.s // // Abstract: // // This module implements functions to perform byte swapping operations. // // Author: // // William Cheung (v-willc) 30-Nov-1998 // // Environment: // // User or Kernel mode. // // Revision History: // //--
#include "ksia64.h"
SBTTL("RtlUshortByteSwap") //++ // // USHORT // RtlUshortByteSwap( // IN USHORT Source // ) // // Routine Description: // // The RtlUshortByteSwap function exchanges bytes 0 and 1 of Source // and returns the resulting USHORT. // // Arguments: // // Source (a0[0..15]) - 16-bit value to byteswap. // // Return Value: // // The 16-bit integer result is returned as the function value // in v0[0..15]. // //--
LEAF_ENTRY(RtlUshortByteSwap)
shl t0 = a0, 48 ;;
mux1 v0 = t0, @rev br.ret.sptk brp
LEAF_EXIT(RtlUshortByteSwap)
SBTTL("RtlUlongByteSwap") //++ // // ULONG // RtlUlongByteSwap( // IN ULONG Source // ) // // Routine Description: // // The RtlUlongByteSwap function exchanges byte pairs 0:3 and 1:2 of // Source and returns the the resulting ULONG. // // Arguments: // // Source (a0[0..31]) - 32-bit value to byteswap. // // Return Value: // // The 32-bit integer result is returned as the function value // in v0[0..31]. // //--
LEAF_ENTRY(RtlUlongByteSwap)
shl t0 = a0, 32 ;;
mux1 v0 = t0, @rev br.ret.sptk brp
LEAF_EXIT(RtlUlongByteSwap)
SBTTL("RtlUlonglongByteSwap") //++ // // ULONG // RtlUlonglongByteSwap( // IN ULONGLONG Source // ) // // /*++ // // Routine Description: // // The RtlUlonglongByteSwap function exchanges byte pairs 0:7, 1:6, 2:5, // and 3:4 of Source and returns the resulting ULONGLONG. // // Arguments: // // Source (a0[0..63]) - 64-bit value to byteswap. // // Return Value: // // Swapped 64-bit value. // //--
LEAF_ENTRY(RtlUlonglongByteSwap)
mux1 v0 = a0, @rev br.ret.sptk brp
LEAF_EXIT(RtlUlonglongByteSwap)
|