| Index: src/trusted/validator_mips/testdata/test_tp_access.S
|
| diff --git a/src/trusted/validator_mips/testdata/test_tp_access.S b/src/trusted/validator_mips/testdata/test_tp_access.S
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5871982946a13482fb34a9d4af1b50b84c0381c4
|
| --- /dev/null
|
| +++ b/src/trusted/validator_mips/testdata/test_tp_access.S
|
| @@ -0,0 +1,72 @@
|
| +# Copyright 2015 The Native Client Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +# Several test cases are implemented in this file:
|
| +# 1. Test if regular way to access thread pointers is allowed.
|
| +# 2. Test different random examples of forbidden stores through $t8.
|
| +# 3. Test different random examples of forbidden loads through $t8.
|
| +
|
| +
|
| + .align 4
|
| + .globl __start
|
| +__start:
|
| + .set noreorder
|
| + .set mips32r2
|
| +
|
| + # Test valid tp access
|
| +valid_load_access:
|
| + lw $a0, 0($t8) # OK
|
| + lw $a0, 4($t8) # OK
|
| + nop
|
| + nop
|
| +
|
| + # Test invalid tp access
|
| +invalid_store_access:
|
| + sb $a0, 4($t8) # Error, forbidden thread pointer access.
|
| + sc $a0, 4($t8) # Error, forbidden thread pointer access.
|
| + sdc1 $0, 4($t8) # Error, forbidden thread pointer access.
|
| + sdc2 $8, 4($t8) # Error, forbidden thread pointer access.
|
| +
|
| + sh $a0, 4($t8) # Error, forbidden thread pointer access.
|
| + sw $a0, 4($t8) # Error, forbidden thread pointer access.
|
| + swc1 $f2, 4($t8) # Error, forbidden thread pointer access.
|
| + swc2 $22, 4($t8) # Error, forbidden thread pointer access.
|
| +
|
| + swl $a0, 4($t8) # Error, forbidden thread pointer access.
|
| + swr $a0, 4($t8) # Error, forbidden thread pointer access.
|
| + sdxc1 $f6, $a2($t8) # Error, forbidden instruction.
|
| + suxc1 $f4, $t8($t8) # Error, forbidden instruction.
|
| +
|
| + swxc1 $f4, $t8($t8) # Error, forbidden instruction.
|
| + nop
|
| + nop
|
| + nop
|
| +
|
| +invalid_load_access:
|
| + lb $a0, 4($t8) # Error, forbidden thread pointer access.
|
| + lw $a0, 8($t8) # Error, forbidden thread pointer access.
|
| + lbu $a0, 4($t8) # Error, forbidden thread pointer access.
|
| + ldc1 $f0, 4($t8) # Error, forbidden thread pointer access.
|
| +
|
| + ldc2 $10, -24($t8) # Error, forbidden thread pointer access.
|
| + lh $a0, 4($t8) # Error, forbidden thread pointer access.
|
| + lhu $a0, 4($t8) # Error, forbidden thread pointer access.
|
| + ll $a0, 4($t8) # Error, forbidden thread pointer access.
|
| +
|
| + lwc1 $f0, 4($t8) # Error, forbidden thread pointer access.
|
| + lwc2 $10, 4($t8) # Error, forbidden thread pointer access.
|
| + lwl $a0, 4($t8) # Error, forbidden thread pointer access.
|
| + lwr $a0, 4($t8) # Error, forbidden thread pointer access.
|
| +
|
| + ldxc1 $f0, $0($t8) # Error, forbidden instruction.
|
| + luxc1 $f0, $a2($t8) # Error, forbidden instruction.
|
| + lwxc1 $f6, $v0($t8) # Error, forbidden instruction.
|
| + nop
|
| +
|
| + .set dsp
|
| + lbux $a3, $t2($t8) # Error, forbidden instruction.
|
| + lhx $a1, $a2($t8) # Error, forbidden instruction.
|
| + lwx $t1, $t2($t8) # Error, forbidden instruction.
|
| + nop
|
| +end_of_code:
|
|
|