summaryrefslogtreecommitdiff
path: root/cgawas.c
diff options
context:
space:
mode:
authorJohn van Groningen2011-02-03 14:37:44 +0000
committerJohn van Groningen2011-02-03 14:37:44 +0000
commit43646d288bd5ef3ad7d96f66ad4e20e72aded5b7 (patch)
tree6ff68c67ffdc95062b966355d5da0e0de98c74a6 /cgawas.c
parentadd makefile for Mac OS X (AMD64) (diff)
port stack tracing to Mac OS X (AMD64)
Diffstat (limited to 'cgawas.c')
-rw-r--r--cgawas.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/cgawas.c b/cgawas.c
index 58566b0..fff3e92 100644
--- a/cgawas.c
+++ b/cgawas.c
@@ -3939,6 +3939,9 @@ static void w_as_import_labels (struct label_node *label_node)
static void w_as_profile_call (struct basic_block *block)
{
+#ifdef MACH_O64
+ w_as_lea_descriptor (block->block_profile_function_label,0,REGISTER_O0);
+#else
w_as_opcode_movl();
if (intel_asm)
w_as_scratch_register_comma();
@@ -3946,7 +3949,7 @@ static void w_as_profile_call (struct basic_block *block)
if (!intel_asm)
w_as_comma_scratch_register();
w_as_newline();
-
+#endif
w_as_opcode ("call");
if (block->block_n_node_arguments>-100)
@@ -4114,6 +4117,9 @@ void write_assembly (VOID)
intel_syntax();
#endif
} else {
+#ifdef MACH_O64
+ w_as_lea_descriptor (block->block_profile_function_label,0,REGISTER_A4);
+#else
w_as_opcode_movl();
if (intel_asm)
w_as_register_comma (REGISTER_A4);
@@ -4121,7 +4127,7 @@ void write_assembly (VOID)
if (!intel_asm)
w_as_comma_register (REGISTER_A4);
w_as_newline();
-
+#endif
w_as_opcode ("jmp");
w_as_label (eval_upd_labels[n_node_arguments]->label_name);
fprintf (assembly_file,"-8");
@@ -4131,6 +4137,9 @@ void write_assembly (VOID)
if (intel_asm)
w_as_register_comma (REGISTER_D0);
w_as_label (block->block_ea_label->label_name);
+#ifdef MACH_O64
+ fprintf (assembly_file,"%s",intel_asm ? "[rip]" : "(%rip)");
+#endif
if (!intel_asm)
w_as_comma_register (REGISTER_D0);
w_as_newline();