summaryrefslogtreecommitdiff
path: root/cgawas.c
diff options
context:
space:
mode:
Diffstat (limited to 'cgawas.c')
-rw-r--r--cgawas.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/cgawas.c b/cgawas.c
index 774decc..6d5f6dc 100644
--- a/cgawas.c
+++ b/cgawas.c
@@ -3372,6 +3372,31 @@ static void w_as_rtsp_instruction (void)
w_as_newline();
}
+#ifdef THREAD64
+static void w_as_ldtlsp_instruction (struct instruction *instruction)
+{
+ int reg;
+
+ reg=instruction->instruction_parameters[1].parameter_data.reg.r;
+
+ w_as_opcode ("mov");
+ w_as_register_comma (reg);
+ fprintf (assembly_file,"qword ptr ");
+ 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);
+ w_as_newline();
+
+ w_as_opcode ("mov");
+ w_as_register_comma (reg);
+ fprintf (assembly_file,"qword ptr gs:[1480h+");
+ w_as_register (reg);
+ fprintf (assembly_file,"*8]");
+ w_as_newline();
+}
+#endif
+
static void w_as_instructions (register struct instruction *instruction)
{
while (instruction!=NULL){
@@ -3657,6 +3682,11 @@ static void w_as_instructions (register struct instruction *instruction)
case IRTSI:
w_as_rtsi_instruction (instruction);
break;
+#ifdef THREAD64
+ case ILDTLSP:
+ w_as_ldtlsp_instruction (instruction);
+ break;
+#endif
case IFTST:
default:
internal_error_in_function ("w_as_instructions");