Skip to contentSkip to conversation

lto, wan/sbni: Make inline assembler symbols visible and assembler global

PATCH In review Andi Kleen 2 participants 4 messages Aug 5, 2013

Subsystems (2)
lore
Share & tools
lore

Andi Kleen

author
#0 lore raw

PATCH 1/1 lto, wan/sbni: Make inline assembler symbols visible and assembler global

From: Andi Kleen <[email protected]>

- Inline assembler defining C callable code has to be global
- The function has to be visible

Do this in wan/sbni

---
 drivers/net/wan/sbni.c | 6 +++---
 drivers/net/wan/sbni.h | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)
drivers/net/wan/sbni.c +3 -3
index d43f4ef..b914ab3 100644
@@ -160,7 +160,7 @@ static int  scandone	__initdata = 0;
 static int  num		__initdata = 0;
 
 static unsigned char  rxl_tab[];
-static u32  crc32tab[];
+__visible u32  sbni_crc32tab[];
 
 /* A list of all installed devices, for removing the driver module. */
 static struct net_device  *sbni_cards[ SBNI_MAX_NUM_CARDS ];
@@ -1563,7 +1563,7 @@ calc_crc32( u32  crc,  u8  *p,  u32  len )
 		"xorl	%%ebx, %%ebx\n"
 		"movl	%2, %%esi\n" 
 		"movl	%3, %%ecx\n" 
-		"movl	$crc32tab, %%edi\n"
+		"movl	$sbni_crc32tab, %%edi\n"
 		"shrl	$2, %%ecx\n"
 		"jz	1f\n"
 
@@ -1645,7 +1645,7 @@ calc_crc32( u32  crc,  u8  *p,  u32  len )
 #endif	/* ASM_CRC */
 
 
-static u32  crc32tab[] __attribute__ ((aligned(8))) = {
+__visible u32  sbni_crc32tab[] __attribute__ ((aligned(8))) = {
 	0xD202EF8D,  0xA505DF1B,  0x3C0C8EA1,  0x4B0BBE37,
 	0xD56F2B94,  0xA2681B02,  0x3B614AB8,  0x4C667A2E,
 	0xDCD967BF,  0xABDE5729,  0x32D70693,  0x45D03605,
drivers/net/wan/sbni.h +1 -1
index 8426451..7e6d980 100644
@@ -132,7 +132,7 @@ struct sbni_flags {
 /*
  * CRC-32 stuff
  */
-#define CRC32(c,crc) (crc32tab[((size_t)(crc) ^ (c)) & 0xff] ^ (((crc) >> 8) & 0x00FFFFFF))
+#define CRC32(c,crc) (sbni_crc32tab[((size_t)(crc) ^ (c)) & 0xff] ^ (((crc) >> 8) & 0x00FFFFFF))
       /* CRC generator 0xEDB88320 */
       /* CRC remainder 0x2144DF1C */
       /* CRC initial value 0x00000000 */
Signature · 1 line
1.8.3.1
author
#2 lore raw
Quoted 5 lines · David Miller

From: Andi Kleen <[email protected]>
Date: Mon, 5 Aug 2013 15:18:14 -0700

Quoted 2 lines

From: Andi Kleen <[email protected]>

Quoted 8 lines
Quoted 6 lines

- Inline assembler defining C callable code has to be global
- The function has to be visible

Do this in wan/sbni

Please just make it use the standard lib/ CRC routines instead.

The problem is I don't have this hardware, and I don't think I can do such a change without testing it.

FWIW my main interest here is to avoid this thing breaking my allyesconfig build.

Could you please consider adding it?

If not I'll have to disable the driver in the LTO patchkit.

-Andi

maintainer
#3 lore raw

From: Andi Kleen <[email protected]>
Date: Tue, 6 Aug 2013 01:05:35 +0200

Quoted 9 lines · David Miller
Quoted 8 lines

From: Andi Kleen <[email protected]>
Date: Mon, 5 Aug 2013 15:18:14 -0700

Quoted 5 lines

From: Andi Kleen <[email protected]>

- Inline assembler defining C callable code has to be global
- The function has to be visible

Quoted 8 lines
Quoted 5 lines
Quoted 3 lines

Do this in wan/sbni

Please just make it use the standard lib/ CRC routines instead.

The problem is I don't have this hardware, and I don't think I can do such a change without testing it.

I say you can, having assembly in here for something as fundamental as this is pointless.