xref: /linux/lib/bitrev.c (revision 09c434b8)
1*09c434b8SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
2556d2f05SYalin Wang #ifndef CONFIG_HAVE_ARCH_BITREVERSE
3a5cfc1ecSAkinobu Mita #include <linux/types.h>
4a5cfc1ecSAkinobu Mita #include <linux/module.h>
5a5cfc1ecSAkinobu Mita #include <linux/bitrev.h>
6a5cfc1ecSAkinobu Mita 
70258736aSCal Peake MODULE_AUTHOR("Akinobu Mita <akinobu.mita@gmail.com>");
80258736aSCal Peake MODULE_DESCRIPTION("Bit ordering reversal functions");
90258736aSCal Peake MODULE_LICENSE("GPL");
100258736aSCal Peake 
11a5cfc1ecSAkinobu Mita const u8 byte_rev_table[256] = {
12a5cfc1ecSAkinobu Mita 	0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
13a5cfc1ecSAkinobu Mita 	0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
14a5cfc1ecSAkinobu Mita 	0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
15a5cfc1ecSAkinobu Mita 	0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
16a5cfc1ecSAkinobu Mita 	0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
17a5cfc1ecSAkinobu Mita 	0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
18a5cfc1ecSAkinobu Mita 	0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
19a5cfc1ecSAkinobu Mita 	0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
20a5cfc1ecSAkinobu Mita 	0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
21a5cfc1ecSAkinobu Mita 	0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
22a5cfc1ecSAkinobu Mita 	0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
23a5cfc1ecSAkinobu Mita 	0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
24a5cfc1ecSAkinobu Mita 	0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
25a5cfc1ecSAkinobu Mita 	0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
26a5cfc1ecSAkinobu Mita 	0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
27a5cfc1ecSAkinobu Mita 	0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
28a5cfc1ecSAkinobu Mita 	0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
29a5cfc1ecSAkinobu Mita 	0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
30a5cfc1ecSAkinobu Mita 	0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
31a5cfc1ecSAkinobu Mita 	0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
32a5cfc1ecSAkinobu Mita 	0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
33a5cfc1ecSAkinobu Mita 	0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
34a5cfc1ecSAkinobu Mita 	0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
35a5cfc1ecSAkinobu Mita 	0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
36a5cfc1ecSAkinobu Mita 	0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
37a5cfc1ecSAkinobu Mita 	0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
38a5cfc1ecSAkinobu Mita 	0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
39a5cfc1ecSAkinobu Mita 	0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
40a5cfc1ecSAkinobu Mita 	0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
41a5cfc1ecSAkinobu Mita 	0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
42a5cfc1ecSAkinobu Mita 	0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
43a5cfc1ecSAkinobu Mita 	0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff,
44a5cfc1ecSAkinobu Mita };
45a5cfc1ecSAkinobu Mita EXPORT_SYMBOL_GPL(byte_rev_table);
46a5cfc1ecSAkinobu Mita 
47556d2f05SYalin Wang #endif /* CONFIG_HAVE_ARCH_BITREVERSE */
48