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, 80 michael@0: manMap: michael@0: .quad .LC0 michael@0: .quad .LC1 michael@0: .quad .LC2 michael@0: .quad .LC3 michael@0: .quad .LC4 michael@0: .quad .LC5 michael@0: .quad .LC6 michael@0: .quad .LC7 michael@0: .quad .LC8 michael@0: .quad .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 16 michael@0: .globl freebl_cpuid michael@0: .type freebl_cpuid, @function michael@0: freebl_cpuid: michael@0: .LFB2: michael@0: movq %rdx, %r10 michael@0: pushq %rbx michael@0: .LCFI0: michael@0: movq %rcx, %r11 michael@0: movq %rdi, %rax michael@0: /APP michael@0: cpuid michael@0: michael@0: /NO_APP michael@0: movq %rax, (%rsi) michael@0: movq %rbx, (%r10) michael@0: popq %rbx michael@0: movq %rcx, (%r11) michael@0: movq %rdx, (%r8) michael@0: ret michael@0: .LFE2: michael@0: .size freebl_cpuid, .-freebl_cpuid michael@0: .align 16 michael@0: .type getIntelCacheEntryLineSize, @function michael@0: getIntelCacheEntryLineSize: michael@0: .LFB3: michael@0: leaq CacheMap(%rip), %r9 michael@0: movq %rdx, %r10 michael@0: movzbl 1(%r9,%rdi,2), %ecx michael@0: movzbl (%r9,%rdi,2), %r8d michael@0: testb %cl, %cl michael@0: je .L2 michael@0: cmpl $6, %r8d michael@0: sete %dl michael@0: cmpl $8, %r8d michael@0: sete %al michael@0: orl %edx, %eax michael@0: testb $1, %al michael@0: je .L4 michael@0: movl $1, (%rsi) michael@0: .L9: michael@0: movzbl %cl, %eax michael@0: movq %rax, (%r10) michael@0: ret michael@0: .align 16 michael@0: .L4: michael@0: movl (%rsi), %r11d michael@0: cmpl $1, %r11d michael@0: jg .L11 michael@0: .L6: michael@0: cmpl $2, %r11d michael@0: jle .L2 michael@0: cmpl $12, %r8d michael@0: sete %dl michael@0: cmpl $14, %r8d michael@0: sete %al michael@0: orl %edx, %eax michael@0: testb $1, %al michael@0: je .L2 michael@0: movzbq 1(%r9,%rdi,2), %rax michael@0: movl $3, (%rsi) michael@0: movq %rax, (%r10) michael@0: .align 16 michael@0: .L2: michael@0: rep ; ret michael@0: .align 16 michael@0: .L11: michael@0: cmpl $9, %r8d michael@0: sete %dl michael@0: cmpl $11, %r8d michael@0: sete %al michael@0: orl %edx, %eax michael@0: testb $1, %al michael@0: je .L6 michael@0: movl $2, (%rsi) michael@0: jmp .L9 michael@0: .LFE3: michael@0: .size getIntelCacheEntryLineSize, .-getIntelCacheEntryLineSize michael@0: .align 16 michael@0: .type getIntelRegisterCacheLineSize, @function michael@0: getIntelRegisterCacheLineSize: michael@0: .LFB4: michael@0: pushq %rbp michael@0: .LCFI1: michael@0: movq %rsp, %rbp michael@0: .LCFI2: michael@0: movq %rbx, -24(%rbp) michael@0: .LCFI3: michael@0: movq %rdi, %rbx michael@0: shrq $24, %rdi michael@0: movq %r12, -16(%rbp) michael@0: .LCFI4: michael@0: movq %r13, -8(%rbp) michael@0: .LCFI5: michael@0: andl $255, %edi michael@0: subq $24, %rsp michael@0: .LCFI6: michael@0: movq %rsi, %r13 michael@0: movq %rdx, %r12 michael@0: call getIntelCacheEntryLineSize michael@0: movq %rbx, %rdi michael@0: movq %r12, %rdx michael@0: movq %r13, %rsi michael@0: shrq $16, %rdi michael@0: andl $255, %edi michael@0: call getIntelCacheEntryLineSize michael@0: movq %rbx, %rdi michael@0: movq %r12, %rdx michael@0: movq %r13, %rsi michael@0: shrq $8, %rdi michael@0: andl $255, %ebx michael@0: andl $255, %edi michael@0: call getIntelCacheEntryLineSize michael@0: movq %r12, %rdx michael@0: movq %r13, %rsi michael@0: movq %rbx, %rdi michael@0: movq 8(%rsp), %r12 michael@0: movq (%rsp), %rbx michael@0: movq 16(%rsp), %r13 michael@0: leave michael@0: jmp getIntelCacheEntryLineSize michael@0: .LFE4: michael@0: .size getIntelRegisterCacheLineSize, .-getIntelRegisterCacheLineSize michael@0: .align 16 michael@0: .globl s_mpi_getProcessorLineSize michael@0: .type s_mpi_getProcessorLineSize, @function michael@0: s_mpi_getProcessorLineSize: michael@0: .LFB7: michael@0: pushq %rbp michael@0: .LCFI7: michael@0: xorl %edi, %edi michael@0: movq %rsp, %rbp michael@0: .LCFI8: michael@0: pushq %r15 michael@0: .LCFI9: michael@0: leaq -136(%rbp), %r8 michael@0: leaq -144(%rbp), %rcx michael@0: leaq -152(%rbp), %rdx michael@0: pushq %r14 michael@0: .LCFI10: michael@0: leaq -160(%rbp), %rsi michael@0: leaq -128(%rbp), %r14 michael@0: pushq %r13 michael@0: .LCFI11: michael@0: leaq manMap(%rip), %r13 michael@0: pushq %r12 michael@0: .LCFI12: michael@0: movl $9, %r12d michael@0: pushq %rbx michael@0: .LCFI13: michael@0: xorl %ebx, %ebx michael@0: subq $200, %rsp michael@0: .LCFI14: michael@0: call freebl_cpuid michael@0: movq -152(%rbp), %rax michael@0: movq -160(%rbp), %r15 michael@0: movb $0, -116(%rbp) michael@0: movl %eax, -128(%rbp) michael@0: movq -136(%rbp), %rax michael@0: movl %eax, -124(%rbp) michael@0: movq -144(%rbp), %rax michael@0: movl %eax, -120(%rbp) michael@0: .align 16 michael@0: .L18: michael@0: movslq %ebx,%rax michael@0: movq %r14, %rsi michael@0: movq (%r13,%rax,8), %rdi michael@0: call strcmp@PLT michael@0: testl %eax, %eax michael@0: cmove %ebx, %r12d michael@0: incl %ebx michael@0: cmpl $9, %ebx michael@0: jle .L18 michael@0: testl %r12d, %r12d michael@0: jne .L19 michael@0: xorl %eax, %eax michael@0: decl %r15d michael@0: movl $4, -204(%rbp) michael@0: movq $0, -200(%rbp) michael@0: jle .L21 michael@0: leaq -168(%rbp), %r8 michael@0: leaq -176(%rbp), %rcx michael@0: leaq -184(%rbp), %rdx michael@0: leaq -192(%rbp), %rsi michael@0: movl $2, %edi michael@0: xorl %ebx, %ebx michael@0: call freebl_cpuid michael@0: movq -192(%rbp), %rdi michael@0: movl %edi, %r12d michael@0: andl $15, %r12d michael@0: cmpl %r12d, %ebx michael@0: jl .L30 michael@0: jmp .L38 michael@0: .align 16 michael@0: .L25: michael@0: movq -184(%rbp), %rdi michael@0: testl $2147483648, %edi michael@0: je .L40 michael@0: .L26: michael@0: movq -176(%rbp), %rdi michael@0: testl $2147483648, %edi michael@0: je .L41 michael@0: .L27: michael@0: movq -168(%rbp), %rdi michael@0: testl $2147483648, %edi michael@0: je .L42 michael@0: .L28: michael@0: incl %ebx michael@0: cmpl %r12d, %ebx michael@0: je .L24 michael@0: leaq -168(%rbp), %r8 michael@0: leaq -176(%rbp), %rcx michael@0: leaq -184(%rbp), %rdx michael@0: leaq -192(%rbp), %rsi michael@0: movl $2, %edi michael@0: call freebl_cpuid michael@0: .L24: michael@0: cmpl %r12d, %ebx michael@0: jge .L38 michael@0: movq -192(%rbp), %rdi michael@0: .L30: michael@0: testl $2147483648, %edi michael@0: jne .L25 michael@0: leaq -200(%rbp), %rdx michael@0: leaq -204(%rbp), %rsi michael@0: andl $4294967040, %edi michael@0: call getIntelRegisterCacheLineSize michael@0: movq -184(%rbp), %rdi michael@0: testl $2147483648, %edi michael@0: jne .L26 michael@0: .L40: michael@0: leaq -200(%rbp), %rdx michael@0: leaq -204(%rbp), %rsi michael@0: call getIntelRegisterCacheLineSize michael@0: movq -176(%rbp), %rdi michael@0: testl $2147483648, %edi michael@0: jne .L27 michael@0: .L41: michael@0: leaq -200(%rbp), %rdx michael@0: leaq -204(%rbp), %rsi michael@0: call getIntelRegisterCacheLineSize michael@0: movq -168(%rbp), %rdi michael@0: testl $2147483648, %edi michael@0: jne .L28 michael@0: .L42: michael@0: leaq -200(%rbp), %rdx michael@0: leaq -204(%rbp), %rsi michael@0: call getIntelRegisterCacheLineSize michael@0: jmp .L28 michael@0: .L38: michael@0: movq -200(%rbp), %rax michael@0: .L21: michael@0: movq %rax, %rdx michael@0: movl $32, %eax michael@0: testq %rdx, %rdx michael@0: cmoveq %rax, %rdx michael@0: addq $200, %rsp michael@0: popq %rbx michael@0: popq %r12 michael@0: popq %r13 michael@0: popq %r14 michael@0: popq %r15 michael@0: leave michael@0: movq %rdx, %rax michael@0: ret michael@0: .L19: michael@0: leaq -216(%rbp), %r8 michael@0: leaq -224(%rbp), %rcx michael@0: leaq -232(%rbp), %rdx michael@0: leaq -240(%rbp), %rsi michael@0: movl $2147483648, %edi michael@0: xorl %ebx, %ebx michael@0: call freebl_cpuid michael@0: movl $2147483652, %eax michael@0: cmpq %rax, -240(%rbp) michael@0: ja .L43 michael@0: .L32: michael@0: movq %rbx, %rdx michael@0: movl $32, %eax michael@0: testq %rdx, %rdx michael@0: cmoveq %rax, %rdx michael@0: addq $200, %rsp michael@0: popq %rbx michael@0: popq %r12 michael@0: popq %r13 michael@0: popq %r14 michael@0: popq %r15 michael@0: leave michael@0: movq %rdx, %rax michael@0: ret michael@0: .L43: michael@0: leaq -216(%rbp), %r8 michael@0: leaq -224(%rbp), %rcx michael@0: leaq -232(%rbp), %rdx michael@0: leaq -240(%rbp), %rsi michael@0: movl $2147483653, %edi michael@0: call freebl_cpuid michael@0: movzbq -224(%rbp), %rbx michael@0: jmp .L32 michael@0: .LFE7: michael@0: .size s_mpi_getProcessorLineSize, .-s_mpi_getProcessorLineSize