Re: [PATCH 1/1] Speedfreq-SMI call clobbers ECX

H. Peter Anvin
2008-03-05T16:07:40Z

Ingo Molnar wrote:
> * Stephan Diestelhorst <langer_mann@web.de> wrote:
>
>> @@ -184,7 +184,7 @@ static void speedstep_set_state (unsigne
>> __asm__ __volatile__(
>> "movl $0, %%edi\n"
>> "out %%al, (%%dx)\n"
>> - : "=b" (new_state), "=D" (result)
>> + : "=b" (new_state), "=D" (result), "=c" (ecx_clobber)
>> : "a" (command), "b" (function), "c" (state), "d" (smi_port), "S" (0)
>> );
>
> stupid suggestion: why not do a pusha/popa around those instructions, to
> make sure everything is restored? This isnt a fastpath and being
> conservative about SMI side-effects cannot hurt ...
>

You can't pusha/popa if you expect a result. You can, of course, push
and pop individual registers.

It's also kind of odd to do "movl $0,%%edi" instead of just setting EDI
as an input.

-hpa