Index: src/trusted/validator/validation_rewrite_64_test_data.S |
diff --git a/src/trusted/validator/validation_rewrite_64_test_data.S b/src/trusted/validator/validation_rewrite_64_test_data.S |
new file mode 100644 |
index 0000000000000000000000000000000000000000..49d6cfa3ab67510c974c692fcad82b9e8aa040ac |
--- /dev/null |
+++ b/src/trusted/validator/validation_rewrite_64_test_data.S |
@@ -0,0 +1,171 @@ |
+/* |
+ * 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. |
+ */ |
+ |
+#include "native_client/src/include/nacl_asm.h" |
+ |
+#define GLOBAL_SYM(name) .global IDENTIFIER(name); IDENTIFIER(name): |
+ |
+.data |
+ |
+GLOBAL_SYM(no_rewrite_code) |
+ mov %edi,%edi |
+ movnti %rax,0x68(%r15,%rdi,1) |
+GLOBAL_SYM(no_rewrite_code_end) |
+ |
+GLOBAL_SYM(no_rewrite_code_post_rewrite) |
+ mov %edi,%edi |
+ movnti %rax,0x68(%r15,%rdi,1) |
+GLOBAL_SYM(no_rewrite_code_post_rewrite_end) |
+ |
+GLOBAL_SYM(off_webstore_movnt_code) |
+ mov %ebx,%ebx |
+ movntq %mm0,(%rbx) |
+GLOBAL_SYM(off_webstore_movnt_code_end) |
+ |
+GLOBAL_SYM(off_webstore_movnt_code_post_rewrite) |
+ mov %ebx,%ebx |
+ movntq %mm0,(%rbx) |
+GLOBAL_SYM(off_webstore_movnt_code_post_rewrite_end) |
+ |
+GLOBAL_SYM(prefetchnta_code) |
+ mov %edi,%edi |
+ prefetchnta (%r15,%rdi,1) |
+GLOBAL_SYM(prefetchnta_code_end) |
+ |
+GLOBAL_SYM(prefetchnta_code_post_rewrite) |
+ mov %edi,%edi |
+ nop |
+ nop |
+ nop |
+ nop |
+ nop |
+GLOBAL_SYM(prefetchnta_code_post_rewrite_end) |
+ |
+GLOBAL_SYM(movntps_code) |
+ mov %ebx,%ebx |
+ movntps %xmm0,(%r15,%rbx,1) |
+GLOBAL_SYM(movntps_code_end) |
+ |
+GLOBAL_SYM(movntps_code_post_rewrite) |
+ mov %ebx,%ebx |
+ movaps %xmm0,(%r15,%rbx,1) |
+GLOBAL_SYM(movntps_code_post_rewrite_end) |
+ |
+GLOBAL_SYM(movnti_code) |
+ mov %edi,%edi |
+ movnti %rax,0x68(%r15,%rdi,1) |
+GLOBAL_SYM(movnti_code_end) |
+ |
+GLOBAL_SYM(movnti_code_post_rewrite) |
+ mov %edi,%edi |
+ mov %rax,0x68(%r15,%rdi,1) |
+ nop |
+GLOBAL_SYM(movnti_code_post_rewrite_end) |
+ |
+GLOBAL_SYM(movnti_code2) |
+ mov %edx,%edx |
+ movnti %r9d,(%r15,%rdx,1) |
+GLOBAL_SYM(movnti_code2_end) |
+ |
+GLOBAL_SYM(movnti_code2_post_rewrite) |
+ mov %edx,%edx |
+ mov %r9d,(%r15,%rdx,1) |
+ nop |
+GLOBAL_SYM(movnti_code2_post_rewrite_end) |
+ |
+GLOBAL_SYM(movnti_rip_relative_code) |
+ movnti %rax,0x20(%rip) |
+GLOBAL_SYM(movnti_rip_relative_code_end) |
+ |
+GLOBAL_SYM(movnti_rip_relative_code_post_rewrite) |
+ nop |
+ mov %rax,0x20(%rip) |
+GLOBAL_SYM(movnti_rip_relative_code_post_rewrite_end) |
+ |
+GLOBAL_SYM(movntdq_code) |
+ mov %edx,%edx |
+ movntdq %xmm0,0x10(%r15,%rdx,1) |
+GLOBAL_SYM(movntdq_code_end) |
+ |
+GLOBAL_SYM(movntdq_code_post_rewrite) |
+ mov %edx,%edx |
+ movdqa %xmm0,0x10(%r15,%rdx,1) |
+GLOBAL_SYM(movntdq_code_post_rewrite_end) |
+ |
+GLOBAL_SYM(movntdq_code2) |
+ mov %ecx,%ecx |
+ movntdq %xmm15,(%r15,%rcx,1) |
+GLOBAL_SYM(movntdq_code2_end) |
+ |
+GLOBAL_SYM(movntdq_code2_post_rewrite) |
+ mov %ecx,%ecx |
+ movdqa %xmm15,(%r15,%rcx,1) |
+GLOBAL_SYM(movntdq_code2_post_rewrite_end) |
+ |
+GLOBAL_SYM(multiple_movnt_code) |
+ mov %edi,%edi |
+ movnti %rax,0x68(%r15,%rdi,1) |
+ mov %edx,%edx |
+ movntdq %xmm0,0x10(%r15,%rdx,1) |
+GLOBAL_SYM(multiple_movnt_code_end) |
+ |
+GLOBAL_SYM(multiple_movnt_code_post_rewrite) |
+ mov %edi,%edi |
+ mov %rax,0x68(%r15,%rdi,1) |
+ nop |
+ mov %edx,%edx |
+ movdqa %xmm0,0x10(%r15,%rdx,1) |
+GLOBAL_SYM(multiple_movnt_code_post_rewrite_end) |
+ |
+ /* size = 32 bytes */ |
+GLOBAL_SYM(one_bundle_movnt_code) |
+ mov %ecx,%ecx |
+ movntdq %xmm15,(%r15,%rcx,1) |
+ mov %ecx,%ecx |
+ movntdq %xmm15,(%r15,%rcx,1) |
+ mov %ecx,%ecx |
+ movntdq %xmm15,(%r15,%rcx,1) |
+ mov %ecx,%ecx |
+ movntdq %xmm15,(%r15,%rcx,1) |
+GLOBAL_SYM(one_bundle_movnt_code_end) |
+ |
+ /* size = 32 bytes */ |
+GLOBAL_SYM(one_bundle_movnt_code_post_rewrite) |
+ mov %ecx,%ecx |
+ movdqa %xmm15,(%r15,%rcx,1) |
+ mov %ecx,%ecx |
+ movdqa %xmm15,(%r15,%rcx,1) |
+ mov %ecx,%ecx |
+ movdqa %xmm15,(%r15,%rcx,1) |
+ mov %ecx,%ecx |
+ movdqa %xmm15,(%r15,%rcx,1) |
+GLOBAL_SYM(one_bundle_movnt_code_post_rewrite_end) |
+ |
+GLOBAL_SYM(last_movnti_cross_bundle_by_one) |
+ mov %ecx,%ecx /* offset 0, length 2 */ |
+ movntdq %xmm15,(%r15,%rcx,1) /* offset 2, length 6 */ |
+ mov %ecx,%ecx /* offset 8, length 2 */ |
+ movntdq %xmm15,(%r15,%rcx,1) /* offset 10, length 6 */ |
+ mov %ecx,%ecx /* offset 16, length 2 */ |
+ movntdq %xmm15,(%r15,%rcx,1) /* offset 18, length 6 */ |
+ nop /* offset 24, length 1 */ |
+ mov %edx,%edx /* offset 25, length 2 */ |
+ /* the last byte of the following instruction is at offset 32 */ |
+ movnti %r9d,(%r15,%rdx,1) /* offset 27, length 5 */ |
+GLOBAL_SYM(last_movnti_cross_bundle_by_one_end) |
+ |
+GLOBAL_SYM(last_movnti_cross_bundle_by_one_post_rewrite) |
+ mov %ecx,%ecx /* offset 0, length 2 */ |
+ movdqa %xmm15,(%r15,%rcx,1) /* offset 2, length 6 */ |
+ mov %ecx,%ecx /* offset 8, length 2 */ |
+ movdqa %xmm15,(%r15,%rcx,1) /* offset 10, length 6 */ |
+ mov %ecx,%ecx /* offset 16, length 2 */ |
+ movdqa %xmm15,(%r15,%rcx,1) /* offset 18, length 6 */ |
+ nop /* offset 24, length 1 */ |
+ mov %edx,%edx /* offset 25, length 2 */ |
+ mov %r9d,(%r15,%rdx,1) /* offset 27, length 4 */ |
+ nop /* offset 32, length 1 */ |
+GLOBAL_SYM(last_movnti_cross_bundle_by_one_post_rewrite_end) |