summaryrefslogtreecommitdiff
path: root/cgawas.c
diff options
context:
space:
mode:
authorJohn van Groningen2012-02-24 11:21:47 +0000
committerJohn van Groningen2012-02-24 11:21:47 +0000
commitd1103719dc1fac80bfe1cca2396207bf0da4935f (patch)
tree6b7b2e546bb7f4b37151da72a5e4839a3d013730 /cgawas.c
parentin foreign export of 64 bit thread safe code, load global registers for clean... (diff)
fix move register from/to label on Mac OS X
Diffstat (limited to 'cgawas.c')
-rw-r--r--cgawas.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/cgawas.c b/cgawas.c
index da5d5a0..6c89066 100644
--- a/cgawas.c
+++ b/cgawas.c
@@ -1102,14 +1102,15 @@ static void w_as_move_instruction (struct instruction *instruction,int size_flag
return;
case P_LABEL:
w_as_opcode_movq();
- if (intel_asm){
+ if (intel_asm)
w_as_register_comma (instruction->instruction_parameters[1].parameter_data.reg.r);
- fprintf (assembly_file,"offset ");
- }
if (instruction->instruction_parameters[0].parameter_data.l->label_number!=0)
w_as_local_label (instruction->instruction_parameters[0].parameter_data.l->label_number);
else
w_as_label (instruction->instruction_parameters[0].parameter_data.l->label_name);
+#ifdef MACH_O64
+ fprintf (assembly_file,"%s",intel_asm ? "[rip]" : "(%rip)");
+#endif
break;
default:
internal_error_in_function ("w_as_move_instruction");
@@ -1359,12 +1360,14 @@ static void w_as_move_instruction (struct instruction *instruction,int size_flag
w_as_opcode_movq();
if (!intel_asm){
w_as_register_comma (instruction->instruction_parameters[0].parameter_data.reg.r);
- fprintf (assembly_file,"offset ");
}
if (instruction->instruction_parameters[1].parameter_data.l->label_number!=0)
w_as_local_label (instruction->instruction_parameters[1].parameter_data.l->label_number);
else
w_as_label (instruction->instruction_parameters[1].parameter_data.l->label_name);
+#ifdef MACH_O64
+ fprintf (assembly_file,"%s",intel_asm ? "[rip]" : "(%rip)");
+#endif
if (intel_asm)
w_as_comma_register (instruction->instruction_parameters[0].parameter_data.reg.r);
w_as_newline();