Written by: Helio Loureiro
Category: Linux
Hits: 6554

Diferenças de hardware sempre existiram, mas desde que instalei o Urubuntu, digo, Ubuntu no meu iBook e tudo funcionou exatamente igual ao meu PC, não prestei mais atenção nisso. Até o momento. Brincando com uma DWL-G122, placa Wi-Fi B/G via USB, com revisão de hardware A1, que não é chipset prism e por isso mesmo estava compilando o suporte via ndiswrapper, descobri um pequeno bug na compilação:

 


/usr/src/modules/ndiswrapper/misc_funcs.c:865: 
warning: `regparm' attribute directive ignored 
/usr/src/modules/ndiswrapper/misc_funcs.c:873: 
warning: `__stdcall__' attribute directive ignored 
/usr/src/modules/ndiswrapper/misc_funcs.c:873: 
warning: `regparm' attribute directive ignored 
{standard input}: Assembler messages: {standard input}:2719: Error: Unrecognized opcode: `movl' 
make[2]: *** [/usr/src/modules/ndiswrapper/misc_funcs.o] Error 1 make[1]: *** 
[_module_/usr/src/modules/ndiswrapper] 
Error 2 make[1]: Leaving directory `/usr/src/linux-source-2.6.12' 
make: *** [default] Error 2 

Buscando no arquivo misc_funcs.c, verifiquei que fazia parte da seguinte chamada:


#ifdef CONFIG_X86_64 __asm__ __volatile__("movq %%rsp, %0\n" : "=g"(i)); 
#else __asm__ __volatile__("movl %%esp, %0\n" : "=g"(i)); 
#endif return (void *)i; } 

 

Código assembly de X86... problema. Tentei compreender o dito e buscar um equivalente. Eis que encontrei o valioso link:

http://www-128.ibm.com/developerworks/linux/library/l-ppc/

Agora fica a questão: como reescrever isso para PPC???? Será que a brincadeira vale algum tempo em cima disso?