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?