mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-15 04:00:12 +01:00
895 lines
12 KiB
ArmAsm
895 lines
12 KiB
ArmAsm
|
/ ***** BEGIN LICENSE BLOCK *****
|
||
|
/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||
|
/
|
||
|
/ The contents of this file are subject to the Mozilla Public License Version
|
||
|
/ 1.1 (the "License"); you may not use this file except in compliance with
|
||
|
/ the License. You may obtain a copy of the License at
|
||
|
/ http://www.mozilla.org/MPL/
|
||
|
/
|
||
|
/ Software distributed under the License is distributed on an "AS IS" basis,
|
||
|
/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||
|
/ for the specific language governing rights and limitations under the
|
||
|
/ License.
|
||
|
/
|
||
|
/ The Original Code is Red Hat code.
|
||
|
/
|
||
|
/ The Initial Developer of the Original Code is
|
||
|
/ Red Hat, Inc.
|
||
|
/ Portions created by the Initial Developer are Copyright (C) 2005
|
||
|
/ the Initial Developer. All Rights Reserved.
|
||
|
/
|
||
|
/ Contributor(s):
|
||
|
/ Robert Relyea <rrelyea@redhat.com>
|
||
|
/
|
||
|
/ Alternatively, the contents of this file may be used under the terms of
|
||
|
/ either the GNU General Public License Version 2 or later (the "GPL"), or
|
||
|
/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||
|
/ in which case the provisions of the GPL or the LGPL are applicable instead
|
||
|
/ of those above. If you wish to allow use of your version of this file only
|
||
|
/ under the terms of either the GPL or the LGPL, and not to allow others to
|
||
|
/ use your version of this file under the terms of the MPL, indicate your
|
||
|
/ decision by deleting the provisions above and replace them with the notice
|
||
|
/ and other provisions required by the GPL or the LGPL. If you do not delete
|
||
|
/ the provisions above, a recipient may use your version of this file under
|
||
|
/ the terms of any one of the MPL, the GPL or the LGPL.
|
||
|
/
|
||
|
/ ***** END LICENSE BLOCK *****
|
||
|
|
||
|
.file "mpcpucache.c"
|
||
|
/ .section .rodata.str1.1,"aMS",@progbits,1
|
||
|
.section .rodata
|
||
|
.LC0:
|
||
|
.string "GenuineIntel"
|
||
|
.LC1:
|
||
|
.string "AuthenticAMD"
|
||
|
.LC2:
|
||
|
.string "CyrixInstead"
|
||
|
.LC3:
|
||
|
.string "CentaurHauls"
|
||
|
.LC4:
|
||
|
.string "NexGenDriven"
|
||
|
.LC5:
|
||
|
.string "GenuineTMx86"
|
||
|
.LC6:
|
||
|
.string "RiseRiseRise"
|
||
|
.LC7:
|
||
|
.string "UMC UMC UMC "
|
||
|
.LC8:
|
||
|
.string "Sis Sis Sis "
|
||
|
.LC9:
|
||
|
.string "Geode by NSC"
|
||
|
.section .data.rel.ro.local,"aw",@progbits
|
||
|
.align 32
|
||
|
.type manMap, @object
|
||
|
.size manMap, 80
|
||
|
manMap:
|
||
|
.quad .LC0
|
||
|
.quad .LC1
|
||
|
.quad .LC2
|
||
|
.quad .LC3
|
||
|
.quad .LC4
|
||
|
.quad .LC5
|
||
|
.quad .LC6
|
||
|
.quad .LC7
|
||
|
.quad .LC8
|
||
|
.quad .LC9
|
||
|
.section .rodata
|
||
|
.align 32
|
||
|
.type CacheMap, @object
|
||
|
.size CacheMap, 512
|
||
|
CacheMap:
|
||
|
.byte 0
|
||
|
.byte 0
|
||
|
.byte 3
|
||
|
.byte 0
|
||
|
.byte 3
|
||
|
.byte 0
|
||
|
.byte 4
|
||
|
.byte 0
|
||
|
.byte 4
|
||
|
.zero 1
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 7
|
||
|
.byte 32
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 7
|
||
|
.byte 32
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 8
|
||
|
.byte 32
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 8
|
||
|
.byte 32
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 12
|
||
|
.byte 64
|
||
|
.byte 12
|
||
|
.byte 64
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 12
|
||
|
.byte 64
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 12
|
||
|
.byte 64
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 8
|
||
|
.byte 64
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 7
|
||
|
.byte 64
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 9
|
||
|
.byte 64
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 9
|
||
|
.byte 64
|
||
|
.byte 9
|
||
|
.byte 64
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 9
|
||
|
.byte 0
|
||
|
.byte 9
|
||
|
.byte 32
|
||
|
.byte 9
|
||
|
.byte 32
|
||
|
.byte 9
|
||
|
.byte 32
|
||
|
.byte 9
|
||
|
.byte 32
|
||
|
.byte 9
|
||
|
.byte 32
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 3
|
||
|
.byte 0
|
||
|
.byte 3
|
||
|
.byte 0
|
||
|
.byte 3
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 4
|
||
|
.byte 0
|
||
|
.byte 4
|
||
|
.byte 0
|
||
|
.byte 4
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 8
|
||
|
.byte 64
|
||
|
.byte 8
|
||
|
.byte 64
|
||
|
.byte 8
|
||
|
.byte 64
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 5
|
||
|
.byte 1
|
||
|
.byte 5
|
||
|
.byte 1
|
||
|
.byte 5
|
||
|
.byte 1
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 9
|
||
|
.byte 64
|
||
|
.byte 9
|
||
|
.byte 64
|
||
|
.byte 9
|
||
|
.byte 64
|
||
|
.byte 9
|
||
|
.byte 64
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 9
|
||
|
.byte 32
|
||
|
.byte 9
|
||
|
.byte 32
|
||
|
.byte 9
|
||
|
.byte 32
|
||
|
.byte 9
|
||
|
.byte 32
|
||
|
.byte 9
|
||
|
.byte 64
|
||
|
.byte 9
|
||
|
.byte 64
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 3
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 4
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.byte 1
|
||
|
.byte 0
|
||
|
.text
|
||
|
.align 16
|
||
|
.globl freebl_cpuid
|
||
|
.type freebl_cpuid, @function
|
||
|
freebl_cpuid:
|
||
|
.LFB2:
|
||
|
movq %rdx, %r10
|
||
|
pushq %rbx
|
||
|
.LCFI0:
|
||
|
movq %rcx, %r11
|
||
|
movq %rdi, %rax
|
||
|
/APP
|
||
|
cpuid
|
||
|
|
||
|
/NO_APP
|
||
|
movq %rax, (%rsi)
|
||
|
movq %rbx, (%r10)
|
||
|
popq %rbx
|
||
|
movq %rcx, (%r11)
|
||
|
movq %rdx, (%r8)
|
||
|
ret
|
||
|
.LFE2:
|
||
|
.size freebl_cpuid, .-freebl_cpuid
|
||
|
.align 16
|
||
|
.type getIntelCacheEntryLineSize, @function
|
||
|
getIntelCacheEntryLineSize:
|
||
|
.LFB3:
|
||
|
leaq CacheMap(%rip), %r9
|
||
|
movq %rdx, %r10
|
||
|
movzbl 1(%r9,%rdi,2), %ecx
|
||
|
movzbl (%r9,%rdi,2), %r8d
|
||
|
testb %cl, %cl
|
||
|
je .L2
|
||
|
cmpl $6, %r8d
|
||
|
sete %dl
|
||
|
cmpl $8, %r8d
|
||
|
sete %al
|
||
|
orl %edx, %eax
|
||
|
testb $1, %al
|
||
|
je .L4
|
||
|
movl $1, (%rsi)
|
||
|
.L9:
|
||
|
movzbl %cl, %eax
|
||
|
movq %rax, (%r10)
|
||
|
ret
|
||
|
.align 16
|
||
|
.L4:
|
||
|
movl (%rsi), %r11d
|
||
|
cmpl $1, %r11d
|
||
|
jg .L11
|
||
|
.L6:
|
||
|
cmpl $2, %r11d
|
||
|
jle .L2
|
||
|
cmpl $12, %r8d
|
||
|
sete %dl
|
||
|
cmpl $14, %r8d
|
||
|
sete %al
|
||
|
orl %edx, %eax
|
||
|
testb $1, %al
|
||
|
je .L2
|
||
|
movzbq 1(%r9,%rdi,2), %rax
|
||
|
movl $3, (%rsi)
|
||
|
movq %rax, (%r10)
|
||
|
.align 16
|
||
|
.L2:
|
||
|
rep ; ret
|
||
|
.align 16
|
||
|
.L11:
|
||
|
cmpl $9, %r8d
|
||
|
sete %dl
|
||
|
cmpl $11, %r8d
|
||
|
sete %al
|
||
|
orl %edx, %eax
|
||
|
testb $1, %al
|
||
|
je .L6
|
||
|
movl $2, (%rsi)
|
||
|
jmp .L9
|
||
|
.LFE3:
|
||
|
.size getIntelCacheEntryLineSize, .-getIntelCacheEntryLineSize
|
||
|
.align 16
|
||
|
.type getIntelRegisterCacheLineSize, @function
|
||
|
getIntelRegisterCacheLineSize:
|
||
|
.LFB4:
|
||
|
pushq %rbp
|
||
|
.LCFI1:
|
||
|
movq %rsp, %rbp
|
||
|
.LCFI2:
|
||
|
movq %rbx, -24(%rbp)
|
||
|
.LCFI3:
|
||
|
movq %rdi, %rbx
|
||
|
shrq $24, %rdi
|
||
|
movq %r12, -16(%rbp)
|
||
|
.LCFI4:
|
||
|
movq %r13, -8(%rbp)
|
||
|
.LCFI5:
|
||
|
andl $255, %edi
|
||
|
subq $24, %rsp
|
||
|
.LCFI6:
|
||
|
movq %rsi, %r13
|
||
|
movq %rdx, %r12
|
||
|
call getIntelCacheEntryLineSize
|
||
|
movq %rbx, %rdi
|
||
|
movq %r12, %rdx
|
||
|
movq %r13, %rsi
|
||
|
shrq $16, %rdi
|
||
|
andl $255, %edi
|
||
|
call getIntelCacheEntryLineSize
|
||
|
movq %rbx, %rdi
|
||
|
movq %r12, %rdx
|
||
|
movq %r13, %rsi
|
||
|
shrq $8, %rdi
|
||
|
andl $255, %ebx
|
||
|
andl $255, %edi
|
||
|
call getIntelCacheEntryLineSize
|
||
|
movq %r12, %rdx
|
||
|
movq %r13, %rsi
|
||
|
movq %rbx, %rdi
|
||
|
movq 8(%rsp), %r12
|
||
|
movq (%rsp), %rbx
|
||
|
movq 16(%rsp), %r13
|
||
|
leave
|
||
|
jmp getIntelCacheEntryLineSize
|
||
|
.LFE4:
|
||
|
.size getIntelRegisterCacheLineSize, .-getIntelRegisterCacheLineSize
|
||
|
.align 16
|
||
|
.globl s_mpi_getProcessorLineSize
|
||
|
.type s_mpi_getProcessorLineSize, @function
|
||
|
s_mpi_getProcessorLineSize:
|
||
|
.LFB7:
|
||
|
pushq %rbp
|
||
|
.LCFI7:
|
||
|
xorl %edi, %edi
|
||
|
movq %rsp, %rbp
|
||
|
.LCFI8:
|
||
|
pushq %r15
|
||
|
.LCFI9:
|
||
|
leaq -136(%rbp), %r8
|
||
|
leaq -144(%rbp), %rcx
|
||
|
leaq -152(%rbp), %rdx
|
||
|
pushq %r14
|
||
|
.LCFI10:
|
||
|
leaq -160(%rbp), %rsi
|
||
|
leaq -128(%rbp), %r14
|
||
|
pushq %r13
|
||
|
.LCFI11:
|
||
|
leaq manMap(%rip), %r13
|
||
|
pushq %r12
|
||
|
.LCFI12:
|
||
|
movl $9, %r12d
|
||
|
pushq %rbx
|
||
|
.LCFI13:
|
||
|
xorl %ebx, %ebx
|
||
|
subq $200, %rsp
|
||
|
.LCFI14:
|
||
|
call freebl_cpuid
|
||
|
movq -152(%rbp), %rax
|
||
|
movq -160(%rbp), %r15
|
||
|
movb $0, -116(%rbp)
|
||
|
movl %eax, -128(%rbp)
|
||
|
movq -136(%rbp), %rax
|
||
|
movl %eax, -124(%rbp)
|
||
|
movq -144(%rbp), %rax
|
||
|
movl %eax, -120(%rbp)
|
||
|
.align 16
|
||
|
.L18:
|
||
|
movslq %ebx,%rax
|
||
|
movq %r14, %rsi
|
||
|
movq (%r13,%rax,8), %rdi
|
||
|
call strcmp@PLT
|
||
|
testl %eax, %eax
|
||
|
cmove %ebx, %r12d
|
||
|
incl %ebx
|
||
|
cmpl $9, %ebx
|
||
|
jle .L18
|
||
|
testl %r12d, %r12d
|
||
|
jne .L19
|
||
|
xorl %eax, %eax
|
||
|
decl %r15d
|
||
|
movl $4, -204(%rbp)
|
||
|
movq $0, -200(%rbp)
|
||
|
jle .L21
|
||
|
leaq -168(%rbp), %r8
|
||
|
leaq -176(%rbp), %rcx
|
||
|
leaq -184(%rbp), %rdx
|
||
|
leaq -192(%rbp), %rsi
|
||
|
movl $2, %edi
|
||
|
xorl %ebx, %ebx
|
||
|
call freebl_cpuid
|
||
|
movq -192(%rbp), %rdi
|
||
|
movl %edi, %r12d
|
||
|
andl $15, %r12d
|
||
|
cmpl %r12d, %ebx
|
||
|
jl .L30
|
||
|
jmp .L38
|
||
|
.align 16
|
||
|
.L25:
|
||
|
movq -184(%rbp), %rdi
|
||
|
testl $2147483648, %edi
|
||
|
je .L40
|
||
|
.L26:
|
||
|
movq -176(%rbp), %rdi
|
||
|
testl $2147483648, %edi
|
||
|
je .L41
|
||
|
.L27:
|
||
|
movq -168(%rbp), %rdi
|
||
|
testl $2147483648, %edi
|
||
|
je .L42
|
||
|
.L28:
|
||
|
incl %ebx
|
||
|
cmpl %r12d, %ebx
|
||
|
je .L24
|
||
|
leaq -168(%rbp), %r8
|
||
|
leaq -176(%rbp), %rcx
|
||
|
leaq -184(%rbp), %rdx
|
||
|
leaq -192(%rbp), %rsi
|
||
|
movl $2, %edi
|
||
|
call freebl_cpuid
|
||
|
.L24:
|
||
|
cmpl %r12d, %ebx
|
||
|
jge .L38
|
||
|
movq -192(%rbp), %rdi
|
||
|
.L30:
|
||
|
testl $2147483648, %edi
|
||
|
jne .L25
|
||
|
leaq -200(%rbp), %rdx
|
||
|
leaq -204(%rbp), %rsi
|
||
|
andl $4294967040, %edi
|
||
|
call getIntelRegisterCacheLineSize
|
||
|
movq -184(%rbp), %rdi
|
||
|
testl $2147483648, %edi
|
||
|
jne .L26
|
||
|
.L40:
|
||
|
leaq -200(%rbp), %rdx
|
||
|
leaq -204(%rbp), %rsi
|
||
|
call getIntelRegisterCacheLineSize
|
||
|
movq -176(%rbp), %rdi
|
||
|
testl $2147483648, %edi
|
||
|
jne .L27
|
||
|
.L41:
|
||
|
leaq -200(%rbp), %rdx
|
||
|
leaq -204(%rbp), %rsi
|
||
|
call getIntelRegisterCacheLineSize
|
||
|
movq -168(%rbp), %rdi
|
||
|
testl $2147483648, %edi
|
||
|
jne .L28
|
||
|
.L42:
|
||
|
leaq -200(%rbp), %rdx
|
||
|
leaq -204(%rbp), %rsi
|
||
|
call getIntelRegisterCacheLineSize
|
||
|
jmp .L28
|
||
|
.L38:
|
||
|
movq -200(%rbp), %rax
|
||
|
.L21:
|
||
|
movq %rax, %rdx
|
||
|
movl $32, %eax
|
||
|
testq %rdx, %rdx
|
||
|
cmoveq %rax, %rdx
|
||
|
addq $200, %rsp
|
||
|
popq %rbx
|
||
|
popq %r12
|
||
|
popq %r13
|
||
|
popq %r14
|
||
|
popq %r15
|
||
|
leave
|
||
|
movq %rdx, %rax
|
||
|
ret
|
||
|
.L19:
|
||
|
leaq -216(%rbp), %r8
|
||
|
leaq -224(%rbp), %rcx
|
||
|
leaq -232(%rbp), %rdx
|
||
|
leaq -240(%rbp), %rsi
|
||
|
movl $2147483648, %edi
|
||
|
xorl %ebx, %ebx
|
||
|
call freebl_cpuid
|
||
|
movl $2147483652, %eax
|
||
|
cmpq %rax, -240(%rbp)
|
||
|
ja .L43
|
||
|
.L32:
|
||
|
movq %rbx, %rdx
|
||
|
movl $32, %eax
|
||
|
testq %rdx, %rdx
|
||
|
cmoveq %rax, %rdx
|
||
|
addq $200, %rsp
|
||
|
popq %rbx
|
||
|
popq %r12
|
||
|
popq %r13
|
||
|
popq %r14
|
||
|
popq %r15
|
||
|
leave
|
||
|
movq %rdx, %rax
|
||
|
ret
|
||
|
.L43:
|
||
|
leaq -216(%rbp), %r8
|
||
|
leaq -224(%rbp), %rcx
|
||
|
leaq -232(%rbp), %rdx
|
||
|
leaq -240(%rbp), %rsi
|
||
|
movl $2147483653, %edi
|
||
|
call freebl_cpuid
|
||
|
movzbq -224(%rbp), %rbx
|
||
|
jmp .L32
|
||
|
.LFE7:
|
||
|
.size s_mpi_getProcessorLineSize, .-s_mpi_getProcessorLineSize
|