diff --git a/src/misc/cpu.c b/src/misc/cpu.c
index 0b0673a..697cb4b 100644
--- a/src/misc/cpu.c
+++ b/src/misc/cpu.c
@@ -117,16 +117,14 @@ void vlc_CPU_init (void)
                          : "cc" );
 #   else
 #       define cpuid( reg )                    \
-            asm volatile ( "push %%ebx\n\t"    \
-                           "cpuid\n\t"         \
+            asm volatile ( "cpuid\n\t"         \
                            "movl %%ebx,%1\n\t" \
-                           "pop %%ebx\n\t"     \
                          : "=a" ( i_eax ),     \
                            "=r" ( i_ebx ),     \
                            "=c" ( i_ecx ),     \
                            "=d" ( i_edx )      \
                          : "a"  ( reg )        \
-                         : "cc" );
+                         : "cc", "ebx" );
 #   endif
      /* Check if the OS really supports the requested instructions */
 # if defined (__i386__) && !defined (__i486__) && !defined (__i586__) \
