Accepting request 402031 from home:algraf:branches:Java:Factory

- Fix aarch64 running with 48 bits va space (bsc#984684)
  * hotspot-aarch64-fix-48bit-va.patch

OBS-URL: https://build.opensuse.org/request/show/402031
OBS-URL: https://build.opensuse.org/package/show/Java:Factory/java-1_8_0-openjdk?expand=0&rev=169
This commit is contained in:
Fridrich Strba 2016-06-15 05:47:57 +00:00 committed by Git OBS Bridge
parent 35ff7c400d
commit d72dd700f0
3 changed files with 53 additions and 1 deletions

View File

@ -0,0 +1,43 @@
# HG changeset patch
# User enevill
# Date 1454603068 0
# Thu Feb 04 16:24:28 2016 +0000
# Node ID ded2073b67bdd9c9f2ae924397341b762329aaef
# Parent f918c20107d9acb189498095308c2f49c8dbc84e
8148783: aarch64: SEGV running SpecJBB2013
Summary: Fix calculation of offset for adrp
Reviewed-by: aph
diff --git a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
--- a/openjdk/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
+++ b/openjdk/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
@@ -127,7 +127,10 @@
Instruction_aarch64::extract(insn2, 4, 0)) {
// movk #imm16<<32
Instruction_aarch64::patch(branch + 4, 20, 5, (uint64_t)target >> 32);
- offset &= (1<<20)-1;
+ long dest = ((long)target & 0xffffffffL) | ((long)branch & 0xffff00000000L);
+ long pc_page = (long)branch >> 12;
+ long adr_page = (long)dest >> 12;
+ offset = adr_page - pc_page;
instructions = 2;
}
}
@@ -3998,11 +4001,12 @@
if (offset_high >= -(1<<20) && offset_low < (1<<20)) {
_adrp(reg1, dest.target());
} else {
- unsigned long pc_page = (unsigned long)pc() >> 12;
- long offset = dest_page - pc_page;
- offset = (offset & ((1<<20)-1)) << 12;
- _adrp(reg1, pc()+offset);
- movk(reg1, (unsigned long)dest.target() >> 32, 32);
+ unsigned long source = (unsigned long)pc();
+ unsigned long target = (unsigned long)dest.target();
+ unsigned long adrp_target = (target & 0xffffffffUL) | (source & 0xffff00000000UL);
+
+ _adrp(reg1, (address)adrp_target);
+ movk(reg1, target >> 32, 32);
}
byte_offset = (unsigned long)dest.target() & 0xfff;
}

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Tue Jun 14 11:46:16 UTC 2016 - agraf@suse.com
- Fix aarch64 running with 48 bits va space (bsc#984684)
* hotspot-aarch64-fix-48bit-va.patch
-------------------------------------------------------------------
Fri Jun 3 09:01:23 UTC 2016 - fstrba@suse.com
@ -19,7 +25,6 @@ Tue May 31 06:47:43 UTC 2016 - fstrba@suse.com
+ Fix build with gcc 6.1
- Add -fno-delete-null-pointer-checks -fno-lifetime-dse to try to
avoid some crashes
-------------------------------------------------------------------
Thu Apr 28 08:19:17 UTC 2016 - fstrba@suse.com

View File

@ -176,6 +176,8 @@ Patch12: adlc-parser.patch
Patch13: implicit-pointer-decl.patch
# Avoid triggering inactivity timeout while generating javadoc in zero VM
Patch14: zero-javadoc-verbose.patch
# Fix 48 bit va space on aarch64
Patch15: hotspot-aarch64-fix-48bit-va.patch
#
# OpenJDK specific patches
#
@ -493,6 +495,8 @@ patch -p0 -i %{PATCH13}
patch -p0 -i %{PATCH14}
%endif
patch -p1 -i %{PATCH15}
%ifarch ppc ppc64 ppc64le
# PPC fixes
patch -p0 -i %{PATCH103}