mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 12:25:53 +00:00
Begin building mpcpucache.c. On Sun Studio platforms, build from two
new .s files. Bug 298630. r=rrelyea.
This commit is contained in:
parent
f074905cfd
commit
ac287b2f5a
@ -333,9 +333,10 @@ else
|
||||
MPI_SRCS += mp_comba.c
|
||||
else
|
||||
ASFILES = arcfour-amd64-sun.s mpi_amd64_sun.s sha-fast-amd64-sun.s
|
||||
ASFILES += mp_comba_amd64_sun.s
|
||||
ASFILES += mp_comba_amd64_sun.s mpcpucache_amd64.s
|
||||
ASFLAGS += -xarch=generic64 -K PIC
|
||||
SHA_SRCS =
|
||||
MPCPU_SRCS =
|
||||
endif
|
||||
DEFINES += -DNSS_BEVAND_ARCFOUR -DMPI_AMD64 -DMP_ASSEMBLY_MULTIPLY
|
||||
DEFINES += -DNSS_USE_COMBA
|
||||
@ -347,6 +348,10 @@ else
|
||||
DEFINES += -DMP_ASSEMBLY_MULTIPLY -DMP_ASSEMBLY_SQUARE
|
||||
DEFINES += -DMP_ASSEMBLY_DIV_2DX1D
|
||||
ASFILES = mpi_i86pc.s
|
||||
ifndef NS_USE_GCC
|
||||
MPCPU_SRCS =
|
||||
ASFILES += mpcpucache_x86.s
|
||||
endif
|
||||
endif
|
||||
endif # Solaris for non-sparc family CPUs
|
||||
endif # target == SunOS
|
||||
|
@ -113,6 +113,7 @@ else
|
||||
ECL_SRCS = $(NULL)
|
||||
endif
|
||||
SHA_SRCS = sha_fast.c
|
||||
MPCPU_SRCS = mpcpucache.c
|
||||
|
||||
CSRCS = \
|
||||
freeblver.c \
|
||||
@ -140,6 +141,7 @@ CSRCS = \
|
||||
shvfy.c \
|
||||
tlsprfalg.c \
|
||||
$(MPI_SRCS) \
|
||||
$(MPCPU_SRCS) \
|
||||
$(ECL_SRCS) \
|
||||
$(NULL)
|
||||
|
||||
|
891
security/nss/lib/freebl/mpi/mpcpucache_amd64.s
Normal file
891
security/nss/lib/freebl/mpi/mpcpucache_amd64.s
Normal file
@ -0,0 +1,891 @@
|
||||
//* ***** 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 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
|
||||
.type cpuid, @function
|
||||
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 cpuid, .-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 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 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 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 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 cpuid
|
||||
movzbq -224(%rbp), %rbx
|
||||
jmp .L32
|
||||
.LFE7:
|
||||
.size s_mpi_getProcessorLineSize, .-s_mpi_getProcessorLineSize
|
931
security/nss/lib/freebl/mpi/mpcpucache_x86.s
Normal file
931
security/nss/lib/freebl/mpi/mpcpucache_x86.s
Normal file
@ -0,0 +1,931 @@
|
||||
//* ***** 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 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, 40
|
||||
manMap:
|
||||
.long .LC0
|
||||
.long .LC1
|
||||
.long .LC2
|
||||
.long .LC3
|
||||
.long .LC4
|
||||
.long .LC5
|
||||
.long .LC6
|
||||
.long .LC7
|
||||
.long .LC8
|
||||
.long .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 4
|
||||
.type cpuid, @function
|
||||
cpuid:
|
||||
pushl %ebp
|
||||
pushl %edi
|
||||
pushl %esi
|
||||
subl $8, %esp
|
||||
movl %edx, %ebp
|
||||
/APP
|
||||
pushl %ebx
|
||||
cpuid
|
||||
mov %ebx,%esi
|
||||
popl %ebx
|
||||
|
||||
/NO_APP
|
||||
movl %eax, (%ebp)
|
||||
movl 24(%esp), %eax
|
||||
movl %esi, (%eax)
|
||||
movl 28(%esp), %eax
|
||||
movl %ecx, (%eax)
|
||||
movl 32(%esp), %eax
|
||||
movl %edx, (%eax)
|
||||
addl $8, %esp
|
||||
popl %esi
|
||||
popl %edi
|
||||
popl %ebp
|
||||
ret
|
||||
.size cpuid, .-cpuid
|
||||
.align 4
|
||||
.type changeFlag, @function
|
||||
changeFlag:
|
||||
/APP
|
||||
pushfl
|
||||
popl %edx
|
||||
movl %edx,%ecx
|
||||
xorl %eax,%edx
|
||||
pushl %edx
|
||||
popfl
|
||||
pushfl
|
||||
popl %edx
|
||||
pushl %ecx
|
||||
popfl
|
||||
|
||||
/NO_APP
|
||||
xorl %ecx, %edx
|
||||
movl %edx, %eax
|
||||
ret
|
||||
.size changeFlag, .-changeFlag
|
||||
.align 4
|
||||
.type getIntelCacheEntryLineSize, @function
|
||||
getIntelCacheEntryLineSize:
|
||||
pushl %edi
|
||||
pushl %esi
|
||||
pushl %ebx
|
||||
call .L17
|
||||
.L17:
|
||||
popl %ebx
|
||||
addl $_GLOBAL_OFFSET_TABLE_+[.-.L17], %ebx
|
||||
movzbl CacheMap@GOTOFF(%ebx,%eax,2), %ecx
|
||||
movb 1+CacheMap@GOTOFF(%ebx,%eax,2), %al
|
||||
testb %al, %al
|
||||
movl 16(%esp), %edi
|
||||
je .L3
|
||||
cmpl $6, %ecx
|
||||
je .L6
|
||||
cmpl $8, %ecx
|
||||
je .L6
|
||||
movl (%edx), %esi
|
||||
cmpl $1, %esi
|
||||
jg .L15
|
||||
.L8:
|
||||
cmpl $2, %esi
|
||||
jle .L3
|
||||
cmpl $12, %ecx
|
||||
je .L12
|
||||
cmpl $14, %ecx
|
||||
je .L12
|
||||
.align 4
|
||||
.L3:
|
||||
popl %ebx
|
||||
popl %esi
|
||||
popl %edi
|
||||
ret
|
||||
.align 4
|
||||
.L6:
|
||||
movzbl %al, %eax
|
||||
movl $1, (%edx)
|
||||
movl %eax, (%edi)
|
||||
.L16:
|
||||
popl %ebx
|
||||
popl %esi
|
||||
popl %edi
|
||||
ret
|
||||
.align 4
|
||||
.L15:
|
||||
cmpl $9, %ecx
|
||||
je .L9
|
||||
cmpl $11, %ecx
|
||||
jne .L8
|
||||
.L9:
|
||||
movzbl %al, %eax
|
||||
movl $2, (%edx)
|
||||
movl %eax, (%edi)
|
||||
jmp .L16
|
||||
.L12:
|
||||
movzbl %al, %eax
|
||||
movl $3, (%edx)
|
||||
movl %eax, (%edi)
|
||||
jmp .L16
|
||||
.size getIntelCacheEntryLineSize, .-getIntelCacheEntryLineSize
|
||||
.align 4
|
||||
.type getIntelRegisterCacheLineSize, @function
|
||||
getIntelRegisterCacheLineSize:
|
||||
pushl %ebp
|
||||
movl %esp, %ebp
|
||||
pushl %edi
|
||||
pushl %esi
|
||||
pushl %ecx
|
||||
movl 8(%ebp), %edi
|
||||
movl %eax, %esi
|
||||
movl %edx, -12(%ebp)
|
||||
shrl $24, %eax
|
||||
pushl %edi
|
||||
call getIntelCacheEntryLineSize
|
||||
movl %esi, %eax
|
||||
pushl %edi
|
||||
shrl $16, %eax
|
||||
movl -12(%ebp), %edx
|
||||
andl $255, %eax
|
||||
call getIntelCacheEntryLineSize
|
||||
pushl %edi
|
||||
movl %esi, %edx
|
||||
movzbl %dh, %eax
|
||||
movl -12(%ebp), %edx
|
||||
call getIntelCacheEntryLineSize
|
||||
andl $255, %esi
|
||||
movl %edi, 8(%ebp)
|
||||
movl -12(%ebp), %edx
|
||||
addl $12, %esp
|
||||
leal -8(%ebp), %esp
|
||||
movl %esi, %eax
|
||||
popl %esi
|
||||
popl %edi
|
||||
leave
|
||||
jmp getIntelCacheEntryLineSize
|
||||
.size getIntelRegisterCacheLineSize, .-getIntelRegisterCacheLineSize
|
||||
.align 4
|
||||
.globl s_mpi_getProcessorLineSize
|
||||
.type s_mpi_getProcessorLineSize, @function
|
||||
s_mpi_getProcessorLineSize:
|
||||
pushl %ebp
|
||||
movl %esp, %ebp
|
||||
pushl %edi
|
||||
pushl %esi
|
||||
pushl %ebx
|
||||
subl $188, %esp
|
||||
call .L52
|
||||
.L52:
|
||||
popl %ebx
|
||||
addl $_GLOBAL_OFFSET_TABLE_+[.-.L52], %ebx
|
||||
movl $9, -168(%ebp)
|
||||
movl $262144, %eax
|
||||
call changeFlag
|
||||
xorl %edx, %edx
|
||||
testl %eax, %eax
|
||||
jne .L50
|
||||
.L19:
|
||||
leal -12(%ebp), %esp
|
||||
popl %ebx
|
||||
popl %esi
|
||||
movl %edx, %eax
|
||||
popl %edi
|
||||
leave
|
||||
ret
|
||||
.align 4
|
||||
.L50:
|
||||
movl $2097152, %eax
|
||||
call changeFlag
|
||||
testl %eax, %eax
|
||||
movl $32, %edx
|
||||
je .L19
|
||||
leal -108(%ebp), %eax
|
||||
pushl %eax
|
||||
leal -112(%ebp), %eax
|
||||
pushl %eax
|
||||
leal -116(%ebp), %eax
|
||||
pushl %eax
|
||||
leal -120(%ebp), %edx
|
||||
xorl %eax, %eax
|
||||
call cpuid
|
||||
movl -120(%ebp), %eax
|
||||
movl %eax, -164(%ebp)
|
||||
movl -116(%ebp), %eax
|
||||
movl %eax, -104(%ebp)
|
||||
movl -108(%ebp), %eax
|
||||
movl %eax, -100(%ebp)
|
||||
movl -112(%ebp), %eax
|
||||
movl %eax, -96(%ebp)
|
||||
movb $0, -92(%ebp)
|
||||
xorl %esi, %esi
|
||||
addl $12, %esp
|
||||
leal -104(%ebp), %edi
|
||||
.align 4
|
||||
.L28:
|
||||
subl $8, %esp
|
||||
pushl %edi
|
||||
pushl manMap@GOTOFF(%ebx,%esi,4)
|
||||
call strcmp@PLT
|
||||
addl $16, %esp
|
||||
testl %eax, %eax
|
||||
jne .L26
|
||||
movl %esi, -168(%ebp)
|
||||
.L26:
|
||||
incl %esi
|
||||
cmpl $9, %esi
|
||||
jle .L28
|
||||
movl -168(%ebp), %eax
|
||||
testl %eax, %eax
|
||||
jne .L29
|
||||
xorl %eax, %eax
|
||||
cmpl $1, -164(%ebp)
|
||||
movl $4, -144(%ebp)
|
||||
movl $0, -140(%ebp)
|
||||
jle .L41
|
||||
leal -124(%ebp), %edx
|
||||
movl %edx, -188(%ebp)
|
||||
leal -128(%ebp), %eax
|
||||
pushl %edx
|
||||
movl %eax, -184(%ebp)
|
||||
leal -132(%ebp), %edx
|
||||
pushl %eax
|
||||
movl %edx, -180(%ebp)
|
||||
movl $2, %eax
|
||||
pushl %edx
|
||||
leal -136(%ebp), %edx
|
||||
call cpuid
|
||||
movl -136(%ebp), %eax
|
||||
movl %eax, %edi
|
||||
andl $15, %edi
|
||||
xorl %esi, %esi
|
||||
addl $12, %esp
|
||||
leal -140(%ebp), %edx
|
||||
cmpl %edi, %esi
|
||||
movl %edx, -176(%ebp)
|
||||
jl .L40
|
||||
jmp .L48
|
||||
.align 4
|
||||
.L49:
|
||||
movl -136(%ebp), %eax
|
||||
.L40:
|
||||
testl %eax, %eax
|
||||
js .L35
|
||||
xorb %al, %al
|
||||
pushl -176(%ebp)
|
||||
leal -144(%ebp), %edx
|
||||
call getIntelRegisterCacheLineSize
|
||||
popl %eax
|
||||
.L35:
|
||||
movl -132(%ebp), %eax
|
||||
testl %eax, %eax
|
||||
js .L36
|
||||
pushl -176(%ebp)
|
||||
leal -144(%ebp), %edx
|
||||
call getIntelRegisterCacheLineSize
|
||||
popl %eax
|
||||
.L36:
|
||||
movl -128(%ebp), %eax
|
||||
testl %eax, %eax
|
||||
js .L37
|
||||
pushl -176(%ebp)
|
||||
leal -144(%ebp), %edx
|
||||
call getIntelRegisterCacheLineSize
|
||||
popl %eax
|
||||
.L37:
|
||||
movl -124(%ebp), %eax
|
||||
testl %eax, %eax
|
||||
js .L38
|
||||
pushl -176(%ebp)
|
||||
leal -144(%ebp), %edx
|
||||
call getIntelRegisterCacheLineSize
|
||||
popl %eax
|
||||
.L38:
|
||||
incl %esi
|
||||
cmpl %edi, %esi
|
||||
je .L34
|
||||
pushl -188(%ebp)
|
||||
pushl -184(%ebp)
|
||||
pushl -180(%ebp)
|
||||
leal -136(%ebp), %edx
|
||||
movl $2, %eax
|
||||
call cpuid
|
||||
addl $12, %esp
|
||||
.L34:
|
||||
cmpl %edi, %esi
|
||||
jl .L49
|
||||
.L48:
|
||||
movl -140(%ebp), %eax
|
||||
.L41:
|
||||
testl %eax, %eax
|
||||
jne .L44
|
||||
movb $32, %al
|
||||
.L44:
|
||||
leal -12(%ebp), %esp
|
||||
popl %ebx
|
||||
popl %esi
|
||||
movl %eax, %edx
|
||||
movl %edx, %eax
|
||||
popl %edi
|
||||
leave
|
||||
ret
|
||||
.L29:
|
||||
leal -148(%ebp), %eax
|
||||
movl %eax, -192(%ebp)
|
||||
movl $0, -172(%ebp)
|
||||
leal -152(%ebp), %edi
|
||||
pushl %eax
|
||||
pushl %edi
|
||||
leal -156(%ebp), %esi
|
||||
pushl %esi
|
||||
leal -160(%ebp), %edx
|
||||
movl $-2147483648, %eax
|
||||
call cpuid
|
||||
addl $12, %esp
|
||||
cmpl $-2147483644, -160(%ebp)
|
||||
ja .L51
|
||||
.L42:
|
||||
movl -172(%ebp), %eax
|
||||
jmp .L41
|
||||
.L51:
|
||||
pushl -192(%ebp)
|
||||
pushl %edi
|
||||
pushl %esi
|
||||
leal -160(%ebp), %edx
|
||||
movl $-2147483643, %eax
|
||||
call cpuid
|
||||
movzbl -152(%ebp), %edx
|
||||
addl $12, %esp
|
||||
movl %edx, -172(%ebp)
|
||||
jmp .L42
|
||||
.size s_mpi_getProcessorLineSize, .-s_mpi_getProcessorLineSize
|
Loading…
Reference in New Issue
Block a user