mirror of https://github.com/ipxe/ipxe.git
[crypto] Add bit-rotation functions for 8-bit and 16-bit values
Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/39/head
parent
99d351605a
commit
775f5943c0
|
@ -10,6 +10,26 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||
|
||||
#include <stdint.h>
|
||||
|
||||
static inline __attribute__ (( always_inline )) uint8_t
|
||||
rol8 ( uint8_t data, unsigned int rotation ) {
|
||||
return ( ( data << rotation ) | ( data >> ( 8 - rotation ) ) );
|
||||
}
|
||||
|
||||
static inline __attribute__ (( always_inline )) uint8_t
|
||||
ror8 ( uint8_t data, unsigned int rotation ) {
|
||||
return ( ( data >> rotation ) | ( data << ( 8 - rotation ) ) );
|
||||
}
|
||||
|
||||
static inline __attribute__ (( always_inline )) uint16_t
|
||||
rol16 ( uint16_t data, unsigned int rotation ) {
|
||||
return ( ( data << rotation ) | ( data >> ( 16 - rotation ) ) );
|
||||
}
|
||||
|
||||
static inline __attribute__ (( always_inline )) uint16_t
|
||||
ror16 ( uint16_t data, unsigned int rotation ) {
|
||||
return ( ( data >> rotation ) | ( data << ( 16 - rotation ) ) );
|
||||
}
|
||||
|
||||
static inline __attribute__ (( always_inline )) uint32_t
|
||||
rol32 ( uint32_t data, unsigned int rotation ) {
|
||||
return ( ( data << rotation ) | ( data >> ( 32 - rotation ) ) );
|
||||
|
|
Loading…
Reference in New Issue