OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The Native Client Authors. All rights reserved. | 2 * Copyright (c) 2013 The Native Client Authors. All rights reserved. |
3 * Use of this source code is governed by a BSD-style license that can be | 3 * Use of this source code is governed by a BSD-style license that can be |
4 * found in the LICENSE file. | 4 * found in the LICENSE file. |
5 */ | 5 */ |
6 | 6 |
7 #include "native_client/pnacl/support/nacl_mips_defs.h" | |
8 | |
9 /* | 7 /* |
10 * Receives no arguments, just clears registers. | 8 * Receives no arguments, just clears registers. |
11 */ | 9 */ |
12 .text | 10 .text |
13 .p2align 4 | 11 .p2align 4 |
14 .set noreorder | 12 .set noreorder |
15 .globl infoleak_clear_state | 13 .globl infoleak_clear_state |
16 infoleak_clear_state: | 14 infoleak_clear_state: |
17 mtc1 $zero, $f0 | 15 mtc1 $zero, $f0 |
18 mtc1 $zero, $f1 | 16 mtc1 $zero, $f1 |
19 mov.d $f2, $f0 | 17 mov.d $f2, $f0 |
20 mov.d $f4, $f0 | 18 mov.d $f4, $f0 |
21 | |
22 mov.d $f6, $f0 | 19 mov.d $f6, $f0 |
23 mov.d $f8, $f0 | 20 mov.d $f8, $f0 |
24 mov.d $f10, $f0 | 21 mov.d $f10, $f0 |
25 mov.d $f12, $f0 | 22 mov.d $f12, $f0 |
26 | |
27 mov.d $f14, $f0 | 23 mov.d $f14, $f0 |
28 mov.d $f16, $f0 | 24 mov.d $f16, $f0 |
29 mov.d $f18, $f0 | 25 mov.d $f18, $f0 |
30 mov.d $f20, $f0 | 26 mov.d $f20, $f0 |
31 | |
32 mov.d $f22, $f0 | 27 mov.d $f22, $f0 |
33 mov.d $f24, $f0 | 28 mov.d $f24, $f0 |
34 mov.d $f26, $f0 | 29 mov.d $f26, $f0 |
35 mov.d $f28, $f0 | 30 mov.d $f28, $f0 |
36 | |
37 mov.d $f30, $f0 | 31 mov.d $f30, $f0 |
38 and $ra, $ra, JUMP_MASK | |
39 jr $ra | 32 jr $ra |
40 nop | 33 nop |
41 .set reorder | 34 .set reorder |
42 | 35 |
43 | |
44 /* | 36 /* |
45 * Receives: | 37 * Receives: |
46 * a0: pointer to float_regs structure | 38 * a0: pointer to float_regs structure |
47 */ | 39 */ |
48 | 40 |
49 .p2align 4 | 41 .p2align 4 |
50 .set noreorder | 42 .set noreorder |
51 .globl infoleak_fetch_regs | 43 .globl infoleak_fetch_regs |
52 infoleak_fetch_regs: | 44 infoleak_fetch_regs: |
53 and $a0, $a0, STORE_MASK | 45 sdc1 $f0, 0($a0) |
54 sdc1 $f0, 0($a0) | 46 sdc1 $f2, 8($a0) |
55 and $a0, $a0, STORE_MASK | 47 sdc1 $f4, 16($a0) |
56 sdc1 $f2, 8($a0) | 48 sdc1 $f6, 24($a0) |
57 | 49 sdc1 $f8, 32($a0) |
58 and $a0, $a0, STORE_MASK | |
59 sdc1 $f4, 16($a0) | |
60 and $a0, $a0, STORE_MASK | |
61 sdc1 $f6, 24($a0) | |
62 | |
63 and $a0, $a0, STORE_MASK | |
64 sdc1 $f8, 32($a0) | |
65 and $a0, $a0, STORE_MASK | |
66 sdc1 $f10, 40($a0) | 50 sdc1 $f10, 40($a0) |
67 | |
68 and $a0, $a0, STORE_MASK | |
69 sdc1 $f12, 48($a0) | 51 sdc1 $f12, 48($a0) |
70 and $a0, $a0, STORE_MASK | |
71 sdc1 $f14, 56($a0) | 52 sdc1 $f14, 56($a0) |
72 | |
73 and $a0, $a0, STORE_MASK | |
74 sdc1 $f16, 64($a0) | 53 sdc1 $f16, 64($a0) |
75 and $a0, $a0, STORE_MASK | |
76 sdc1 $f18, 72($a0) | 54 sdc1 $f18, 72($a0) |
77 | |
78 and $a0, $a0, STORE_MASK | |
79 sdc1 $f20, 80($a0) | 55 sdc1 $f20, 80($a0) |
80 and $a0, $a0, STORE_MASK | |
81 sdc1 $f22, 88($a0) | 56 sdc1 $f22, 88($a0) |
82 | |
83 and $a0, $a0, STORE_MASK | |
84 sdc1 $f24, 96($a0) | 57 sdc1 $f24, 96($a0) |
85 and $a0, $a0, STORE_MASK | |
86 sdc1 $f26, 104($a0) | 58 sdc1 $f26, 104($a0) |
87 | |
88 and $a0, $a0, STORE_MASK | |
89 sdc1 $f28, 112($a0) | 59 sdc1 $f28, 112($a0) |
90 and $a0, $a0, STORE_MASK | |
91 sdc1 $f30, 120($a0) | 60 sdc1 $f30, 120($a0) |
92 | |
93 and $ra, $ra, JUMP_MASK | |
94 jr $ra | 61 jr $ra |
95 nop | 62 nop |
96 | 63 |
97 .set reorder | 64 .set reorder |
OLD | NEW |