Title: [201651] trunk/Source/_javascript_Core
- Revision
- 201651
- Author
- [email protected]
- Date
- 2016-06-03 11:42:11 -0700 (Fri, 03 Jun 2016)
Log Message
ARMv7 vstm and vldm instructions can only operate on a maximum of 16 registers.
https://bugs.webkit.org/show_bug.cgi?id=158349
Reviewed by Filip Pizlo.
According to the ARM Assembler Reference, the vstm and vldm instructions can only
operate on a maximum of 16 registers. See
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dht0002a/ch01s03s02.html
and http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dht0002a/ch01s03s02.html.
The ARMv7 probe code was wrongly using these instructions to store and load all
32 'd' registers. This is now fixed.
* assembler/MacroAssemblerARMv7.cpp:
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (201650 => 201651)
--- trunk/Source/_javascript_Core/ChangeLog 2016-06-03 18:36:13 UTC (rev 201650)
+++ trunk/Source/_javascript_Core/ChangeLog 2016-06-03 18:42:11 UTC (rev 201651)
@@ -1,5 +1,22 @@
2016-06-03 Mark Lam <[email protected]>
+ ARMv7 vstm and vldm instructions can only operate on a maximum of 16 registers.
+ https://bugs.webkit.org/show_bug.cgi?id=158349
+
+ Reviewed by Filip Pizlo.
+
+ According to the ARM Assembler Reference, the vstm and vldm instructions can only
+ operate on a maximum of 16 registers. See
+ http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dht0002a/ch01s03s02.html
+ and http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dht0002a/ch01s03s02.html.
+
+ The ARMv7 probe code was wrongly using these instructions to store and load all
+ 32 'd' registers. This is now fixed.
+
+ * assembler/MacroAssemblerARMv7.cpp:
+
+2016-06-03 Mark Lam <[email protected]>
+
Gardening: CLOOP build fix (needs a #include).
Not reviewed.
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.cpp (201650 => 201651)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.cpp 2016-06-03 18:36:13 UTC (rev 201650)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.cpp 2016-06-03 18:42:11 UTC (rev 201651)
@@ -224,7 +224,8 @@
"ldr lr, [sp, #" STRINGIZE_VALUE_OF(PROBE_CPU_PC_OFFSET) "]" "\n"
"add ip, sp, #" STRINGIZE_VALUE_OF(PROBE_CPU_D0_OFFSET) "\n"
- "vstmia.64 ip, { d0-d31 }" "\n"
+ "vstmia.64 ip!, { d0-d15 }" "\n"
+ "vstmia.64 ip!, { d16-d31 }" "\n"
"mov fp, sp" "\n" // Save the ProbeContext*.
@@ -238,7 +239,9 @@
// out of the ProbeContext before returning.
"add ip, sp, #" STRINGIZE_VALUE_OF(PROBE_CPU_D31_OFFSET + FPREG_SIZE) "\n"
- "vldmdb.64 ip!, { d0-d31 }" "\n"
+ "vldmdb.64 ip!, { d16-d31 }" "\n"
+ "vldmdb.64 ip!, { d0-d15 }" "\n"
+
"add ip, sp, #" STRINGIZE_VALUE_OF(PROBE_CPU_R11_OFFSET + GPREG_SIZE) "\n"
"ldmdb ip, { r0-r11 }" "\n"
"ldr ip, [sp, #" STRINGIZE_VALUE_OF(PROBE_CPU_FPSCR_OFFSET) "]" "\n"
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes