OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The Native Client Authors. All rights reserved. | 2 * Copyright (c) 2012 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 #ifndef NACL_TRUSTED_BUT_NOT_TCB | 7 #ifndef NACL_TRUSTED_BUT_NOT_TCB |
8 #error This file is not meant for use in the TCB | 8 #error This file is not meant for use in the TCB |
9 #endif | 9 #endif |
10 | 10 |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 // cccc 0001 0010 1111 1111 1111 00L1 mmmm | 114 // cccc 0001 0010 1111 1111 1111 00L1 mmmm |
115 ((i & 0x0FFFFFD0) == 0x012FFF10); | 115 ((i & 0x0FFFFFD0) == 0x012FFF10); |
116 uint32_t expected_branch_target = !expect_b_or_bl ? | 116 uint32_t expected_branch_target = !expect_b_or_bl ? |
117 kDefaultBaseAddr : | 117 kDefaultBaseAddr : |
118 // imm32 = SignExtend(imm24:'00', 32); | 118 // imm32 = SignExtend(imm24:'00', 32); |
119 // PC reads as the address of the current instruction plus 8. | 119 // PC reads as the address of the current instruction plus 8. |
120 (kDefaultBaseAddr + 8 + (((int32_t)i << 8) >> 6)); | 120 (kDefaultBaseAddr + 8 + (((int32_t)i << 8) >> 6)); |
121 uint32_t expected_branch_target_register = expect_bx_or_blx ? | 121 uint32_t expected_branch_target_register = expect_bx_or_blx ? |
122 (i & 0xF) : // When present, always Rm(3:0). | 122 (i & 0xF) : // When present, always Rm(3:0). |
123 nacl_arm_dec::Register::kNone; | 123 nacl_arm_dec::Register::kNone; |
124 bool expect_literal_pool_head = | 124 bool expect_literal_pool_head =(i == nacl_arm_dec::kLiteralPoolHead); |
125 (i == nacl_arm_dec::kLiteralPoolHeadInstruction); | |
126 bool expect_load_store_or_unsafe = expect_unconditional ? | 125 bool expect_load_store_or_unsafe = expect_unconditional ? |
127 // Advanced SIMD element or structure load/store instructions. | 126 // Advanced SIMD element or structure load/store instructions. |
128 // 1111 0100 xx0x xxxx xxxx xxxx xxxx xxxx | 127 // 1111 0100 xx0x xxxx xxxx xxxx xxxx xxxx |
129 ((i & 0x0F100000) == 0x04000000) : | 128 ((i & 0x0F100000) == 0x04000000) : |
130 ( // Conditional instructions: | 129 ( // Conditional instructions: |
131 // Synchronization primitives. | 130 // Synchronization primitives. |
132 // cccc 0001 xxxx xxxx xxxx xxxx 1001 xxxx | 131 // cccc 0001 xxxx xxxx xxxx xxxx 1001 xxxx |
133 ((i & 0x0F0000F0) == 0x01000090) || | 132 ((i & 0x0F0000F0) == 0x01000090) || |
134 // Extra load/store instructions[, unprivileged]. | 133 // Extra load/store instructions[, unprivileged]. |
135 // cccc 000x xxxx xxxx xxxx xxxx 1011 xxxx | 134 // cccc 000x xxxx xxxx xxxx xxxx 1011 xxxx |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 } while (i++ != last_i); | 262 } while (i++ != last_i); |
264 } | 263 } |
265 | 264 |
266 } // anonymous namespace | 265 } // anonymous namespace |
267 | 266 |
268 // Test driver function. | 267 // Test driver function. |
269 int main(int argc, char *argv[]) { | 268 int main(int argc, char *argv[]) { |
270 testing::InitGoogleTest(&argc, argv); | 269 testing::InitGoogleTest(&argc, argv); |
271 return RUN_ALL_TESTS(); | 270 return RUN_ALL_TESTS(); |
272 } | 271 } |
OLD | NEW |