Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 / This Source Code Form is subject to the terms of the Mozilla Public
2 / License, v. 2.0. If a copy of the MPL was not distributed with this
3 / file, You can obtain one at http://mozilla.org/MPL/2.0/.
5 .file "mpcpucache.c"
6 / .section .rodata.str1.1,"aMS",@progbits,1
7 .section .rodata
8 .LC0:
9 .string "GenuineIntel"
10 .LC1:
11 .string "AuthenticAMD"
12 .LC2:
13 .string "CyrixInstead"
14 .LC3:
15 .string "CentaurHauls"
16 .LC4:
17 .string "NexGenDriven"
18 .LC5:
19 .string "GenuineTMx86"
20 .LC6:
21 .string "RiseRiseRise"
22 .LC7:
23 .string "UMC UMC UMC "
24 .LC8:
25 .string "Sis Sis Sis "
26 .LC9:
27 .string "Geode by NSC"
28 .section .data.rel.ro.local,"aw",@progbits
29 .align 32
30 .type manMap, @object
31 .size manMap, 80
32 manMap:
33 .quad .LC0
34 .quad .LC1
35 .quad .LC2
36 .quad .LC3
37 .quad .LC4
38 .quad .LC5
39 .quad .LC6
40 .quad .LC7
41 .quad .LC8
42 .quad .LC9
43 .section .rodata
44 .align 32
45 .type CacheMap, @object
46 .size CacheMap, 512
47 CacheMap:
48 .byte 0
49 .byte 0
50 .byte 3
51 .byte 0
52 .byte 3
53 .byte 0
54 .byte 4
55 .byte 0
56 .byte 4
57 .zero 1
58 .byte 1
59 .byte 0
60 .byte 7
61 .byte 32
62 .byte 1
63 .byte 0
64 .byte 7
65 .byte 32
66 .byte 1
67 .byte 0
68 .byte 8
69 .byte 32
70 .byte 1
71 .byte 0
72 .byte 8
73 .byte 32
74 .byte 1
75 .byte 0
76 .byte 1
77 .byte 0
78 .byte 1
79 .byte 0
80 .byte 1
81 .byte 0
82 .byte 1
83 .byte 0
84 .byte 1
85 .byte 0
86 .byte 1
87 .byte 0
88 .byte 1
89 .byte 0
90 .byte 1
91 .byte 0
92 .byte 1
93 .byte 0
94 .byte 1
95 .byte 0
96 .byte 1
97 .byte 0
98 .byte 1
99 .byte 0
100 .byte 1
101 .byte 0
102 .byte 1
103 .byte 0
104 .byte 1
105 .byte 0
106 .byte 1
107 .byte 0
108 .byte 1
109 .byte 0
110 .byte 1
111 .byte 0
112 .byte 1
113 .byte 0
114 .byte 1
115 .byte 0
116 .byte 12
117 .byte 64
118 .byte 12
119 .byte 64
120 .byte 1
121 .byte 0
122 .byte 12
123 .byte 64
124 .byte 1
125 .byte 0
126 .byte 1
127 .byte 0
128 .byte 1
129 .byte 0
130 .byte 12
131 .byte 64
132 .byte 1
133 .byte 0
134 .byte 1
135 .byte 0
136 .byte 8
137 .byte 64
138 .byte 1
139 .byte 0
140 .byte 1
141 .byte 0
142 .byte 1
143 .byte 0
144 .byte 7
145 .byte 64
146 .byte 1
147 .byte 0
148 .byte 1
149 .byte 0
150 .byte 1
151 .byte 0
152 .byte 1
153 .byte 0
154 .byte 1
155 .byte 0
156 .byte 1
157 .byte 0
158 .byte 1
159 .byte 0
160 .byte 1
161 .byte 0
162 .byte 9
163 .byte 64
164 .byte 1
165 .byte 0
166 .byte 9
167 .byte 64
168 .byte 9
169 .byte 64
170 .byte 1
171 .byte 0
172 .byte 1
173 .byte 0
174 .byte 1
175 .byte 0
176 .byte 9
177 .byte 0
178 .byte 9
179 .byte 32
180 .byte 9
181 .byte 32
182 .byte 9
183 .byte 32
184 .byte 9
185 .byte 32
186 .byte 9
187 .byte 32
188 .byte 1
189 .byte 0
190 .byte 1
191 .byte 0
192 .byte 1
193 .byte 0
194 .byte 1
195 .byte 0
196 .byte 1
197 .byte 0
198 .byte 1
199 .byte 0
200 .byte 1
201 .byte 0
202 .byte 1
203 .byte 0
204 .byte 1
205 .byte 0
206 .byte 1
207 .byte 0
208 .byte 3
209 .byte 0
210 .byte 3
211 .byte 0
212 .byte 3
213 .byte 0
214 .byte 1
215 .byte 0
216 .byte 1
217 .byte 0
218 .byte 1
219 .byte 0
220 .byte 1
221 .byte 0
222 .byte 1
223 .byte 0
224 .byte 1
225 .byte 0
226 .byte 1
227 .byte 0
228 .byte 1
229 .byte 0
230 .byte 4
231 .byte 0
232 .byte 4
233 .byte 0
234 .byte 4
235 .byte 0
236 .byte 1
237 .byte 0
238 .byte 1
239 .byte 0
240 .byte 1
241 .byte 0
242 .byte 1
243 .byte 0
244 .byte 1
245 .byte 0
246 .byte 1
247 .byte 0
248 .byte 1
249 .byte 0
250 .byte 1
251 .byte 0
252 .byte 8
253 .byte 64
254 .byte 8
255 .byte 64
256 .byte 8
257 .byte 64
258 .byte 1
259 .byte 0
260 .byte 1
261 .byte 0
262 .byte 1
263 .byte 0
264 .byte 1
265 .byte 0
266 .byte 1
267 .byte 0
268 .byte 1
269 .byte 0
270 .byte 1
271 .byte 0
272 .byte 5
273 .byte 1
274 .byte 5
275 .byte 1
276 .byte 5
277 .byte 1
278 .byte 1
279 .byte 0
280 .byte 1
281 .byte 0
282 .byte 1
283 .byte 0
284 .byte 1
285 .byte 0
286 .byte 1
287 .byte 0
288 .byte 1
289 .byte 0
290 .byte 9
291 .byte 64
292 .byte 9
293 .byte 64
294 .byte 9
295 .byte 64
296 .byte 9
297 .byte 64
298 .byte 1
299 .byte 0
300 .byte 1
301 .byte 0
302 .byte 1
303 .byte 0
304 .byte 1
305 .byte 0
306 .byte 1
307 .byte 0
308 .byte 9
309 .byte 32
310 .byte 9
311 .byte 32
312 .byte 9
313 .byte 32
314 .byte 9
315 .byte 32
316 .byte 9
317 .byte 64
318 .byte 9
319 .byte 64
320 .byte 1
321 .byte 0
322 .byte 1
323 .byte 0
324 .byte 1
325 .byte 0
326 .byte 1
327 .byte 0
328 .byte 1
329 .byte 0
330 .byte 1
331 .byte 0
332 .byte 1
333 .byte 0
334 .byte 1
335 .byte 0
336 .byte 1
337 .byte 0
338 .byte 1
339 .byte 0
340 .byte 1
341 .byte 0
342 .byte 1
343 .byte 0
344 .byte 1
345 .byte 0
346 .byte 1
347 .byte 0
348 .byte 1
349 .byte 0
350 .byte 1
351 .byte 0
352 .byte 1
353 .byte 0
354 .byte 1
355 .byte 0
356 .byte 1
357 .byte 0
358 .byte 1
359 .byte 0
360 .byte 1
361 .byte 0
362 .byte 1
363 .byte 0
364 .byte 1
365 .byte 0
366 .byte 1
367 .byte 0
368 .byte 1
369 .byte 0
370 .byte 1
371 .byte 0
372 .byte 1
373 .byte 0
374 .byte 1
375 .byte 0
376 .byte 1
377 .byte 0
378 .byte 1
379 .byte 0
380 .byte 1
381 .byte 0
382 .byte 1
383 .byte 0
384 .byte 1
385 .byte 0
386 .byte 1
387 .byte 0
388 .byte 1
389 .byte 0
390 .byte 1
391 .byte 0
392 .byte 1
393 .byte 0
394 .byte 1
395 .byte 0
396 .byte 1
397 .byte 0
398 .byte 1
399 .byte 0
400 .byte 3
401 .byte 0
402 .byte 1
403 .byte 0
404 .byte 1
405 .byte 0
406 .byte 4
407 .byte 0
408 .byte 1
409 .byte 0
410 .byte 1
411 .byte 0
412 .byte 1
413 .byte 0
414 .byte 1
415 .byte 0
416 .byte 1
417 .byte 0
418 .byte 1
419 .byte 0
420 .byte 1
421 .byte 0
422 .byte 1
423 .byte 0
424 .byte 1
425 .byte 0
426 .byte 1
427 .byte 0
428 .byte 1
429 .byte 0
430 .byte 1
431 .byte 0
432 .byte 1
433 .byte 0
434 .byte 1
435 .byte 0
436 .byte 1
437 .byte 0
438 .byte 1
439 .byte 0
440 .byte 1
441 .byte 0
442 .byte 1
443 .byte 0
444 .byte 1
445 .byte 0
446 .byte 1
447 .byte 0
448 .byte 1
449 .byte 0
450 .byte 1
451 .byte 0
452 .byte 1
453 .byte 0
454 .byte 1
455 .byte 0
456 .byte 1
457 .byte 0
458 .byte 1
459 .byte 0
460 .byte 1
461 .byte 0
462 .byte 1
463 .byte 0
464 .byte 1
465 .byte 0
466 .byte 1
467 .byte 0
468 .byte 1
469 .byte 0
470 .byte 1
471 .byte 0
472 .byte 1
473 .byte 0
474 .byte 1
475 .byte 0
476 .byte 1
477 .byte 0
478 .byte 1
479 .byte 0
480 .byte 1
481 .byte 0
482 .byte 1
483 .byte 0
484 .byte 1
485 .byte 0
486 .byte 1
487 .byte 0
488 .byte 1
489 .byte 0
490 .byte 1
491 .byte 0
492 .byte 1
493 .byte 0
494 .byte 1
495 .byte 0
496 .byte 1
497 .byte 0
498 .byte 1
499 .byte 0
500 .byte 1
501 .byte 0
502 .byte 1
503 .byte 0
504 .byte 1
505 .byte 0
506 .byte 1
507 .byte 0
508 .byte 1
509 .byte 0
510 .byte 1
511 .byte 0
512 .byte 1
513 .byte 0
514 .byte 1
515 .byte 0
516 .byte 1
517 .byte 0
518 .byte 1
519 .byte 0
520 .byte 1
521 .byte 0
522 .byte 1
523 .byte 0
524 .byte 1
525 .byte 0
526 .byte 1
527 .byte 0
528 .byte 1
529 .byte 0
530 .byte 1
531 .byte 0
532 .byte 1
533 .byte 0
534 .byte 1
535 .byte 0
536 .byte 1
537 .byte 0
538 .byte 1
539 .byte 0
540 .byte 1
541 .byte 0
542 .byte 1
543 .byte 0
544 .byte 1
545 .byte 0
546 .byte 1
547 .byte 0
548 .byte 1
549 .byte 0
550 .byte 1
551 .byte 0
552 .byte 1
553 .byte 0
554 .byte 1
555 .byte 0
556 .byte 1
557 .byte 0
558 .byte 1
559 .byte 0
560 .text
561 .align 16
562 .globl freebl_cpuid
563 .type freebl_cpuid, @function
564 freebl_cpuid:
565 .LFB2:
566 movq %rdx, %r10
567 pushq %rbx
568 .LCFI0:
569 movq %rcx, %r11
570 movq %rdi, %rax
571 /APP
572 cpuid
574 /NO_APP
575 movq %rax, (%rsi)
576 movq %rbx, (%r10)
577 popq %rbx
578 movq %rcx, (%r11)
579 movq %rdx, (%r8)
580 ret
581 .LFE2:
582 .size freebl_cpuid, .-freebl_cpuid
583 .align 16
584 .type getIntelCacheEntryLineSize, @function
585 getIntelCacheEntryLineSize:
586 .LFB3:
587 leaq CacheMap(%rip), %r9
588 movq %rdx, %r10
589 movzbl 1(%r9,%rdi,2), %ecx
590 movzbl (%r9,%rdi,2), %r8d
591 testb %cl, %cl
592 je .L2
593 cmpl $6, %r8d
594 sete %dl
595 cmpl $8, %r8d
596 sete %al
597 orl %edx, %eax
598 testb $1, %al
599 je .L4
600 movl $1, (%rsi)
601 .L9:
602 movzbl %cl, %eax
603 movq %rax, (%r10)
604 ret
605 .align 16
606 .L4:
607 movl (%rsi), %r11d
608 cmpl $1, %r11d
609 jg .L11
610 .L6:
611 cmpl $2, %r11d
612 jle .L2
613 cmpl $12, %r8d
614 sete %dl
615 cmpl $14, %r8d
616 sete %al
617 orl %edx, %eax
618 testb $1, %al
619 je .L2
620 movzbq 1(%r9,%rdi,2), %rax
621 movl $3, (%rsi)
622 movq %rax, (%r10)
623 .align 16
624 .L2:
625 rep ; ret
626 .align 16
627 .L11:
628 cmpl $9, %r8d
629 sete %dl
630 cmpl $11, %r8d
631 sete %al
632 orl %edx, %eax
633 testb $1, %al
634 je .L6
635 movl $2, (%rsi)
636 jmp .L9
637 .LFE3:
638 .size getIntelCacheEntryLineSize, .-getIntelCacheEntryLineSize
639 .align 16
640 .type getIntelRegisterCacheLineSize, @function
641 getIntelRegisterCacheLineSize:
642 .LFB4:
643 pushq %rbp
644 .LCFI1:
645 movq %rsp, %rbp
646 .LCFI2:
647 movq %rbx, -24(%rbp)
648 .LCFI3:
649 movq %rdi, %rbx
650 shrq $24, %rdi
651 movq %r12, -16(%rbp)
652 .LCFI4:
653 movq %r13, -8(%rbp)
654 .LCFI5:
655 andl $255, %edi
656 subq $24, %rsp
657 .LCFI6:
658 movq %rsi, %r13
659 movq %rdx, %r12
660 call getIntelCacheEntryLineSize
661 movq %rbx, %rdi
662 movq %r12, %rdx
663 movq %r13, %rsi
664 shrq $16, %rdi
665 andl $255, %edi
666 call getIntelCacheEntryLineSize
667 movq %rbx, %rdi
668 movq %r12, %rdx
669 movq %r13, %rsi
670 shrq $8, %rdi
671 andl $255, %ebx
672 andl $255, %edi
673 call getIntelCacheEntryLineSize
674 movq %r12, %rdx
675 movq %r13, %rsi
676 movq %rbx, %rdi
677 movq 8(%rsp), %r12
678 movq (%rsp), %rbx
679 movq 16(%rsp), %r13
680 leave
681 jmp getIntelCacheEntryLineSize
682 .LFE4:
683 .size getIntelRegisterCacheLineSize, .-getIntelRegisterCacheLineSize
684 .align 16
685 .globl s_mpi_getProcessorLineSize
686 .type s_mpi_getProcessorLineSize, @function
687 s_mpi_getProcessorLineSize:
688 .LFB7:
689 pushq %rbp
690 .LCFI7:
691 xorl %edi, %edi
692 movq %rsp, %rbp
693 .LCFI8:
694 pushq %r15
695 .LCFI9:
696 leaq -136(%rbp), %r8
697 leaq -144(%rbp), %rcx
698 leaq -152(%rbp), %rdx
699 pushq %r14
700 .LCFI10:
701 leaq -160(%rbp), %rsi
702 leaq -128(%rbp), %r14
703 pushq %r13
704 .LCFI11:
705 leaq manMap(%rip), %r13
706 pushq %r12
707 .LCFI12:
708 movl $9, %r12d
709 pushq %rbx
710 .LCFI13:
711 xorl %ebx, %ebx
712 subq $200, %rsp
713 .LCFI14:
714 call freebl_cpuid
715 movq -152(%rbp), %rax
716 movq -160(%rbp), %r15
717 movb $0, -116(%rbp)
718 movl %eax, -128(%rbp)
719 movq -136(%rbp), %rax
720 movl %eax, -124(%rbp)
721 movq -144(%rbp), %rax
722 movl %eax, -120(%rbp)
723 .align 16
724 .L18:
725 movslq %ebx,%rax
726 movq %r14, %rsi
727 movq (%r13,%rax,8), %rdi
728 call strcmp@PLT
729 testl %eax, %eax
730 cmove %ebx, %r12d
731 incl %ebx
732 cmpl $9, %ebx
733 jle .L18
734 testl %r12d, %r12d
735 jne .L19
736 xorl %eax, %eax
737 decl %r15d
738 movl $4, -204(%rbp)
739 movq $0, -200(%rbp)
740 jle .L21
741 leaq -168(%rbp), %r8
742 leaq -176(%rbp), %rcx
743 leaq -184(%rbp), %rdx
744 leaq -192(%rbp), %rsi
745 movl $2, %edi
746 xorl %ebx, %ebx
747 call freebl_cpuid
748 movq -192(%rbp), %rdi
749 movl %edi, %r12d
750 andl $15, %r12d
751 cmpl %r12d, %ebx
752 jl .L30
753 jmp .L38
754 .align 16
755 .L25:
756 movq -184(%rbp), %rdi
757 testl $2147483648, %edi
758 je .L40
759 .L26:
760 movq -176(%rbp), %rdi
761 testl $2147483648, %edi
762 je .L41
763 .L27:
764 movq -168(%rbp), %rdi
765 testl $2147483648, %edi
766 je .L42
767 .L28:
768 incl %ebx
769 cmpl %r12d, %ebx
770 je .L24
771 leaq -168(%rbp), %r8
772 leaq -176(%rbp), %rcx
773 leaq -184(%rbp), %rdx
774 leaq -192(%rbp), %rsi
775 movl $2, %edi
776 call freebl_cpuid
777 .L24:
778 cmpl %r12d, %ebx
779 jge .L38
780 movq -192(%rbp), %rdi
781 .L30:
782 testl $2147483648, %edi
783 jne .L25
784 leaq -200(%rbp), %rdx
785 leaq -204(%rbp), %rsi
786 andl $4294967040, %edi
787 call getIntelRegisterCacheLineSize
788 movq -184(%rbp), %rdi
789 testl $2147483648, %edi
790 jne .L26
791 .L40:
792 leaq -200(%rbp), %rdx
793 leaq -204(%rbp), %rsi
794 call getIntelRegisterCacheLineSize
795 movq -176(%rbp), %rdi
796 testl $2147483648, %edi
797 jne .L27
798 .L41:
799 leaq -200(%rbp), %rdx
800 leaq -204(%rbp), %rsi
801 call getIntelRegisterCacheLineSize
802 movq -168(%rbp), %rdi
803 testl $2147483648, %edi
804 jne .L28
805 .L42:
806 leaq -200(%rbp), %rdx
807 leaq -204(%rbp), %rsi
808 call getIntelRegisterCacheLineSize
809 jmp .L28
810 .L38:
811 movq -200(%rbp), %rax
812 .L21:
813 movq %rax, %rdx
814 movl $32, %eax
815 testq %rdx, %rdx
816 cmoveq %rax, %rdx
817 addq $200, %rsp
818 popq %rbx
819 popq %r12
820 popq %r13
821 popq %r14
822 popq %r15
823 leave
824 movq %rdx, %rax
825 ret
826 .L19:
827 leaq -216(%rbp), %r8
828 leaq -224(%rbp), %rcx
829 leaq -232(%rbp), %rdx
830 leaq -240(%rbp), %rsi
831 movl $2147483648, %edi
832 xorl %ebx, %ebx
833 call freebl_cpuid
834 movl $2147483652, %eax
835 cmpq %rax, -240(%rbp)
836 ja .L43
837 .L32:
838 movq %rbx, %rdx
839 movl $32, %eax
840 testq %rdx, %rdx
841 cmoveq %rax, %rdx
842 addq $200, %rsp
843 popq %rbx
844 popq %r12
845 popq %r13
846 popq %r14
847 popq %r15
848 leave
849 movq %rdx, %rax
850 ret
851 .L43:
852 leaq -216(%rbp), %r8
853 leaq -224(%rbp), %rcx
854 leaq -232(%rbp), %rdx
855 leaq -240(%rbp), %rsi
856 movl $2147483653, %edi
857 call freebl_cpuid
858 movzbq -224(%rbp), %rbx
859 jmp .L32
860 .LFE7:
861 .size s_mpi_getProcessorLineSize, .-s_mpi_getProcessorLineSize