inline assembler v C

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Čtvrtek Listopad 22 02:21:49 CET 2001


On Wed, 21 Nov 2001, Michal Ludvig wrote:

> >>extern inline void nop(void)
> >>{ __asm__ __volatile__ ("nop"); }
> > Proc ji mate extern?
> 
> Protoze je tak definovana v headeru v kernelu. Konkretne se jedna o 
> funkci prefetch() z linux/include/asm/processor.h, kterou pouziva 
> copy_{to,from}_user() v modulu, ktery pisu. Kdyz ten modul prelozim a 
> chci ho zavest, tak insmod krici, ze pry "unresolved symbol prefetch".
> Je pravda, ze bez extern to chodi (divne - vzdyt jsou ve stejnem 
> souboru), ale prepisovat headery kernelu se mi nechce.

Aha. A co zkusit kompilovat s -Ox, kde x>=2 (nebo tak nejak).
Mam dojem, ze potiz spociva v tom, ze bez zapnutych optimalizaci gcc
neinlajnuje, ale extern u inline zase inhibuje vytvoreni out-of-line
kodu, takze tam v konecnem dusledku definice te funkce chybi.

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux