Missing pop over a jump SDL-1.2
authorSam Lantinga <slouken@libsdl.org>
Thu, 03 Dec 2009 04:20:46 +0000
branchSDL-1.2
changeset 438772d3b4fd918b
parent 4386 dcb26ac38e6b
child 4388 1524d3237820
Missing pop over a jump
src/cpuinfo/SDL_cpuinfo.c
     1.1 --- a/src/cpuinfo/SDL_cpuinfo.c	Wed Dec 02 16:24:21 2009 +0000
     1.2 +++ b/src/cpuinfo/SDL_cpuinfo.c	Thu Dec 03 04:20:46 2009 +0000
     1.3 @@ -151,10 +151,12 @@
     1.4  "        xorl    %%eax,%%eax         # Set up for CPUID instruction    \n"
     1.5  "        pushl   %%ebx                                                 \n"
     1.6  "        cpuid                       # Get and save vendor ID          \n"
     1.7 +"        popl    %%ebx                                                 \n"
     1.8  "        cmpl    $1,%%eax            # Make sure 1 is valid input for CPUID\n"
     1.9  "        jl      1f                  # We dont have the CPUID instruction\n"
    1.10  "        xorl    %%eax,%%eax                                           \n"
    1.11  "        incl    %%eax                                                 \n"
    1.12 +"        pushl   %%ebx                                                 \n"
    1.13  "        cpuid                       # Get family/model/stepping/features\n"
    1.14  "        popl    %%ebx                                                 \n"
    1.15  "        movl    %%edx,%0                                              \n"
    1.16 @@ -166,14 +168,16 @@
    1.17  #elif defined(__GNUC__) && defined(__x86_64__)
    1.18  	__asm__ (
    1.19  "        xorl    %%eax,%%eax         # Set up for CPUID instruction    \n"
    1.20 -"        pushq   %%rbx\n"
    1.21 +"        pushq   %%rbx                                                 \n"
    1.22  "        cpuid                       # Get and save vendor ID          \n"
    1.23 +"        popq    %%rbx                                                 \n"
    1.24  "        cmpl    $1,%%eax            # Make sure 1 is valid input for CPUID\n"
    1.25  "        jl      1f                  # We dont have the CPUID instruction\n"
    1.26  "        xorl    %%eax,%%eax                                           \n"
    1.27  "        incl    %%eax                                                 \n"
    1.28 +"        pushq   %%rbx                                                 \n"
    1.29  "        cpuid                       # Get family/model/stepping/features\n"
    1.30 -"        popq    %%rbx\n"
    1.31 +"        popq    %%rbx                                                 \n"
    1.32  "        movl    %%edx,%0                                              \n"
    1.33  "1:                                                                    \n"
    1.34  	: "=m" (features)
    1.35 @@ -185,10 +189,12 @@
    1.36          xor     eax, eax            ; Set up for CPUID instruction
    1.37          push    ebx
    1.38          cpuid                       ; Get and save vendor ID
    1.39 +        pop     ebx
    1.40          cmp     eax, 1              ; Make sure 1 is valid input for CPUID
    1.41          jl      done                ; We dont have the CPUID instruction
    1.42          xor     eax, eax
    1.43          inc     eax
    1.44 +        push    ebx
    1.45          cpuid                       ; Get family/model/stepping/features
    1.46          pop     ebx
    1.47          mov     features, edx
    1.48 @@ -199,10 +205,12 @@
    1.49  "        xorl    %eax,%eax         \n"
    1.50  "        pushl   %ebx              \n"
    1.51  "        cpuid                     \n"
    1.52 +"        popl    %ebx              \n"
    1.53  "        cmpl    $1,%eax           \n"
    1.54  "        jl      1f                \n"
    1.55  "        xorl    %eax,%eax         \n"
    1.56  "        incl    %eax              \n"
    1.57 +"        pushl   %ebx              \n"
    1.58  "        cpuid                     \n"
    1.59  "        popl    %ebx              \n"
    1.60  #ifdef __i386
    1.61 @@ -223,9 +231,11 @@
    1.62  "        movl    $0x80000000,%%eax   # Query for extended functions    \n"
    1.63  "        pushl   %%ebx                                                 \n"
    1.64  "        cpuid                       # Get extended function limit     \n"
    1.65 +"        popl    %%ebx                                                 \n"
    1.66  "        cmpl    $0x80000001,%%eax                                     \n"
    1.67  "        jl      1f                  # Nope, we dont have function 800000001h\n"
    1.68  "        movl    $0x80000001,%%eax   # Setup extended function 800000001h\n"
    1.69 +"        pushl   %%ebx                                                 \n"
    1.70  "        cpuid                       # and get the information         \n"
    1.71  "        popl    %%ebx                                                 \n"
    1.72  "        movl    %%edx,%0                                              \n"
    1.73 @@ -239,9 +249,11 @@
    1.74  "        movl    $0x80000000,%%eax   # Query for extended functions    \n"
    1.75  "        pushq   %%rbx                                                 \n"
    1.76  "        cpuid                       # Get extended function limit     \n"
    1.77 +"        popq    %%rbx                                                 \n"
    1.78  "        cmpl    $0x80000001,%%eax                                     \n"
    1.79  "        jl      1f                  # Nope, we dont have function 800000001h\n"
    1.80  "        movl    $0x80000001,%%eax   # Setup extended function 800000001h\n"
    1.81 +"        pushq   %%rbx                                                 \n"
    1.82  "        cpuid                       # and get the information         \n"
    1.83  "        popq    %%rbx                                                 \n"
    1.84  "        movl    %%edx,%0                                              \n"
    1.85 @@ -255,9 +267,11 @@
    1.86          mov     eax,80000000h       ; Query for extended functions
    1.87          push    ebx
    1.88          cpuid                       ; Get extended function limit
    1.89 +        pop     ebx
    1.90          cmp     eax,80000001h
    1.91          jl      done                ; Nope, we dont have function 800000001h
    1.92          mov     eax,80000001h       ; Setup extended function 800000001h
    1.93 +        push    ebx
    1.94          cpuid                       ; and get the information
    1.95          pop     ebx
    1.96          mov     features,edx
    1.97 @@ -268,9 +282,11 @@
    1.98  "        movl    $0x80000000,%eax \n"
    1.99  "        pushl   %ebx             \n"
   1.100  "        cpuid                    \n"
   1.101 +"        popl    %ebx             \n"
   1.102  "        cmpl    $0x80000001,%eax \n"
   1.103  "        jl      1f               \n"
   1.104  "        movl    $0x80000001,%eax \n"
   1.105 +"        pushl   %ebx             \n"
   1.106  "        cpuid                    \n"
   1.107  "        popl    %ebx             \n"
   1.108  #ifdef __i386