Re: [Kos-dev] Préemption.

Cyril Dupuit cyrildupuit at hotmail.com
Mon Feb 21 09:26:35 CET 2005


Salut,
Merci pour les coups de pouce précédent.
Dans le code de Linux, j'ai vu qu'ils utilisaient les macros 
local_irq_restore(&Var) et local_irq_save(&Var).
J'ai voulu les intégrer à mon code mais, oh rage, oh désespoir, GCC ne 
reconnaît pas le code assembleur. Les messages indiqués sont :
/home/koalys/tmp/cc0H4Pcq.s: Assembler messages:
/home/koalys/tmp/cc0H4Pcq.s:37: Error: suffix or operands invalid for `pop'
/home/koalys/tmp/cc0H4Pcq.s:50: Error: suffix or operands invalid for `push'

Il lui est impossible d'identifier le code :
#define LocalIrqRestore(x) __asm__ __volatile__(		\
				"# LocalIrqRestore \n\t	\
				pushq %0 ; 			\
				popfq": 			\
				/* no output */ :		\
				"g" (x):			\
				"memory", "cc")

//*****************************************************************************

#define LocalIrqSave(x) do { 				\
				warn_if_not_ulong(x); 	\
				__asm__ __volatile__("# \
				LocalIrqSave \n\t 	\
				pushfq ; 		\
				popq %0 ; 		\
				cli":"=g" (x): 		\
				/* no input */ :	\
				"memory"); 		\
				} while (0)

Si quelqu'un a une proposition, je l'en serais reconnaissant.

Merci d'avance.

Cyril.

NB : Les options de compilation sont celles utilisées par SOS dans ses début 
: CFLAGS  = -Wall -nostdlib -nostdinc -ffreestanding.




More information about the Kos-dev mailing list