[lkml]   [2002]   [Mar]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subjectgcc inline asm - short question
  In studying the kernel I find many gcc inline 'asm' statements,
like so.

asm ( assembler template
: output operands (optional)
: input operands (optional)
: list of clobbered registers (optional)

I have read all the docs and I still can't clearly understand when it
is required to specify a clobberlist - a register or memory that will
be modified and must be preserved by gcc.

In searching the kernel source there were very few clobbers given
and most of those were for memory.

For example in arch/i386/lib/delay.c:

71 __asm__("mull %0"
72 :"=d" (xloops), "=&a" (d0)
73 :"1" (xloops),"" (current_cpu_data.loops_per_jiffy));
74 __delay(xloops * HZ);

It's pretty obvious that eax gets clobbered, as I know clobber. Why is
it not listed as such? Does the answer to this question apply in all cases?
What about memory clobbers - how do they happen?

Do You Yahoo!?
Yahoo! Sports - live college hoops coverage
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:25    [W:0.030 / U:6.692 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site