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

Unified Diff: tests/exception_test/exception_test.c

Issue 12256018: [MIPS] Add remaining parts for building tests for MIPS (Closed) Base URL: http://src.chromium.org/native_client/trunk/src/native_client/
Patch Set: Minor cleanup. Created 7 years, 9 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
« no previous file with comments | « tests/exception_test/exception_crash_test.c ('k') | tests/exception_test/nacl.scons » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/exception_test/exception_test.c
diff --git a/tests/exception_test/exception_test.c b/tests/exception_test/exception_test.c
index 76724a9245c2401bf4aa330ce1f6e4923a28d0f4..79e161dc5d8a5ea64c09a5dc3f736a5ca0ccd0df 100644
--- a/tests/exception_test/exception_test.c
+++ b/tests/exception_test/exception_test.c
@@ -31,7 +31,11 @@ char *g_registered_stack;
size_t g_registered_stack_size;
+#if defined(__mips__)
+#define STACK_ALIGNMENT 8
+#else
#define STACK_ALIGNMENT 16
+#endif
#if defined(__i386__)
const int kReturnAddrSize = 4;
@@ -45,33 +49,14 @@ const int kRedZoneSize = 128;
const int kReturnAddrSize = 0;
const int kArgSizeOnStack = 0;
const int kRedZoneSize = 0;
+#elif defined(__mips__)
+const int kReturnAddrSize = 0;
+const int kArgSizeOnStack = 16;
+const int kRedZoneSize = 0;
#else
# error Unsupported architecture
#endif
-struct AlignedType {
- int blah;
-} __attribute__((aligned(16)));
-
-/*
- * We do this check in a separate function in an attempt to prevent
- * the compiler from optimising away the check for a stack-allocated
- * variable.
- *
- * We test for an alignment that is small enough for the compiler to
- * assume on x86-32, even if sel_ldr sets up a larger alignment.
- */
-__attribute__((noinline))
-void check_pointer_is_aligned(void *pointer) {
- assert((uintptr_t) pointer % 16 == 0);
-}
-
-void check_stack_is_aligned(void) {
- struct AlignedType var;
- check_pointer_is_aligned(&var);
-}
-
-
void crash_at_known_address(void);
extern char prog_ctr_at_crash[];
#if defined(__i386__)
@@ -97,6 +82,16 @@ __asm__(".pushsection .text, \"ax\", %progbits\n"
"prog_ctr_at_crash:\n"
"str r0, [r0]\n"
".popsection\n");
+#elif defined(__mips__)
+__asm__(".pushsection .text, \"ax\", %progbits\n"
+ ".p2align 4\n"
+ ".global crash_at_known_address\n"
+ "crash_at_known_address:\n"
+ "and $zero, $zero, $t7\n"
+ ".global prog_ctr_at_crash\n"
+ "prog_ctr_at_crash:\n"
+ "sw $t0, 0($zero)\n"
+ ".popsection\n");
#else
# error Unsupported architecture
#endif
@@ -111,8 +106,6 @@ void exception_handler_wrapped(struct NaClSignalContext *entry_regs) {
printf("handler called\n");
- check_stack_is_aligned();
-
assert(context->stack_ptr == (uint32_t) g_regs_at_crash.stack_ptr);
assert(context->prog_ctr == (uintptr_t) prog_ctr_at_crash);
#if defined(__i386__)
@@ -121,6 +114,8 @@ void exception_handler_wrapped(struct NaClSignalContext *entry_regs) {
assert(context->frame_ptr == (uint32_t) g_regs_at_crash.rbp);
#elif defined(__arm__)
assert(context->frame_ptr == g_regs_at_crash.r11);
+#elif defined(__mips__)
+ assert(context->frame_ptr == g_regs_at_crash.frame_ptr);
#else
# error Unsupported architecture
#endif
« no previous file with comments | « tests/exception_test/exception_crash_test.c ('k') | tests/exception_test/nacl.scons » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698