xref: /openbmc/u-boot/lib/bitrev.c (revision 9dc8d155)
1*9c2cb97eSBin Meng // SPDX-License-Identifier: GPL-2.0
20dd9c7a9SMike Dunn 
3*9c2cb97eSBin Meng #ifndef CONFIG_HAVE_ARCH_BITREVERSE
40dd9c7a9SMike Dunn #include <linux/types.h>
5*9c2cb97eSBin Meng #include <linux/compat.h>
60dd9c7a9SMike Dunn #include <linux/bitrev.h>
70dd9c7a9SMike Dunn 
8*9c2cb97eSBin Meng MODULE_AUTHOR("Akinobu Mita <akinobu.mita@gmail.com>");
9*9c2cb97eSBin Meng MODULE_DESCRIPTION("Bit ordering reversal functions");
10*9c2cb97eSBin Meng MODULE_LICENSE("GPL");
11*9c2cb97eSBin Meng 
120dd9c7a9SMike Dunn const u8 byte_rev_table[256] = {
130dd9c7a9SMike Dunn 	0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
140dd9c7a9SMike Dunn 	0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
150dd9c7a9SMike Dunn 	0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
160dd9c7a9SMike Dunn 	0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
170dd9c7a9SMike Dunn 	0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
180dd9c7a9SMike Dunn 	0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
190dd9c7a9SMike Dunn 	0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
200dd9c7a9SMike Dunn 	0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
210dd9c7a9SMike Dunn 	0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
220dd9c7a9SMike Dunn 	0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
230dd9c7a9SMike Dunn 	0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
240dd9c7a9SMike Dunn 	0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
250dd9c7a9SMike Dunn 	0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
260dd9c7a9SMike Dunn 	0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
270dd9c7a9SMike Dunn 	0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
280dd9c7a9SMike Dunn 	0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
290dd9c7a9SMike Dunn 	0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
300dd9c7a9SMike Dunn 	0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
310dd9c7a9SMike Dunn 	0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
320dd9c7a9SMike Dunn 	0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
330dd9c7a9SMike Dunn 	0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
340dd9c7a9SMike Dunn 	0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
350dd9c7a9SMike Dunn 	0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
360dd9c7a9SMike Dunn 	0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
370dd9c7a9SMike Dunn 	0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
380dd9c7a9SMike Dunn 	0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
390dd9c7a9SMike Dunn 	0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
400dd9c7a9SMike Dunn 	0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
410dd9c7a9SMike Dunn 	0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
420dd9c7a9SMike Dunn 	0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
430dd9c7a9SMike Dunn 	0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
440dd9c7a9SMike Dunn 	0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff,
450dd9c7a9SMike Dunn };
46*9c2cb97eSBin Meng EXPORT_SYMBOL_GPL(byte_rev_table);
470dd9c7a9SMike Dunn 
48*9c2cb97eSBin Meng #endif /* CONFIG_HAVE_ARCH_BITREVERSE */
49