michael@0: / This Source Code Form is subject to the terms of the Mozilla Public michael@0: / License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: / file, You can obtain one at http://mozilla.org/MPL/2.0/. michael@0: michael@0: .file "mpcpucache.c" michael@0: / .section .rodata.str1.1,"aMS",@progbits,1 michael@0: .section .rodata michael@0: .LC0: michael@0: .string "GenuineIntel" michael@0: .LC1: michael@0: .string "AuthenticAMD" michael@0: .LC2: michael@0: .string "CyrixInstead" michael@0: .LC3: michael@0: .string "CentaurHauls" michael@0: .LC4: michael@0: .string "NexGenDriven" michael@0: .LC5: michael@0: .string "GenuineTMx86" michael@0: .LC6: michael@0: .string "RiseRiseRise" michael@0: .LC7: michael@0: .string "UMC UMC UMC " michael@0: .LC8: michael@0: .string "Sis Sis Sis " michael@0: .LC9: michael@0: .string "Geode by NSC" michael@0: .section .data.rel.ro.local,"aw",@progbits michael@0: .align 32 michael@0: .type manMap, @object michael@0: .size manMap, 40 michael@0: manMap: michael@0: .long .LC0 michael@0: .long .LC1 michael@0: .long .LC2 michael@0: .long .LC3 michael@0: .long .LC4 michael@0: .long .LC5 michael@0: .long .LC6 michael@0: .long .LC7 michael@0: .long .LC8 michael@0: .long .LC9 michael@0: .section .rodata michael@0: .align 32 michael@0: .type CacheMap, @object michael@0: .size CacheMap, 512 michael@0: CacheMap: michael@0: .byte 0 michael@0: .byte 0 michael@0: .byte 3 michael@0: .byte 0 michael@0: .byte 3 michael@0: .byte 0 michael@0: .byte 4 michael@0: .byte 0 michael@0: .byte 4 michael@0: .zero 1 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 7 michael@0: .byte 32 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 7 michael@0: .byte 32 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 8 michael@0: .byte 32 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 8 michael@0: .byte 32 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 12 michael@0: .byte 64 michael@0: .byte 12 michael@0: .byte 64 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 12 michael@0: .byte 64 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 12 michael@0: .byte 64 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 8 michael@0: .byte 64 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 7 michael@0: .byte 64 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 9 michael@0: .byte 64 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 9 michael@0: .byte 64 michael@0: .byte 9 michael@0: .byte 64 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 9 michael@0: .byte 0 michael@0: .byte 9 michael@0: .byte 32 michael@0: .byte 9 michael@0: .byte 32 michael@0: .byte 9 michael@0: .byte 32 michael@0: .byte 9 michael@0: .byte 32 michael@0: .byte 9 michael@0: .byte 32 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 3 michael@0: .byte 0 michael@0: .byte 3 michael@0: .byte 0 michael@0: .byte 3 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 4 michael@0: .byte 0 michael@0: .byte 4 michael@0: .byte 0 michael@0: .byte 4 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 8 michael@0: .byte 64 michael@0: .byte 8 michael@0: .byte 64 michael@0: .byte 8 michael@0: .byte 64 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 5 michael@0: .byte 1 michael@0: .byte 5 michael@0: .byte 1 michael@0: .byte 5 michael@0: .byte 1 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 9 michael@0: .byte 64 michael@0: .byte 9 michael@0: .byte 64 michael@0: .byte 9 michael@0: .byte 64 michael@0: .byte 9 michael@0: .byte 64 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 9 michael@0: .byte 32 michael@0: .byte 9 michael@0: .byte 32 michael@0: .byte 9 michael@0: .byte 32 michael@0: .byte 9 michael@0: .byte 32 michael@0: .byte 9 michael@0: .byte 64 michael@0: .byte 9 michael@0: .byte 64 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 3 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 4 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .byte 1 michael@0: .byte 0 michael@0: .text michael@0: .align 4 michael@0: .globl freebl_cpuid michael@0: .type freebl_cpuid, @function michael@0: freebl_cpuid: michael@0: pushl %ebp michael@0: pushl %edi michael@0: pushl %esi michael@0: subl $8, %esp michael@0: movl %edx, %ebp michael@0: /APP michael@0: pushl %ebx michael@0: cpuid michael@0: mov %ebx,%esi michael@0: popl %ebx michael@0: michael@0: /NO_APP michael@0: movl %eax, (%ebp) michael@0: movl 24(%esp), %eax michael@0: movl %esi, (%eax) michael@0: movl 28(%esp), %eax michael@0: movl %ecx, (%eax) michael@0: movl 32(%esp), %eax michael@0: movl %edx, (%eax) michael@0: addl $8, %esp michael@0: popl %esi michael@0: popl %edi michael@0: popl %ebp michael@0: ret michael@0: .size freebl_cpuid, .-freebl_cpuid michael@0: .align 4 michael@0: .type changeFlag, @function michael@0: changeFlag: michael@0: /APP michael@0: pushfl michael@0: popl %edx michael@0: movl %edx,%ecx michael@0: xorl %eax,%edx michael@0: pushl %edx michael@0: popfl michael@0: pushfl michael@0: popl %edx michael@0: pushl %ecx michael@0: popfl michael@0: michael@0: /NO_APP michael@0: xorl %ecx, %edx michael@0: movl %edx, %eax michael@0: ret michael@0: .size changeFlag, .-changeFlag michael@0: .align 4 michael@0: .type getIntelCacheEntryLineSize, @function michael@0: getIntelCacheEntryLineSize: michael@0: pushl %edi michael@0: pushl %esi michael@0: pushl %ebx michael@0: call .L17 michael@0: .L17: michael@0: popl %ebx michael@0: addl $_GLOBAL_OFFSET_TABLE_+[.-.L17], %ebx michael@0: movzbl CacheMap@GOTOFF(%ebx,%eax,2), %ecx michael@0: movb 1+CacheMap@GOTOFF(%ebx,%eax,2), %al michael@0: testb %al, %al michael@0: movl 16(%esp), %edi michael@0: je .L3 michael@0: cmpl $6, %ecx michael@0: je .L6 michael@0: cmpl $8, %ecx michael@0: je .L6 michael@0: movl (%edx), %esi michael@0: cmpl $1, %esi michael@0: jg .L15 michael@0: .L8: michael@0: cmpl $2, %esi michael@0: jle .L3 michael@0: cmpl $12, %ecx michael@0: je .L12 michael@0: cmpl $14, %ecx michael@0: je .L12 michael@0: .align 4 michael@0: .L3: michael@0: popl %ebx michael@0: popl %esi michael@0: popl %edi michael@0: ret michael@0: .align 4 michael@0: .L6: michael@0: movzbl %al, %eax michael@0: movl $1, (%edx) michael@0: movl %eax, (%edi) michael@0: .L16: michael@0: popl %ebx michael@0: popl %esi michael@0: popl %edi michael@0: ret michael@0: .align 4 michael@0: .L15: michael@0: cmpl $9, %ecx michael@0: je .L9 michael@0: cmpl $11, %ecx michael@0: jne .L8 michael@0: .L9: michael@0: movzbl %al, %eax michael@0: movl $2, (%edx) michael@0: movl %eax, (%edi) michael@0: jmp .L16 michael@0: .L12: michael@0: movzbl %al, %eax michael@0: movl $3, (%edx) michael@0: movl %eax, (%edi) michael@0: jmp .L16 michael@0: .size getIntelCacheEntryLineSize, .-getIntelCacheEntryLineSize michael@0: .align 4 michael@0: .type getIntelRegisterCacheLineSize, @function michael@0: getIntelRegisterCacheLineSize: michael@0: pushl %ebp michael@0: movl %esp, %ebp michael@0: pushl %edi michael@0: pushl %esi michael@0: pushl %ecx michael@0: movl 8(%ebp), %edi michael@0: movl %eax, %esi michael@0: movl %edx, -12(%ebp) michael@0: shrl $24, %eax michael@0: pushl %edi michael@0: call getIntelCacheEntryLineSize michael@0: movl %esi, %eax michael@0: pushl %edi michael@0: shrl $16, %eax michael@0: movl -12(%ebp), %edx michael@0: andl $255, %eax michael@0: call getIntelCacheEntryLineSize michael@0: pushl %edi michael@0: movl %esi, %edx michael@0: movzbl %dh, %eax michael@0: movl -12(%ebp), %edx michael@0: call getIntelCacheEntryLineSize michael@0: andl $255, %esi michael@0: movl %edi, 8(%ebp) michael@0: movl -12(%ebp), %edx michael@0: addl $12, %esp michael@0: leal -8(%ebp), %esp michael@0: movl %esi, %eax michael@0: popl %esi michael@0: popl %edi michael@0: leave michael@0: jmp getIntelCacheEntryLineSize michael@0: .size getIntelRegisterCacheLineSize, .-getIntelRegisterCacheLineSize michael@0: .align 4 michael@0: .globl s_mpi_getProcessorLineSize michael@0: .type s_mpi_getProcessorLineSize, @function michael@0: s_mpi_getProcessorLineSize: michael@0: pushl %ebp michael@0: movl %esp, %ebp michael@0: pushl %edi michael@0: pushl %esi michael@0: pushl %ebx michael@0: subl $188, %esp michael@0: call .L52 michael@0: .L52: michael@0: popl %ebx michael@0: addl $_GLOBAL_OFFSET_TABLE_+[.-.L52], %ebx michael@0: movl $9, -168(%ebp) michael@0: movl $262144, %eax michael@0: call changeFlag michael@0: xorl %edx, %edx michael@0: testl %eax, %eax michael@0: jne .L50 michael@0: .L19: michael@0: leal -12(%ebp), %esp michael@0: popl %ebx michael@0: popl %esi michael@0: movl %edx, %eax michael@0: popl %edi michael@0: leave michael@0: ret michael@0: .align 4 michael@0: .L50: michael@0: movl $2097152, %eax michael@0: call changeFlag michael@0: testl %eax, %eax michael@0: movl $32, %edx michael@0: je .L19 michael@0: leal -108(%ebp), %eax michael@0: pushl %eax michael@0: leal -112(%ebp), %eax michael@0: pushl %eax michael@0: leal -116(%ebp), %eax michael@0: pushl %eax michael@0: leal -120(%ebp), %edx michael@0: xorl %eax, %eax michael@0: call freebl_cpuid michael@0: movl -120(%ebp), %eax michael@0: movl %eax, -164(%ebp) michael@0: movl -116(%ebp), %eax michael@0: movl %eax, -104(%ebp) michael@0: movl -108(%ebp), %eax michael@0: movl %eax, -100(%ebp) michael@0: movl -112(%ebp), %eax michael@0: movl %eax, -96(%ebp) michael@0: movb $0, -92(%ebp) michael@0: xorl %esi, %esi michael@0: addl $12, %esp michael@0: leal -104(%ebp), %edi michael@0: .align 4 michael@0: .L28: michael@0: subl $8, %esp michael@0: pushl %edi michael@0: pushl manMap@GOTOFF(%ebx,%esi,4) michael@0: call strcmp@PLT michael@0: addl $16, %esp michael@0: testl %eax, %eax michael@0: jne .L26 michael@0: movl %esi, -168(%ebp) michael@0: .L26: michael@0: incl %esi michael@0: cmpl $9, %esi michael@0: jle .L28 michael@0: movl -168(%ebp), %eax michael@0: testl %eax, %eax michael@0: jne .L29 michael@0: xorl %eax, %eax michael@0: cmpl $1, -164(%ebp) michael@0: movl $4, -144(%ebp) michael@0: movl $0, -140(%ebp) michael@0: jle .L41 michael@0: leal -124(%ebp), %edx michael@0: movl %edx, -188(%ebp) michael@0: leal -128(%ebp), %eax michael@0: pushl %edx michael@0: movl %eax, -184(%ebp) michael@0: leal -132(%ebp), %edx michael@0: pushl %eax michael@0: movl %edx, -180(%ebp) michael@0: movl $2, %eax michael@0: pushl %edx michael@0: leal -136(%ebp), %edx michael@0: call freebl_cpuid michael@0: movl -136(%ebp), %eax michael@0: movl %eax, %edi michael@0: andl $15, %edi michael@0: xorl %esi, %esi michael@0: addl $12, %esp michael@0: leal -140(%ebp), %edx michael@0: cmpl %edi, %esi michael@0: movl %edx, -176(%ebp) michael@0: jl .L40 michael@0: jmp .L48 michael@0: .align 4 michael@0: .L49: michael@0: movl -136(%ebp), %eax michael@0: .L40: michael@0: testl %eax, %eax michael@0: js .L35 michael@0: xorb %al, %al michael@0: pushl -176(%ebp) michael@0: leal -144(%ebp), %edx michael@0: call getIntelRegisterCacheLineSize michael@0: popl %eax michael@0: .L35: michael@0: movl -132(%ebp), %eax michael@0: testl %eax, %eax michael@0: js .L36 michael@0: pushl -176(%ebp) michael@0: leal -144(%ebp), %edx michael@0: call getIntelRegisterCacheLineSize michael@0: popl %eax michael@0: .L36: michael@0: movl -128(%ebp), %eax michael@0: testl %eax, %eax michael@0: js .L37 michael@0: pushl -176(%ebp) michael@0: leal -144(%ebp), %edx michael@0: call getIntelRegisterCacheLineSize michael@0: popl %eax michael@0: .L37: michael@0: movl -124(%ebp), %eax michael@0: testl %eax, %eax michael@0: js .L38 michael@0: pushl -176(%ebp) michael@0: leal -144(%ebp), %edx michael@0: call getIntelRegisterCacheLineSize michael@0: popl %eax michael@0: .L38: michael@0: incl %esi michael@0: cmpl %edi, %esi michael@0: je .L34 michael@0: pushl -188(%ebp) michael@0: pushl -184(%ebp) michael@0: pushl -180(%ebp) michael@0: leal -136(%ebp), %edx michael@0: movl $2, %eax michael@0: call freebl_cpuid michael@0: addl $12, %esp michael@0: .L34: michael@0: cmpl %edi, %esi michael@0: jl .L49 michael@0: .L48: michael@0: movl -140(%ebp), %eax michael@0: .L41: michael@0: testl %eax, %eax michael@0: jne .L44 michael@0: movb $32, %al michael@0: .L44: michael@0: leal -12(%ebp), %esp michael@0: popl %ebx michael@0: popl %esi michael@0: movl %eax, %edx michael@0: movl %edx, %eax michael@0: popl %edi michael@0: leave michael@0: ret michael@0: .L29: michael@0: leal -148(%ebp), %eax michael@0: movl %eax, -192(%ebp) michael@0: movl $0, -172(%ebp) michael@0: leal -152(%ebp), %edi michael@0: pushl %eax michael@0: pushl %edi michael@0: leal -156(%ebp), %esi michael@0: pushl %esi michael@0: leal -160(%ebp), %edx michael@0: movl $-2147483648, %eax michael@0: call freebl_cpuid michael@0: addl $12, %esp michael@0: cmpl $-2147483644, -160(%ebp) michael@0: ja .L51 michael@0: .L42: michael@0: movl -172(%ebp), %eax michael@0: jmp .L41 michael@0: .L51: michael@0: pushl -192(%ebp) michael@0: pushl %edi michael@0: pushl %esi michael@0: leal -160(%ebp), %edx michael@0: movl $-2147483643, %eax michael@0: call freebl_cpuid michael@0: movzbl -152(%ebp), %edx michael@0: addl $12, %esp michael@0: movl %edx, -172(%ebp) michael@0: jmp .L42 michael@0: .size s_mpi_getProcessorLineSize, .-s_mpi_getProcessorLineSize