< prev index next >

src/hotspot/cpu/aarch64/c1_FrameMap_aarch64.cpp

Print this page
8248238: Adding Windows support to OpenJDK on AArch64

Summary: Adding Windows support for AArch64

Contributed-by: Ludovic Henry <luhenry@microsoft.com>, Monica Beckwith <monica.beckwith@microsoft.com>
Reviewed-by:

@@ -179,11 +179,14 @@
   map_register(i, r13); r13_opr = LIR_OprFact::single_cpu(i); i++;
   map_register(i, r14); r14_opr = LIR_OprFact::single_cpu(i); i++;
   map_register(i, r15); r15_opr = LIR_OprFact::single_cpu(i); i++;
   map_register(i, r16); r16_opr = LIR_OprFact::single_cpu(i); i++;
   map_register(i, r17); r17_opr = LIR_OprFact::single_cpu(i); i++;
+#ifndef _WIN64
+  // See comment in aarch64.ad about R18 in non_allocatable_reg32
   map_register(i, r18); r18_opr = LIR_OprFact::single_cpu(i); i++;
+#endif
   map_register(i, r19); r19_opr = LIR_OprFact::single_cpu(i); i++;
   map_register(i, r20); r20_opr = LIR_OprFact::single_cpu(i); i++;
   map_register(i, r21); r21_opr = LIR_OprFact::single_cpu(i); i++;
   map_register(i, r22); r22_opr = LIR_OprFact::single_cpu(i); i++;
   map_register(i, r23); r23_opr = LIR_OprFact::single_cpu(i); i++;

@@ -197,10 +200,15 @@
   map_register(i, r30); r30_opr = LIR_OprFact::single_cpu(i); i++; // lr
   map_register(i, r31_sp); sp_opr = LIR_OprFact::single_cpu(i); i++; // sp
   map_register(i, r8); r8_opr = LIR_OprFact::single_cpu(i); i++;   // rscratch1
   map_register(i, r9); r9_opr = LIR_OprFact::single_cpu(i); i++;   // rscratch2
 
+#ifdef _WIN64
+  // See comment in aarch64.ad about R18 in non_allocatable_reg32
+  map_register(i, r18); r18_opr = LIR_OprFact::single_cpu(i); i++; // TLS for Win
+#endif
+
   rscratch1_opr = r8_opr;
   rscratch2_opr = r9_opr;
   rscratch1_long_opr = LIR_OprFact::double_cpu(r8_opr->cpu_regnr(), r8_opr->cpu_regnr());
   rscratch2_long_opr = LIR_OprFact::double_cpu(r9_opr->cpu_regnr(), r9_opr->cpu_regnr());
 

@@ -225,11 +233,14 @@
   _caller_save_cpu_regs[11] = r13_opr;
   _caller_save_cpu_regs[12] = r14_opr;
   _caller_save_cpu_regs[13] = r15_opr;
   _caller_save_cpu_regs[14] = r16_opr;
   _caller_save_cpu_regs[15] = r17_opr;
+#ifndef _WIN64
+  // R18 used for TLS on Windows
   _caller_save_cpu_regs[16] = r18_opr;
+#endif
 
   for (int i = 0; i < 8; i++) {
     _caller_save_fpu_regs[i] = LIR_OprFact::single_fpu(i);
   }
 
< prev index next >