]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[crypto] Add bit-rotation functions for 8-bit and 16-bit values
authorMichael Brown <mcb30@ipxe.org>
Sat, 25 Jul 2015 13:41:30 +0000 (14:41 +0100)
committerMichael Brown <mcb30@ipxe.org>
Mon, 27 Jul 2015 14:21:17 +0000 (15:21 +0100)
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/include/ipxe/rotate.h

index 3495040bccc07f70f52581583d2093c15acce3b2..b5693e3ca3a828ef815c04c96e87f501727a5bae 100644 (file)
@@ -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 ) ) );