Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Unified Diff: src/trusted/validator_mips/testdata/test_sp_updates.S

Issue 9979025: [MIPS] Adding validator for MIPS architecture. (Closed) Base URL: http://src.chromium.org/native_client/trunk/src/native_client/
Patch Set: Update per initial code review. Nexes removed. Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/trusted/validator_mips/testdata/test_sp_updates.S
diff --git a/src/trusted/validator_mips/testdata/test_sp_updates.S b/src/trusted/validator_mips/testdata/test_sp_updates.S
new file mode 100644
index 0000000000000000000000000000000000000000..8151ef3b1c829e349a70223564d6e7ddfa0e7298
--- /dev/null
+++ b/src/trusted/validator_mips/testdata/test_sp_updates.S
@@ -0,0 +1,86 @@
+# Copyright 2012 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.
+# Copyright 2012 MIPS Technologies / RT-RK.
+
+#
+# Tests both legal and illegal variations on SP updates.
+#
+
+
+
+.globl _start
+_start:
+.align 4
+.set noreorder
+.set STORE_MASK,$t7
+
+bundle_sp_dest_reg:
+ addiu $sp, $sp, 64 #error, b/c no mask after
+ and $sp, $a0, $a1 #error, b/c no mask after
+ mfhi $sp #error, b/c no mask after
+ clo $sp, $a2 #error, b/c no mask after
+ ins $sp, $s3, 2, 10 #error, b/c no mask after
+ lui $sp, 0x1f #error, b/c no mask after
+ mfc1 $sp, $f12 #error, b/c no mask after
+ mfhc1 $sp, $f10 #error, b/c no mask after
+ mflo $sp #error, b/c no mask after
+ movn $sp, $v0, $v1 #error, b/c no mask after
+ movt $sp, $s4, $fcc4 #error, b/c no mask after
+ mul $sp, $s0, $s1 #error, b/c no mask after
+
+#modify sp w/ lw;
+bundle_load_into_sp:
+ lw $sp, 16($a0) #error, b/c no mask after
+ nop
+ lw $sp, 16($a0)
+ and $sp, $sp, STORE_MASK #error
+
+bundle_mask_doesnt_need_mask:
+#ok
+ nop
+ and $sp, $sp, STORE_MASK
+ nop
+ nop
+
+# a few instructions where sp is
+# 1st operand, but don't alter it
+
+bundle_sp_not_altered:
+ mthi $sp #ok
+ mult $sp, $t9 #ok
+ nop
+ nop
+
+bundle_jalr_sp_t9:
+#this should be allowed, b/c $sp will still be in the untrusted area
+ nop
+ and $t9, $t9, $t6
+ jalr $sp, $t9 #error
+ nop
+
+bundle_chk_delay_slot:
+ b bundle_chk_cross_1
+ addiu $sp, $sp, -32 #error
+ and $sp, $sp, STORE_MASK
+ nop
+
+bundle_chk_cross_1:
+ nop
+ nop
+ nop
+ addiu $sp, $sp, -32 #ok
+
+bundle_chk_cross_2:
+ and $sp, $sp, STORE_MASK
+ nop
+ nop
+ nop
+
+bundle_ok:
+ add $sp, $sp, 64 #ok
+ and $sp, $sp, STORE_MASK
+ sub $sp, $sp, 56 #ok
+ and $sp, $sp, STORE_MASK
+
+end_of_code:

Powered by Google App Engine
This is Rietveld 408576698