[alsa-devel] [PATCH] 6fire: Convert byte_rev_table uses to bitrev8
Use the inline function instead of directly indexing the array.
This allows some architectures with hardware instructions for bit reversals to eliminate the array.
Signed-off-by: Joe Perches joe@perches.com --- On Sun, 2014-10-26 at 23:46 -0700, Joe Perches wrote:
On Mon, 2014-10-27 at 14:37 +0800, Wang, Yalin wrote:
this change add CONFIG_HAVE_ARCH_BITREVERSE config option, so that we can use arm/arm64 rbit instruction to do bitrev operation by hardware.
[]
diff --git a/include/linux/bitrev.h b/include/linux/bitrev.h index 7ffe03f..ef5b2bb 100644 --- a/include/linux/bitrev.h +++ b/include/linux/bitrev.h @@ -3,6 +3,14 @@
#include <linux/types.h>
+#ifdef CONFIG_HAVE_ARCH_BITREVERSE +#include <asm/bitrev.h>
+#define bitrev32 __arch_bitrev32 +#define bitrev16 __arch_bitrev16 +#define bitrev8 __arch_bitrev8
+#else extern u8 const byte_rev_table[256];
sound/usb/6fire/firmware.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/usb/6fire/firmware.c b/sound/usb/6fire/firmware.c index 3b02e54..62c25e7 100644 --- a/sound/usb/6fire/firmware.c +++ b/sound/usb/6fire/firmware.c @@ -316,7 +316,7 @@ static int usb6fire_fw_fpga_upload(
while (c != end) { for (i = 0; c != end && i < FPGA_BUFSIZE; i++, c++) - buffer[i] = byte_rev_table[(u8) *c]; + buffer[i] = bitrev8((u8)*c);
ret = usb6fire_fw_fpga_write(device, buffer, i); if (ret < 0) {
Use the inline function instead of directly indexing the array.
This allows some architectures with hardware instructions for bit reversals to eliminate the array.
Signed-off-by: Joe Perches joe@perches.com
On Sun, 2014-10-26 at 23:46 -0700, Joe Perches wrote:
On Mon, 2014-10-27 at 14:37 +0800, Wang, Yalin wrote:
this change add CONFIG_HAVE_ARCH_BITREVERSE config option, so that we can use arm/arm64 rbit instruction to do bitrev operation by hardware.
[]
diff --git a/include/linux/bitrev.h b/include/linux/bitrev.h index 7ffe03f..ef5b2bb 100644 --- a/include/linux/bitrev.h +++ b/include/linux/bitrev.h @@ -3,6 +3,14 @@
#include <linux/types.h>
+#ifdef CONFIG_HAVE_ARCH_BITREVERSE +#include <asm/bitrev.h>
+#define bitrev32 __arch_bitrev32 +#define bitrev16 __arch_bitrev16 +#define bitrev8 __arch_bitrev8
+#else extern u8 const byte_rev_table[256];
sound/usb/6fire/firmware.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/usb/6fire/firmware.c b/sound/usb/6fire/firmware.c index 3b02e54..62c25e7 100644 --- a/sound/usb/6fire/firmware.c +++ b/sound/usb/6fire/firmware.c @@ -316,7 +316,7 @@ static int usb6fire_fw_fpga_upload(
while (c != end) { for (i = 0; c != end && i < FPGA_BUFSIZE; i++, c++)
buffer[i] = byte_rev_table[(u8) *c];
buffer[i] = bitrev8((u8)*c);
ret = usb6fire_fw_fpga_write(device, buffer, i); if (ret < 0) {
I think the most safe way is change byte_rev_table[] to be satic, So that no driver can access it directly, The build error can remind the developer if they use byte_rev_table[] Directly .
Thanks
On Wed, 2014-10-29 at 10:42 +0800, Wang, Yalin wrote:
Use the inline function instead of directly indexing the array. This allows some architectures with hardware instructions for bit reversals to eliminate the array.
[]
On Sun, 2014-10-26 at 23:46 -0700, Joe Perches wrote:
On Mon, 2014-10-27 at 14:37 +0800, Wang, Yalin wrote:
this change add CONFIG_HAVE_ARCH_BITREVERSE config option, so that we can use arm/arm64 rbit instruction to do bitrev operation by hardware.
[]
I think the most safe way is change byte_rev_table[] to be satic, So that no driver can access it directly, The build error can remind the developer if they use byte_rev_table[] Directly .
You can do that with your later patch, but the existing uses _must_ be converted first so you don't break the build.
From: Joe Perches [mailto:joe@perches.com]
I think the most safe way is change byte_rev_table[] to be satic, So that no driver can access it directly, The build error can remind the developer if they use byte_rev_table[] Directly .
You can do that with your later patch, but the existing uses _must_ be converted first so you don't break the build.
Yeah, I agree with you, I will add this into my later patch.
Thanks
participants (2)
-
Joe Perches
-
Wang, Yalin