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:
Agora fica a questão: como reescrever isso para PPC???? Será que a brincadeira vale algum tempo em cima disso?