dev-java/jamvm: add aarch64 patches.

This commit is contained in:
Andrius Štikonas 2020-07-05 12:38:16 +01:00
parent 9bf843cffa
commit 4418de0dd5
30 changed files with 1306 additions and 44 deletions

View File

@ -1,3 +1,3 @@
DIST apache-ant-1.8.4-src.tar.bz2 3385365 BLAKE2B 2cbb84385dbfdcbc68d138fa5c88f6759ed579ae3e1df129094948aa5677fca6d4d1140c0c8c2723bddce1dfb04f0121f46b7f8a798f4beb6e1c5cdb15fe9eff SHA512 7dbbdcd31f5fd498cbbe7f125451899320e5e9c2396b80f1f90d18943f8ef066a75198edfdba0edf96b1e0b5b84cb049b5281403180a7a6924ebfb077930e307
EBUILD ant-core-1.8.4-r1.ebuild 1814 BLAKE2B f6a914256e3d781b3861abbf68f44abbfdb96f54b544c28d7581f528e5462b40abba5b17ae1f4c996f34f3e5d6bcf4bdcf6151dcbeb811c538ff2f4a5608207b SHA512 a8f2e5c96641a7201c9655b3ac2324f51d51b413e1399787757d1bded7a1b92938682d1ff192370027da846aea8ace2bff59563feb2151912b7d81b7a7791cb4
EBUILD ant-core-1.8.4-r1.ebuild 1820 BLAKE2B 446bf4d69b5e95ad56c33cc455c8104c7853d0b908a83755c37bbbc3fc221fbdd8eeb5bd0f1b3f524164a4ca0a6c19543143bc314928cf1b0629e5539653561e SHA512 e2ab8eb032b06be7176154cbbe72a8ec775db14bddc2949264f91d774a2570274d2366c92254a563df1cf1bb868470ac491ac2e9c27fdf981b731ef437b1929f
MISC metadata.xml 390 BLAKE2B c6509d0728b476d3bc7d596a11e7477b75cae7c3c3918e18ae0f6bb5fdd04edb62e22f1dca148843d82760406ef2e9f4da43e3348b396801dbb3f07a322e5fae SHA512 ab625d234114a10cf0074c97cc4ec2fe9a191be282c9faca739964d36fc790199f4a6d6788fe4f6d3e9279e80b44f909aacfb3c5a595334b3b4bcc19f5f343e4

View File

@ -17,7 +17,7 @@ SRC_URI="http://archive.apache.org/dist/ant/source/apache-ant-${PV}-src.tar.bz2"
LICENSE="Apache-2.0"
SLOT="bootstrap"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
IUSE="doc"
RDEPEND="dev-java/jamvm:1.5

View File

@ -3,5 +3,5 @@ AUX eclipse-ecj-3.2-build-gentoo.patch 1874 BLAKE2B dee1fd186a776a049ecdaf05472d
AUX override.patch 53592 BLAKE2B ddfb5cdb8b3569755036a4cde4a49924dd9d6eb124c52c52a2aab1161fccdc579f6722d9173863a65da3b059fb7f7a9d1b4098e6014deb70f9f3715807f7961d SHA512 f5f84c9f4388a4a5b81ece22fdb5e3b106659fff23927e814d97eae4f4ccbfd5ebec41825386ad118ee7ef266dc56eaea0e771800195a2ecac61fbf781e4bff6
DIST ecjsrc-4.2.1.jar 1417043 BLAKE2B dc6915ec85d96a6ecdafb04485549feeb6ef8329811e294647e9e179ff3b1ec3cea55c29ad23b306ff3489dbfe6f574dc691ee31080a592d71607d3a996e9bb4 SHA512 967b47a722893ea1f9eb17e69d386881dc87516e93c1d7a2a119d6fb2e053faa0d9d6455b6e4b89c3f23a3ec7ae33686f4acc305d7c6e51929ce7837c9c93eaf
DIST eclipse-ecj-3.2.tar.bz2 612611 BLAKE2B dc2cadb2f7be85f6583020079f2e02a66d6432b35f595c44cc38731504c8dcd43cd3e407b80c93e5dc828e10eb37d78a74a4674e2c7c5eac7329f179947b8683 SHA512 037564cacb154e6dc81718cbb1a4f1547663c151681e3725d7728db782611ed22905d5395d24214336cfaefeeb4e2ea87fab69f5012f163164a7aaf87f203ba2
EBUILD eclipse-ecj-3.2.ebuild 1516 BLAKE2B e760457fb3d845a13ab78c92c4320b33703c0bc70a29bb05a47bf289b4c9c3bf15bdef479378c532d5cf88bc886926dbf2e4f65313abe34d38194941e5c80f06 SHA512 244914719c20bbf869a80208b410f317b3f2b1aea18623d6aa3f6fa46846b4df40be0215a64c38f486f12f14c00c69a4ee635f34a7af5c8d86e275ad53325723
EBUILD eclipse-ecj-4.2.1.ebuild 2890 BLAKE2B 8628fb9ea54e4056a0d4884ba201e23ee399b4375cbe0315284550aed86ea2da199ef44a53f9a5214766edd179fedcd3e462d82fb8c24e392533ef462a8e97a5 SHA512 5c462d52376b2354e134e981d4a1c753af36a26bf4b36d9dda9181f75eceb81a311d5d24dbec3df842ce650b0e0f35306a7bf0f6a0ff00998f9673b2a8eb9b81
EBUILD eclipse-ecj-3.2.ebuild 1522 BLAKE2B 3fb3efadd87b5a37bb75dd75c31d4822c9834c55f51b995fb3fb9c98118230778ab334d3944acfbd507016b20eb69e4a5703e7503048ca3df565767503d517f0 SHA512 0dc31cca6b9f4b76fd3af4970e69fde4c7ddbc5d3fde3dbb6e2f07392c1fd5d548bbdb897cd663a45d1b6fc1b7eac8b4eb03a22f50fe84707edfc52baa99fc63
EBUILD eclipse-ecj-4.2.1.ebuild 2896 BLAKE2B f48fbfe4009151b51df9b9ea6f8cab7b831177b21e2e32587ceac8543f4db723efdf2335db8d0e662bd80ffcbba1cd54b25a9f9520052d1462dfc1d30f8b712a SHA512 5ead6757c1765b43cff4656355e23e3e917650280a31f8ee3ca96f4068e93cd76c90ac81a1bad41a53ebcd6f68eff64fc7bb2f0d102a8b562b244e9908be4dcf

View File

@ -12,7 +12,7 @@ DESCRIPTION="Eclipse Compiler for Java"
HOMEPAGE="http://www.eclipse.org/"
SRC_URI="${P}.tar.bz2"
LICENSE="EPL-1.0"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
SLOT="3.2"
RDEPEND="virtual/jre:1.4"

View File

@ -13,7 +13,7 @@ HOMEPAGE="http://www.eclipse.org/"
SRC_URI="http://download.eclipse.org/eclipse/downloads/drops4/${DMF}/${MY_PN}src-${PV}.jar"
LICENSE="EPL-1.0"
KEYWORDS="amd64 ppc64 x86 ~amd64-linux ~x86-linux ~x86-solaris"
KEYWORDS="amd64 arm64 ppc64 x86 ~amd64-linux ~x86-linux ~x86-solaris"
SLOT="4.2"
IUSE="+userland_GNU"

View File

@ -1,6 +1,6 @@
DIST classpath-0.93.tar.gz 9534222 BLAKE2B 36313f25e165856a8716c18873d725d82f52e20310d2c22ca0b0b0a481e66a00ccad4138c76e96c119772565819bc06cd626bc100ddea0684d04165e10206541 SHA512 69d831361085514bb7c5607fa694914cc01bc9fe589b7744d5534c97d434722193a1b68a336642d0dba9a3b50e9acea0364741790e9f19d196e5956a51c320b0
DIST classpath-0.99.tar.gz 11078232 BLAKE2B cb62cc58b9ce75df98809298a6c6a588704a98a133e8a0378c372e6cc0e6b07c8f05d7bd23c52f2697e6a3b4bfc1f0cdfc7aa108f2f681af154e6fd8c59d9460 SHA512 d8f38677ecc6a0f4b26197ab16e9888c51043364141675ad69684828e2d0ecb93122249672e2e7997aea817cc4aac68c17ccf59bf8913afe81e9536bee6b73ac
EBUILD gnu-classpath-0.93.ebuild 1141 BLAKE2B 044978d90b27efaa721d6ccebd8282b69203598523135c8468f2ab5ba9066595bf2182badaaed0f00f6f11cad23db665d60291d86b086fc684b8943b33b9109b SHA512 a06310f8596d9731c261e4327ff469704d25534f539796076620cada4a210426772f8b0a7d989c42fc5a830433dfb0615a6f49dc69c58a4000132829bfbb1971
EBUILD gnu-classpath-0.99-r2.ebuild 2448 BLAKE2B 0b809111313f9f5fd396c945c759a8fab26efb5f6943140e795f2a0ce6fd7b9bb1753f57882c3f4b7ede8f862abd9922ff077cf94b2d7d4d260e30323c892deb SHA512 370539badfe7d2907c989273e4c6e55bbf426288f65f8b5d230f0cdd76e93bc69063a6d23c9c33ee25ddef8033983e1b0e2d26175919e5c22eaeabea1db8f49a
EBUILD gnu-classpath-0.99_p1.ebuild 2424 BLAKE2B 336b6ddba10937a8673c689f1130d83099a8270f3537d2ebdee422616a54129f0551377dd43853936419a937374d7aeaa955b530b525e30e4228e094c23cc088 SHA512 e0cff948b88917950729dc2adbae648e0e7fdb8ef3c4b93754b3cfb795362f0f2c75d1b94f6554a5ca58e1e18b0aa13bb50111ba2234548793117e72eb8616a2
EBUILD gnu-classpath-0.93.ebuild 1140 BLAKE2B 63f079bdd97532d81b136b0d549d52cbe3196c89793aa13b8721fde3c0831e93bb8885036927a5a63236d2a01ca891450e93d27d87cd3124d6f52116fa24723e SHA512 d031455cc6c0c5797430908d31dbe6a555c3524f2fb60fec8d26579111b64391faccf28091eafa8c0dc857dd24f9b621ed2ff600a824131fdadd33024520ed11
EBUILD gnu-classpath-0.99-r2.ebuild 2454 BLAKE2B ca8c22eb916bb50f0783cc9b39157e1299a3a8e8d2f33b76d81cda3a3c1707f1d179db2337cf3748acf55ac03b4b381020e9ef7210e3d4f8eec4d02a987cbc79 SHA512 5f543434b3efdf84533478c7eb79762394c224ef52e72c2f6eb09f8a97e1ab8983f33cbd163111c4a9e1cb182bda754919122aff59eba0774e383b5cbc87a604
EBUILD gnu-classpath-0.99_p1.ebuild 2430 BLAKE2B b074eed7f5a2f5a7b50c19b2d595e3bd4a429b0692112feb0600887c4efa0d8eac1dee1f4b806252bf8805b3e1389ecffc6a77cadaf7742b1730563bc003e5d9 SHA512 f82c30f310412c7a97beca61c7acd045180fe6d3619a744db62eec1864f10d2fdb0a70fbcb9519eb462a935b5418cce4492f4496fdc8597cc92c02b036996ce2
MISC metadata.xml 252 BLAKE2B a3a36edd6c0b4e630f0e38d236ff4133a5c6b4aa42f5525d8a0978ecdbbe3d53602d3fcde02cf1a495bfabb4fd06f914826df44bda7f542ce8543b32fd7bbfe2 SHA512 1ab83f56876901e45f2b34aa5c81bd1d7b243009236d238b49fca2d49ec167c596ea589de6df1c8dfe1a6b834a2e0e493409ee65d499bd2b6ecaf687ae71df69

View File

@ -12,7 +12,7 @@ HOMEPAGE="https://www.gnu.org/software/classpath"
LICENSE="GPL-2-with-linking-exception"
SLOT="0.93"
KEYWORDS="amd64 ~arm64"
KEYWORDS="amd64 arm64"
DEPEND="sys-libs/zlib
app-arch/fastjar

View File

@ -12,7 +12,7 @@ HOMEPAGE="https://www.gnu.org/software/classpath"
LICENSE="GPL-2-with-linking-exception"
SLOT="0.99"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
IUSE=""
REQUIRED_USE=""

View File

@ -12,7 +12,7 @@ HOMEPAGE="https://www.gnu.org/software/classpath"
LICENSE="GPL-2-with-linking-exception"
SLOT="0.99-devel"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
IUSE=""
REQUIRED_USE=""

View File

@ -23,5 +23,5 @@ DIST icedtea-3.7.0.tar.xz 1487360 BLAKE2B efef75c5ac615c21310f16f50fc425c5a76076
DIST icedtea-cacao-c182f119eaad.tar.gz 4485353 BLAKE2B 5c1faa3cbbfea62f819562a01ec389f3682cf3164d06f5404d1d16359c87b37d6ae4101f7c33cde30bad4f3d52af18f0f410e36868b2c9d1280661d2340e683b SHA512 2ccb947d71b80d84b83295d473c19952e98698a1fd944fc7c12004ff1af29af2989d46fbd95b5daf95eae2fda9de7c7f88f964fa887a6345b4f57d0c490bee23
DIST icedtea-cacao-c182f119eaad.tar.xz 3056520 BLAKE2B 6b1be66ce19f491d49f1591babcd8c088e8e327f828dca3f30b8f8b04c132140f8b9f487ef6d91aed212aebab2c7c3052d79fa3f2d76d3832341d94d48e77089 SHA512 22e8a031db5f93f82b276b310c175f1e926e48d64e1e50bebe51138e0f66391cd005501491a959d31663f338f27a29ec984ac29f77078f59472856e4d08edef7
DIST icedtea-jamvm-ec18fb9e49e62dce16c5094ef1527eed619463aa.tar.gz 317187 BLAKE2B 1ca581a02be4cf5c09162687bbc90ec01b58b4910d866d11512cf17a1caff181fdc69e42f7498b2df9deb875ddc6efc6bc2888428f411da94bbc2313ddf5a2c9 SHA512 a31348481e1c02747f5bb9db333f855c45a1555aa187ee35de5ef553a10a8a47dfcc1beb1e69502046c1758438b91958a328e0a0015812c153221f67734a70a6
EBUILD icedtea-3.7.0.ebuild 13477 BLAKE2B dcc4a04e53af1d131c1ab49d8917a5f2f3df14dd32edf6de46696b0c891b891bc5574e5e38f2a38dff5a23ce76f32706c7c07ecd62e7c908ab9307baf7e487a3 SHA512 54237eeca80c361ca1e9e4936c026ed79997884e3248981dab23c4b4e85f8ba46da65715e1862311f81d18fd0a929b97b4bc0f18c9e6ba7b05d1e176a740a756
EBUILD icedtea-7.2.6.9.ebuild 11295 BLAKE2B f191cc2ac77758c3b62ce58042ff4b9c5cdd327af859ab8d772f3274bb9a36e48654dc05e3f818a96db4c7fa7a52d21601694a85107b7d5995b46b9e2c8db5cd SHA512 b74b168c71f39804ba502afe84c294d9f001672bdfaf34dcd7c7510a6700f5ed8a8a8ad87a3395841a175d612fde83a3f3b26396ba44d622ac628b0dc4933379
EBUILD icedtea-3.7.0.ebuild 13476 BLAKE2B 83ff27f01a25038abf19cbfe5b13d495fe1845e112d6fa916f3192664779ae5bcef95b6b3d0fe189cf5c5baa24dae6ab901b9c50ee99f6679a4a1b6ffd6d4720 SHA512 beacbf9b65aba5ca2a624f1d3a68245feee9331b694e3a0f6993eacfdae78332174702bed0933809d97e8d5ee2ed2a1007e31f5e246720d2baa3ad0e47dc4619
EBUILD icedtea-7.2.6.9.ebuild 11301 BLAKE2B 4ee54e61af66905ee7f63b42351bf80c989786c9b7115602ac73e99f3d2c7e3b8c2196a2244887008f1cd5829b3a5451d7cdf259cf09a33a949fcc897549df24 SHA512 ee84b939c47d3e407769ac0e271d54ccf78ca1f8c8748b7fbad80e05644277a0fc541a0bb73a6f3c7b5cfa921dfc4b0fb0746de730d405d0e3cb7e35740f53db

View File

@ -63,7 +63,7 @@ SRC_URI="
${DROP_URL}/jamvm/${JAMVM_TARBALL} -> ${JAMVM_GENTOO_TARBALL}"
LICENSE="Apache-1.1 Apache-2.0 GPL-1 GPL-2 GPL-2-with-linking-exception LGPL-2 MPL-1.0 MPL-1.1 public-domain W3C"
KEYWORDS="amd64 ~arm ~arm64 ~ppc64 ~x86"
KEYWORDS="amd64 ~arm arm64 ~ppc64 ~x86"
IUSE="+alsa cacao +cups doc examples +gtk headless-awt
jamvm +jbootstrap kerberos libressl pax_kernel +pch

View File

@ -57,7 +57,7 @@ SRC_URI="
${DROP_URL}/jamvm/${JAMVM_TARBALL} -> ${JAMVM_GENTOO_TARBALL}"
LICENSE="Apache-1.1 Apache-2.0 GPL-1 GPL-2 GPL-2-with-linking-exception LGPL-2 MPL-1.0 MPL-1.1 public-domain W3C"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
IUSE="+alsa cacao +cups debug doc examples +gtk headless-awt
+jbootstrap kerberos libressl nss pax_kernel

View File

@ -1,17 +1,20 @@
AUX classes-location.patch 1184 BLAKE2B 367fad8488bf6866021aade628221a7ce53a000fc6cba0b59bbe4b2145d30a07cb6d057dcc7a4ea370f82926e0171021e50691ce35959b129802ad38d441983d SHA512 0e441916dbf66289bea37da807a85930a9fe320b5c3a5301df85a870418125fe9fe0c5fb7ce7e4baa9dfc75a3438509e9d77b0ede67b06411935875ec7e641ee
AUX jamvm-1.5.1-aarch64-support.patch 19981 BLAKE2B d596d0f3fb237a9fad5c2455b50248908184998e81ac91766155eb7b32aa74da453a9de324d1bbc8ef120d748cf367c0eba6556e5a091cc92f85fd1a11eaa535 SHA512 4380a95ee83bbcb076c8f19854dcd1c78fb81bc210ed2da04ce37d5977a0788debb1a3de04adff8295a6c5623e2fb2aa20739dd743f4e5b7fafaabe323189e0e
AUX jamvm-1.5.1.env 502 BLAKE2B 51e16cc15c1e6392b3c9d37089c1c8e73f64ec0431a90369ba60fd0bc6751c6aa8d3af5283a14ddb509091bb0a9390ba131c7b8bc92f1f371b7ea95a5d6c1f4f SHA512 b00ff86eb6de75c73b46f8f6dff14be1cf290d1b9d2942710fb9b6c2c90543cf2eb0e92d40df42804e9b5ff644b9099ff78a272cc2e253cfc85ee619a7d46ab6
AUX jamvm-2.0.0-2-classes-location.patch 1278 BLAKE2B 9da04a8e239ae8522ff055ea56d09f69be348701fc2790b38143d78425a1396168daa55bb609b88a26638d879b5bea0bf040224f5e867416038b4b0de7b86705 SHA512 841ef1ebe425127130883c8b20372e558bf072c8fa596aa61f6d68a9cc1fd6716e1a92d7d4563a973470a537e26b4d3e0a6ac3d46b8c9dc73cada9aaf48ed193
AUX jamvm-2.0.0-2-env.file 549 BLAKE2B 328469234c99b25df79c2324491fb12d3a7c7baf95a58729b81c40aad019061be8b564b8931c7f39c24e8146e64cf06575142c4e1dd393370c44cb3bc9f5ce68 SHA512 f8a4350c4281f04c120471765b112dcb02bea4302cb2e3c37c0d65d46c7c59620b2572eb2ab0e2e32c2b50c381a34b71de4183101f98fd3466e15168a032be84
AUX jamvm-2.0.0-3-classes-location.patch 1278 BLAKE2B 09375a5f0a975868679e959a35eebed9290db064edc2278ecffab282cd1641247f4fcdaf2ad3c79b24aa0c0033745c6e70450d4180868486bd150e3f678555ef SHA512 60bac0cd29d1d0affa01a6eb5f5deb6c29e72c26c5bfc172754ba528d28ab45fd6fc522dc3b4dee103c557a883140dff6a54398a710ee2312a42de964e648162
AUX jamvm-2.0.0-3-env.file 549 BLAKE2B 51d4f1c4aa8331eb75817ab93cc2e941eb2e83f3c5312577cf88fa686b4a8fd659bd62969d0dbc2380a2abda207f2691482bb9a78be40652b40368ab1e24b395 SHA512 e551495436bd8c0f6be7b7950fb7c56d494fca1469dafa2f222ca9c310e3e3e4fd7b3f16c0a68488d3f1405fd596772efe8b71f9bd99b630609a786f6f03d08f
AUX jamvm-2.0.0-aarch64-support.patch 23804 BLAKE2B a7585bcd3b9b1775430b99072315b8864253a26456fdb2b6f5dc68a0917e967d3f48c394de2ceb882ca9353532a281e5eb3c168372826f5bb447fdf59c4f23c8 SHA512 d930865029c45f74f169b038171d72ad91f558532f074ea70fdf4bd43f6c4d1748f88edaaab9b6e46f792c26ce38efa3eb3853c7e09da2c1964f316ca8fbed24
AUX jamvm-2.0.0-classes-location.patch 1278 BLAKE2B 10a7851ad9f0c7651aaed7ff0e72a2c96a04157dedbcc38eefc465ad436a5011fea94b11e793a746d825384e80149444d93955ef35ef2fa7c6f87b8cffef08e8 SHA512 45299cbcfd17aaae64f0a1678462970704543dfeed7162b03eb732b415f497aedf83fbb831782226b30e2508d61ba4e72d60d54b4f4fa8347bedf2934cb15a1c
AUX jamvm-2.0.0-env.file 547 BLAKE2B 805af8fd4b6ba6452d645a4ae46d9ecdb74cbd9b6d13ffe4f0ab545963bfaf6b4ec2a7b57f39b5143d59816e0838054fb07bcf9dc0ee1fa7b48abf5b7cc2448b SHA512 6135a2ca9eafa39619a8f427864e81589e38b061be31dfb5cbfdf19b2530a4f7aab1b50de5cdc4c37f696f8e92cd96684845fd107a3bfa937a2fa334225c15de
AUX jamvm-2.0.0-javac.in 1739 BLAKE2B ff167bfba594dbfb71dd1d09e41ce502ebfcc598fbcef0794cb967c00894745f8b16412adc7b4afbd167878defa29351e99b30a71b4377987c5c8a692f404e30 SHA512 65170b747012e114b072cd28a688089cdf2f54ddd151ba0cea92241b9b75fd0c7c410bfa4186cf9d233af4328bf962e13e8838a0cc09a1fbf2c28d29b13e36cb
AUX jamvm-2.0.0-noexecstack.patch 1387 BLAKE2B afd020772bf627c3dbd6b5da9e03d3b03e8f5c9dc3844279fe325183819cb11deadaedb4920ebfb0c6b25321daeee9f0e4fff45addd162e2b6c02e3f3ea12d31 SHA512 17c38ad0017e5659295dea7ed57f263eb0eee673bbc1f5d1e44e0c8fe588f4172a8a05c832a1fd41f3dc094779fade66aa710c8ce48c754412b0b6afdea6551a
AUX jamvm-2.0.0-opcode-guard.patch 1396 BLAKE2B 0f6ba763606d9e1aa807d3441fd51383c7f71f9f649e73a93e177fee48a788bd320b3491e5ff05e8f9fa0022f3751c38bf444c7a154a3c872a6647fa95d07747 SHA512 842fd08f4e11e240c809ca7a0029ea9936f33fb12a765a47a34e73ac4a3d3e7eda1e6a1c1c99d3157911347d2fc1333faae35a6e502bfafb8eab30f69ace8001
DIST jamvm-1.5.1.tar.gz 599084 BLAKE2B af79d5615fbfa395230d93ec52fd70f6000d85eac881414f59ab9f33ab4393a4dadbfa6966c574d11422612e10354bec562b3728e4a8fe6e6334b5c0f2742ed9 SHA512 9f93611fefb28b5494d166d7ec9575eb8d12add775dd65b2b46303355e3f845f417d5301649a1f09cb306e6690cd82b67cb1dface30ce18d0b2ecc815d3bc9b9
DIST jamvm-2.0.0.tar.gz 741459 BLAKE2B 9b8b0f8cfd8f56c0b835144c07aaca709ef466fdfe5df18438d05c66cd8a07fecfebf27e1581c67658feb3674a96c2e916b85f13dc434baf2db9be4e4fbfd0cf SHA512 8ac27787ee94fa8fde962635d3c08d1dc1e5244c9d56bb693e73f3fd9b58e944ad3f7a0127afeed727d7c00d904a775d2c483157f5ac87e7eab6ecade1aad21d
EBUILD jamvm-1.5.1.ebuild 1678 BLAKE2B ce5004db30b6b6062fd703ad6303c225e38b30e17a27e1fad3dd4896f09309c9e70c1b01cf5ccc275b74083e9134ced379537a1047e111068627fb4f7e7544b7 SHA512 847d70b720b02302975f281aa33506de2a27587bb964b9ecabb0b1461e781b1b978cad3c2f203ca8c2fedb206e7273f4f3b48b069112b82790526771e3dadca0
EBUILD jamvm-2.0.0-r10.ebuild 4219 BLAKE2B b585af6b56568eba2cb6209b52c2f4a9704ec5504a109abbedeab2c187cf5bbe094236296aff5ba8fd7de032e72610da3ae1268a09c747d5ac3fb22ce956fb1b SHA512 8cbb68442ce2bbd4ed9d564c93a5e0fd0027b6eb68daea752962174a7af1365c2aab0a03cf4ea50cc3cb55000a7cf4db54fccfcd23f11d3dbbc320eb53a59cdb
EBUILD jamvm-2.0.0-r20.ebuild 4221 BLAKE2B ede08481ed657e5ddb7db69addd86f54e246871dce7a5a6f6f484485bb99f7dca9d4ee9a616d314ecef0c6b09df5a0fdc100ea0053d40c8abea93e7cbe9e82a0 SHA512 3a3a96e221e3a06ae61c028f91554ba8c32e18160db3ae06ab851f9c43b054f191b2baa9522742dce9f1d8dd640ef5f58ddfcea5d421788641bd24608135e7c0
EBUILD jamvm-2.0.0.ebuild 4124 BLAKE2B 06feced993e3c8ca65aab256d600f81fde6b88bc02194f51f9a8940e059e02f07021df5c94d1ab35965f197de94684a44662c3b3c06e29a6fe3c3c14f8f3b2eb SHA512 f7eeb3554eae8c4a2b0f7961d8cbe54206faea734125e0a71372323226c5c7da103bf80cab08727c4bd930a20ea8174b4d612b2e9e145a744f52ce4926c6ff7c
EBUILD jamvm-1.5.1.ebuild 1733 BLAKE2B 550f9cb65941c110c94396a3113680a9d3d32c8e4febf2a83ec0ea0872282f152c110228eeca549b2f6a99db434587f5074a85caf3ef285fa268a44dad5c4813 SHA512 67708d68e0813b97590b9ccc27dd0afab45dbf2e7a59a94bef725b54927fb27268e2aa4d162d3610095cd2a159802886fda546614a7a0d68c7ee7b35cc4d86af
EBUILD jamvm-2.0.0-r10.ebuild 4302 BLAKE2B 775a76eee7bd89a8195ea90f7dd447c1aab20e6c54cc15b3a168ec9a1faf7810c2d50ae00451a9ab7fa13e99f0dd269a8edfca8e6689b903ce0445e1ced95109 SHA512 95dba02d5f14b775d2504797734f398470d26b6d1953b7df6a3cb174c2e70dc9993153584feb0bee5f876c5593641bfa553893a3ad26260075c8a5fdddff8485
EBUILD jamvm-2.0.0-r20.ebuild 4304 BLAKE2B 96f8ad38a166bc045d28241f5d427d7e6b0be6eb18e7dee35a7231643816ddff5bbcc337e8272f0d3e651d42a30c64959d5c2ec5135b2e21011691c5119c1486 SHA512 c927e0ddb7c6646f9d4aa8d99245f7de550b02771348360ef02eef702027595f49ad57269b9f42a976d44a6912717ea8ef8500b5b74a67e1dfbba9b94a46edd6
EBUILD jamvm-2.0.0.ebuild 4207 BLAKE2B 3e8517def99d62c62ce6c3940de7148274f3061d98f15d2cddc56321610f577370825e3e598249610d0a05606fe81fce7a8f43971e22b54d62bc959c37df889c SHA512 60d96d263034d2a2b51d37a08d38dc7cf6062b68f08b33256459d2ea0565b133aebd38037b393126533f851bb9f45bc1e94ec8d2fd6ae1980780596a7f850181
MISC metadata.xml 252 BLAKE2B a3a36edd6c0b4e630f0e38d236ff4133a5c6b4aa42f5525d8a0978ecdbbe3d53602d3fcde02cf1a495bfabb4fd06f914826df44bda7f542ce8543b32fd7bbfe2 SHA512 1ab83f56876901e45f2b34aa5c81bd1d7b243009236d238b49fca2d49ec167c596ea589de6df1c8dfe1a6b834a2e0e493409ee65d499bd2b6ecaf687ae71df69

View File

@ -0,0 +1,572 @@
From 9c83c3d3f443eb92f87dc87c7dcfe95577b95621 Mon Sep 17 00:00:00 2001
From: Simon South <simon@simonsouth.net>
Date: Thu, 28 May 2020 14:29:55 -0400
Subject: [PATCH] Add support for aarch64 on GNU/Linux
---
configure.ac | 10 +-
src/arch/Makefile.am | 2 +-
src/arch/aarch64.h | 110 ++++++++++++++++
src/os/linux/Makefile.am | 2 +-
src/os/linux/aarch64/Makefile.am | 28 ++++
src/os/linux/aarch64/callNative.S | 212 ++++++++++++++++++++++++++++++
src/os/linux/aarch64/dll_md.c | 59 +++++++++
src/os/linux/aarch64/init.c | 51 +++++++
8 files changed, 469 insertions(+), 5 deletions(-)
create mode 100644 src/arch/aarch64.h
create mode 100644 src/os/linux/aarch64/Makefile.am
create mode 100644 src/os/linux/aarch64/callNative.S
create mode 100644 src/os/linux/aarch64/dll_md.c
create mode 100644 src/os/linux/aarch64/init.c
diff --git a/configure.ac b/configure.ac
index ccd530f..707f281 100644
--- a/configure.ac
+++ b/configure.ac
@@ -43,6 +43,7 @@ amd64-*-freebsd*) host_os=bsd libdl_needed=no ;;
arm*-*-linux*) host_cpu=arm host_os=linux ;;
arm*-*-openbsd*) host_cpu=arm host_os=bsd libdl_needed=no ;;
arm*-*-freebsd*) host_cpu=arm host_os=bsd libdl_needed=no ;;
+aarch64*-*-linux*) host_cpu=aarch64 host_os=linux ;;
powerpc*-*-linux*) host_cpu=powerpc host_os=linux ;;
powerpc*-*-openbsd*) host_cpu=powerpc host_os=bsd libdl_needed=no ;;
powerpc*-*-freebsd*) host_cpu=powerpc host_os=bsd libdl_needed=no ;;
@@ -149,9 +150,11 @@ AC_ARG_ENABLE(runtime-reloc-checks,
AC_ARG_ENABLE(int-inlining,
[AS_HELP_STRING(--enable-int-inlining,enable inline threaded version of the interpreter
- (by default enabled on x86_64, i386 and powerpc, disabled otherwise))],,
- [if test "$host_cpu" = x86_64 -o "$host_cpu" = i386 -o "$host_cpu" = powerpc && \
- test "$cross_compiling" = no -o "$enable_runtime_reloc_checks" != no; then
+ (by default enabled on x86_64, i386, powerpc and aarch64,
+ disabled otherwise))],,
+ [if test "$host_cpu" = x86_64 -o "$host_cpu" = i386 -o "$host_cpu" = powerpc -o \
+ "$host_cpu" = aarch64 && test "$cross_compiling" = no -o \
+ "$enable_runtime_reloc_checks" != no; then
enable_int_inlining=yes
else
enable_int_inlining=no
@@ -298,6 +301,7 @@ AC_CONFIG_FILES(
src/os/linux/x86_64/Makefile \
src/os/linux/parisc/Makefile \
src/os/linux/mips/Makefile \
+ src/os/linux/aarch64/Makefile \
src/os/darwin/i386/Makefile \
src/os/darwin/arm/Makefile \
src/os/darwin/powerpc/Makefile \
diff --git a/src/arch/Makefile.am b/src/arch/Makefile.am
index 078c1de..afb26d1 100644
--- a/src/arch/Makefile.am
+++ b/src/arch/Makefile.am
@@ -19,4 +19,4 @@
## Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
##
-EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h parisc.h mips.h
+EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h parisc.h mips.h aarch64.h
diff --git a/src/arch/aarch64.h b/src/arch/aarch64.h
new file mode 100644
index 0000000..c96aa9f
--- /dev/null
+++ b/src/arch/aarch64.h
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
+ * Robert Lougher <rob@lougher.org.uk>.
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
+ *
+ * This file is part of JamVM.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2,
+ * or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <stdint.h>
+
+#define OS_ARCH "aarch64"
+
+#define HANDLER_TABLE_T static const void
+#define DOUBLE_1_BITS 0x3ff0000000000000LL
+
+#define READ_DBL(v,p,l) v = ((u8)p[0]<<56)|((u8)p[1]<<48)|((u8)p[2]<<40) \
+ |((u8)p[3]<<32)|((u8)p[4]<<24)|((u8)p[5]<<16) \
+ |((u8)p[6]<<8)|(u8)p[7]; p+=8
+
+/* Needed for i386 -- empty here */
+#define FPU_HACK
+
+#define COMPARE_AND_SWAP_64(addr, old_val, new_val) \
+({ \
+ int result, read_val; \
+ __asm__ __volatile__ (" \
+ 1: ldaxr %2, %1; \
+ cmp %2, %3; \
+ b.ne 2f; \
+ stlxr %w0, %4, %1; \
+ cmp %w0, wzr; \
+ b.ne 1b; \
+ 2: cset %w0, eq;" \
+ : "=&r" (result), "+Q" (*addr), "=&r" (read_val) \
+ : "r" (old_val), "r" (new_val) \
+ : "cc"); \
+ result; \
+})
+
+#define COMPARE_AND_SWAP(addr, old_val, new_val) \
+ COMPARE_AND_SWAP_64(addr, old_val, new_val)
+
+#define LOCKWORD_READ(addr) \
+({ \
+ uintptr_t result; \
+ __asm__ __volatile__ (" \
+ ldar %0, %1;" \
+ : "=r" (result) \
+ : "Q" (*addr) \
+ : "cc"); \
+ result; \
+})
+
+#define LOCKWORD_WRITE(addr, value) \
+({ \
+ __asm__ __volatile__ (" \
+ stlr %1, %0;" \
+ : "=Q" (*addr) \
+ : "r" (value) \
+ : "cc"); \
+})
+
+#define LOCKWORD_COMPARE_AND_SWAP(addr, old_val, new_val) \
+ COMPARE_AND_SWAP_64(addr, old_val, new_val)
+
+#define FLUSH_CACHE(addr, length) \
+{ \
+ uintptr_t start = (uintptr_t) (addr); \
+ uintptr_t end = start + length; \
+ uintptr_t i; \
+ \
+ for(i = start & aarch64_data_cache_line_mask; \
+ i < end; \
+ i += aarch64_data_cache_line_len) \
+ __asm__ ("dc cvau, %0" :: "r" (i)); \
+ \
+ __asm__ ("dsb ish"); \
+ \
+ for(i = start & aarch64_instruction_cache_line_mask; \
+ i < end; \
+ i += aarch64_instruction_cache_line_len) \
+ __asm__ ("ic ivau, %0" :: "r" (i)); \
+ \
+ __asm__ ("dsb ish; isb"); \
+}
+
+#define MBARRIER() __asm__ ("dmb ish" ::: "memory")
+#define UNLOCK_MBARRIER() __asm__ ("dmb ish" ::: "memory")
+#define JMM_LOCK_MBARRIER() __asm__ ("dmb ish" ::: "memory")
+#define JMM_UNLOCK_MBARRIER() JMM_LOCK_MBARRIER()
+
+/* Defined in src/os/linux/aarch64/init.c */
+extern unsigned char aarch64_data_cache_line_len;
+extern uintptr_t aarch64_data_cache_line_mask;
+extern unsigned char aarch64_instruction_cache_line_len;
+extern uintptr_t aarch64_instruction_cache_line_mask;
diff --git a/src/os/linux/Makefile.am b/src/os/linux/Makefile.am
index aa29be1..d582b97 100644
--- a/src/os/linux/Makefile.am
+++ b/src/os/linux/Makefile.am
@@ -20,7 +20,7 @@
##
SUBDIRS = @arch@
-DIST_SUBDIRS = powerpc arm i386 x86_64 parisc mips
+DIST_SUBDIRS = powerpc arm i386 x86_64 parisc mips aarch64
noinst_LTLIBRARIES = libos.la
libos_la_SOURCES = os.c
diff --git a/src/os/linux/aarch64/Makefile.am b/src/os/linux/aarch64/Makefile.am
new file mode 100644
index 0000000..1024c3a
--- /dev/null
+++ b/src/os/linux/aarch64/Makefile.am
@@ -0,0 +1,28 @@
+##
+## Copyright (C) 2003, 2004, 2005, 2006, 2007, 2010, 2011, 2012
+## Robert Lougher <rob@lougher.org.uk>.
+##
+## File added by Simon South <simon@simonsouth.net>.
+##
+## This file is part of JamVM.
+##
+## This program is free software; you can redistribute it and/or
+## modify it under the terms of the GNU General Public License
+## as published by the Free Software Foundation; either version 2,
+## or (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+##
+
+noinst_LTLIBRARIES = libnative.la
+libnative_la_SOURCES = init.c dll_md.c callNative.S
+
+AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src
+AM_CCASFLAGS = -I$(top_builddir)/src
diff --git a/src/os/linux/aarch64/callNative.S b/src/os/linux/aarch64/callNative.S
new file mode 100644
index 0000000..e067c4f
--- /dev/null
+++ b/src/os/linux/aarch64/callNative.S
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2008, 2009, 2011, 2012 Robert Lougher <rob@jamvm.org.uk>.
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
+ *
+ * This file is part of JamVM.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2,
+ * or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#ifndef USE_FFI
+ .text
+ .arch armv8-a
+ .align 2
+ .global callJNIMethod
+ .type callJNIMethod,function
+
+/*
+ * Arguments passed in:
+ *
+ * x0 JNIEnv
+ * x1 class or NULL
+ * x2 sig
+ * w3 extra arg
+ * x4 ostack
+ * x5 function pntr
+ * w6 args count
+ */
+
+/* Register usage:
+ *
+ * x20 ostack
+ * x19 sig pntr
+ * x16 function pntr
+ * x15 ostack pntr
+ * x14 args pntr
+ * x13 float/double handler
+ * x12 int/long handler
+ * w11 fp regs remaining
+ * w10 int regs remaining
+ * x9 scratch
+ * x2-x7 outgoing int args
+ * x1 outgoing class or this pntr
+ * x0 outgoing JNIEnv (as passed in)
+ *
+ * d0 - d7 outgoing float args
+ */
+
+callJNIMethod:
+ stp x29, x30, [sp, #-32]!
+ mov x29, sp
+ stp x19, x20, [x29, #16]
+
+ sub sp, sp, w3 /* allocate room for stacked args */
+ mov x14, sp
+
+ mov x20, x4 /* preserve ostack */
+ add x19, x2, #1 /* init sig pntr -- skipping '(' */
+
+ mov x16, x5 /* save function pntr */
+ mov x15, x20 /* init ostack pntr */
+
+ adr x13, fp_reg_handlers-8
+ adr x12, int_reg_handlers-8
+
+ mov w11, #8 /* fp regs remaining */
+ mov w10, #6 /* int regs remaining */
+
+ cbnz x1, scan_sig /* is method non-static? */
+ ldr x1, [x15], #8 /* yes, load x1 with "this" */
+
+scan_sig:
+ ldrb w9, [x19], #1 /* get next sig char */
+
+ cmp w9, #41 /* ')' */
+ b.eq done
+
+ cmp w9, #74 /* 'J' */
+ b.eq long
+
+ cmp w9, #70 /* 'F' */
+ b.eq float
+
+ cmp w9, #68 /* 'D' */
+ b.eq double
+
+skip_brackets:
+ cmp w9, #91 /* '[' */
+ b.ne 1f
+ ldrb w9, [x19], #1
+ b skip_brackets
+1:
+ cmp w9, #76 /* 'L' */
+ b.ne int
+
+skip_ref:
+ ldrb w9, [x19], #1
+ cmp w9, #59 /* ';' */
+ b.ne skip_ref
+
+int:
+ ldr x9, [x15], #8
+ cbz w10, stack_push
+
+load_int_reg:
+ sub w10, w10, #1
+ add x12, x12, #8
+ br x12
+
+int_reg_handlers:
+ mov x2, x9
+ b scan_sig
+ mov x3, x9
+ b scan_sig
+ mov x4, x9
+ b scan_sig
+ mov x5, x9
+ b scan_sig
+ mov x6, x9
+ b scan_sig
+ mov x7, x9
+ b scan_sig
+
+long:
+ ldr x9, [x15], #16
+ cbz w10, stack_push
+ b load_int_reg
+
+float:
+ ldr w9, [x15], #8
+ cbz w11, stack_push
+ b load_fp_reg
+
+double:
+ ldr x9, [x15], #16
+ cbz w11, stack_push
+
+load_fp_reg:
+ sub w11, w11, #1
+ add x13, x13, #8
+ br x13
+
+fp_reg_handlers:
+ fmov d0, x9
+ b scan_sig
+ fmov d1, x9
+ b scan_sig
+ fmov d2, x9
+ b scan_sig
+ fmov d3, x9
+ b scan_sig
+ fmov d4, x9
+ b scan_sig
+ fmov d5, x9
+ b scan_sig
+ fmov d6, x9
+ b scan_sig
+ fmov d7, x9
+ b scan_sig
+
+stack_push:
+ str x9, [x14], #8
+ b scan_sig
+
+done:
+ /* Call the function */
+ blr x16
+
+ mov sp, x29 /* Pop argument area */
+
+ ldrb w9, [x19] /* Return type */
+
+ cmp w9, #86 /* 'V' */
+ b.eq return
+
+ cmp w9, #68 /* 'D' */
+ b.ne 2f
+ str d0, [x20], #16
+ b return
+2:
+ cmp w9, #70 /* 'F' */
+ b.ne 3f
+ str s0, [x20], #8
+ b return
+3:
+ cmp w9, #74 /* 'J' */
+ b.ne 4f
+ str x0, [x20], #16
+ b return
+4:
+ str x0, [x20], #8
+
+return:
+ mov x0, x20 /* return ostack */
+
+ ldp x19, x20, [x29, #16]
+ ldp x29, x30, [sp], #32
+ ret
+#endif
diff --git a/src/os/linux/aarch64/dll_md.c b/src/os/linux/aarch64/dll_md.c
new file mode 100644
index 0000000..189f8a8
--- /dev/null
+++ b/src/os/linux/aarch64/dll_md.c
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011
+ * Robert Lougher <rob@jamvm.org.uk>.
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
+ *
+ * This file is part of JamVM.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2,
+ * or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include "jam.h"
+
+#ifndef USE_FFI
+
+int nativeExtraArg(MethodBlock *mb) {
+ char *sig = mb->type;
+ int stack_args = 0;
+ int int_args = 6;
+ int fp_args = 8;
+
+ while(*++sig != ')')
+ switch(*sig) {
+ case 'F':
+ case 'D':
+ if(fp_args == 0)
+ stack_args += 8;
+ else
+ fp_args--;
+
+ default:
+ if(int_args == 0)
+ stack_args += 8;
+ else
+ int_args--;
+
+ if(*sig == '[')
+ while(*++sig == '[');
+ if(*sig == 'L')
+ while(*++sig != ';');
+ break;
+ }
+
+ /* Ensure the stack remains 16 byte aligned. */
+ return (stack_args + 15) & ~15;
+}
+
+#endif
diff --git a/src/os/linux/aarch64/init.c b/src/os/linux/aarch64/init.c
new file mode 100644
index 0000000..e03b446
--- /dev/null
+++ b/src/os/linux/aarch64/init.c
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007
+ * Robert Lougher <rob@lougher.org.uk>.
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
+ *
+ * This file is part of JamVM.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2,
+ * or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include "arch/aarch64.h"
+
+/* Length in bytes of the smallest line in the host system's data cache */
+unsigned char aarch64_data_cache_line_len;
+
+/* Mask used to align a virtual address to a line in the data cache */
+uintptr_t aarch64_data_cache_line_mask;
+
+/* Length in bytes of the smallest line in the host system's instruction
+ cache */
+unsigned char aarch64_instruction_cache_line_len;
+
+/* Mask used to align a virtual address to a line in the instruction cache */
+uintptr_t aarch64_instruction_cache_line_mask;
+
+void initialisePlatform() {
+ unsigned int cache_type;
+
+ /* Extract information from the cache-type register, which describes aspects
+ of the host's cache configuration */
+ __asm__ ("mrs %0, ctr_el0" : "=r" (cache_type));
+
+ aarch64_data_cache_line_len = 4 << ((cache_type >> 16) & 0x0f);
+ aarch64_data_cache_line_mask = ~(aarch64_data_cache_line_len - 1);
+
+ aarch64_instruction_cache_line_len = 4 << (cache_type & 0x0f);
+ aarch64_instruction_cache_line_mask =
+ ~(aarch64_instruction_cache_line_len - 1);
+}
--
2.26.2

View File

@ -0,0 +1,645 @@
From a44154f7a18496cc3e5fc0b1b2ea69523ebc623a Mon Sep 17 00:00:00 2001
From: Simon South <simon@simonsouth.net>
Date: Mon, 1 Jun 2020 07:09:34 -0400
Subject: [PATCH] Add support for aarch64 on GNU/Linux
---
AUTHORS | 1 +
README | 2 +-
configure.ac | 7 +-
src/arch/Makefile.am | 2 +-
src/arch/aarch64.h | 147 +++++++++++++++++++++
src/jam.c | 3 +-
src/os/linux/Makefile.am | 2 +-
src/os/linux/aarch64/Makefile.am | 28 ++++
src/os/linux/aarch64/callNative.S | 212 ++++++++++++++++++++++++++++++
src/os/linux/aarch64/dll_md.c | 59 +++++++++
src/os/linux/aarch64/init.c | 51 +++++++
11 files changed, 508 insertions(+), 6 deletions(-)
create mode 100644 src/arch/aarch64.h
create mode 100644 src/os/linux/aarch64/Makefile.am
create mode 100644 src/os/linux/aarch64/callNative.S
create mode 100644 src/os/linux/aarch64/dll_md.c
create mode 100644 src/os/linux/aarch64/init.c
diff --git a/AUTHORS b/AUTHORS
index e1334fe..6fd0eeb 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1 +1,2 @@
Robert Lougher <rob@jamvm.org.uk>
+Simon South <simon@simonsouth.net>
diff --git a/README b/README
index c9d80bb..0e93d00 100644
--- a/README
+++ b/README
@@ -77,7 +77,7 @@ versions of JamVM also includes stubs for common method signatures.
The following platforms/architectures are recognised by configure. Those
marked with * must be configured to use libffi.
-- Linux: x86, x86_64, ARM, PowerPC, PowerPC64(*), MIPS, HPPA
+- Linux: x86, x86_64, ARM, ARM64, PowerPC, PowerPC64(*), MIPS, HPPA
- FreeBSD: x86, x86_64, ARM, PowerPC, PowerPC64(*), SPARC(*)
- OpenBSD: x86, x86_64, ARM, PowerPC, PowerPC64(*), SPARC(*)
- Mac OS X/Darwin: x86, x86_64, ARM, PowerPC, PowerPC64
diff --git a/configure.ac b/configure.ac
index 138b7e6..e7051d7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -46,6 +46,7 @@ x86_64-*-freebsd*) host_os=bsd libdl_needed=no ;;
arm*-*-linux*) host_cpu=arm host_os=linux interp_cflags=-marm ;;
arm*-*-openbsd*) host_cpu=arm host_os=bsd libdl_needed=no ;;
arm*-*-freebsd*) host_cpu=arm host_os=bsd libdl_needed=no ;;
+aarch64*-*-linux*) host_cpu=aarch64 host_os=linux ;;
powerpc*-*-linux*) host_cpu=powerpc host_os=linux ;;
powerpc*-*-openbsd*) host_cpu=powerpc host_os=bsd libdl_needed=no ;;
powerpc*-*-freebsd*) host_cpu=powerpc host_os=bsd libdl_needed=no ;;
@@ -155,10 +156,11 @@ AC_ARG_ENABLE(runtime-reloc-checks,
AC_ARG_ENABLE(int-inlining,
[AS_HELP_STRING(--enable-int-inlining,enable inline threaded version of the interpreter
- (by default enabled on x86_64, i386, powerpc, mips and arm,
+ (by default enabled on x86_64, i386, powerpc, mips, arm and aarch64,
disabled otherwise))],,
[if test "$host_cpu" = x86_64 -o "$host_cpu" = i386 -o "$host_cpu" = x86 -o \
- "$host_cpu" = powerpc -o "$host_cpu" = arm -o "$host_cpu" = mips; then
+ "$host_cpu" = powerpc -o "$host_cpu" = arm -o "$host_cpu" = mips -o \
+ "$host_cpu" = aarch64; then
enable_int_inlining=yes
else
enable_int_inlining=no
@@ -407,6 +409,7 @@ AC_CONFIG_FILES(
src/os/linux/x86_64/Makefile \
src/os/linux/parisc/Makefile \
src/os/linux/mips/Makefile \
+ src/os/linux/aarch64/Makefile \
src/os/darwin/i386/Makefile \
src/os/darwin/arm/Makefile \
src/os/darwin/powerpc/Makefile \
diff --git a/src/arch/Makefile.am b/src/arch/Makefile.am
index 7580a1b..4e2a4f9 100644
--- a/src/arch/Makefile.am
+++ b/src/arch/Makefile.am
@@ -19,4 +19,4 @@
## Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
##
-EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h parisc.h mips.h sparc.h
+EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h parisc.h mips.h sparc.h aarch64.h
diff --git a/src/arch/aarch64.h b/src/arch/aarch64.h
new file mode 100644
index 0000000..1912e79
--- /dev/null
+++ b/src/arch/aarch64.h
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
+ * Robert Lougher <rob@jamvm.org.uk>.
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
+ *
+ * This file is part of JamVM.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2,
+ * or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <stdint.h>
+
+#define OS_ARCH "aarch64"
+
+#define HANDLER_TABLE_T static const void
+#define DOUBLE_1_BITS 0x3ff0000000000000LL
+
+#define READ_DBL(v,p,l) v = ((u8)p[0]<<56)|((u8)p[1]<<48)|((u8)p[2]<<40) \
+ |((u8)p[3]<<32)|((u8)p[4]<<24)|((u8)p[5]<<16) \
+ |((u8)p[6]<<8)|(u8)p[7]; p+=8
+
+/* Needed for i386 -- empty here */
+#define FPU_HACK
+
+#define COMPARE_AND_SWAP_64(addr, old_val, new_val) \
+({ \
+ int result, read_val; \
+ __asm__ __volatile__ (" \
+ 1: ldaxr %2, %1; \
+ cmp %2, %3; \
+ b.ne 2f; \
+ stlxr %w0, %4, %1; \
+ cmp %w0, wzr; \
+ b.ne 1b; \
+ 2: cset %w0, eq;" \
+ : "=&r" (result), "+Q" (*addr), "=&r" (read_val) \
+ : "r" (old_val), "r" (new_val) \
+ : "cc"); \
+ result; \
+})
+
+#define COMPARE_AND_SWAP_32(addr, old_val, new_val) \
+({ \
+ int result, read_val; \
+ __asm__ __volatile__ (" \
+ 1: ldaxr %w2, %1; \
+ cmp %w2, %w3; \
+ b.ne 2f; \
+ stlxr %w0, %w4, %1; \
+ cmp %w0, wzr; \
+ b.ne 1b; \
+ 2: cset %w0, eq;" \
+ : "=&r" (result), "+Q" (*addr), "=&r" (read_val) \
+ : "r" (old_val), "r" (new_val) \
+ : "cc"); \
+ result; \
+})
+
+#define COMPARE_AND_SWAP(addr, old_val, new_val) \
+ COMPARE_AND_SWAP_64(addr, old_val, new_val)
+
+#define LOCKWORD_READ(addr) \
+({ \
+ uintptr_t result; \
+ __asm__ __volatile__ (" \
+ ldar %0, %1;" \
+ : "=r" (result) \
+ : "Q" (*addr) \
+ : "cc"); \
+ result; \
+})
+
+#define LOCKWORD_WRITE(addr, value) \
+({ \
+ __asm__ __volatile__ (" \
+ stlr %1, %0;" \
+ : "=Q" (*addr) \
+ : "r" (value) \
+ : "cc"); \
+})
+
+#define LOCKWORD_COMPARE_AND_SWAP(addr, old_val, new_val) \
+ COMPARE_AND_SWAP_64(addr, old_val, new_val)
+
+#define FLUSH_CACHE(addr, length) \
+{ \
+ uintptr_t start = (uintptr_t) (addr); \
+ uintptr_t end = start + length; \
+ uintptr_t i; \
+ \
+ for(i = start & aarch64_data_cache_line_mask; \
+ i < end; \
+ i += aarch64_data_cache_line_len) \
+ __asm__ ("dc cvau, %0" :: "r" (i)); \
+ \
+ __asm__ ("dsb ish"); \
+ \
+ for(i = start & aarch64_instruction_cache_line_mask; \
+ i < end; \
+ i += aarch64_instruction_cache_line_len) \
+ __asm__ ("ic ivau, %0" :: "r" (i)); \
+ \
+ __asm__ ("dsb ish; isb"); \
+}
+
+#define GEN_REL_JMP(target_addr, patch_addr, patch_size) \
+({ \
+ int patched = FALSE; \
+ \
+ if(patch_size >= 4) { \
+ /* Guard against the pointer difference being \
+ larger than the signed range */ \
+ long long offset = (uintptr_t)(target_addr) - \
+ (uintptr_t)(patch_addr); \
+ \
+ if(offset >= -1<<28 && offset < 1<<28) { \
+ *(uint32_t*)(patch_addr) = offset>>2 & 0x03ffffff \
+ | 0x14000000; \
+ patched = TRUE; \
+ } \
+ } \
+ patched; \
+})
+
+#define MBARRIER() __asm__ ("dmb ish" ::: "memory")
+#define RMBARRIER() __asm__ ("dmb ishld" ::: "memory")
+#define WMBARRIER() __asm__ ("dmb ishst" ::: "memory")
+#define JMM_LOCK_MBARRIER() __asm__ ("dmb ish" ::: "memory")
+#define JMM_UNLOCK_MBARRIER() JMM_LOCK_MBARRIER()
+
+/* Defined in src/os/linux/aarch64/init.c */
+extern unsigned char aarch64_data_cache_line_len;
+extern uintptr_t aarch64_data_cache_line_mask;
+extern unsigned char aarch64_instruction_cache_line_len;
+extern uintptr_t aarch64_instruction_cache_line_mask;
diff --git a/src/jam.c b/src/jam.c
index 052f84a..c97524a 100644
--- a/src/jam.c
+++ b/src/jam.c
@@ -98,7 +98,8 @@ void showUsage(char *name) {
void showVersionAndCopyright() {
printf("java version \"%s\"\n", JAVA_COMPAT_VERSION);
printf("JamVM version %s\n", VERSION);
- printf("Copyright (C) 2003-2014 Robert Lougher <rob@jamvm.org.uk>\n\n");
+ printf("Copyright (C) 2003-2014 Robert Lougher <rob@jamvm.org.uk>\n");
+ printf("Portions Copyright (C) 2020 Simon South <simon@simonsouth.net>\n\n");
printf("This program is free software; you can redistribute it and/or\n");
printf("modify it under the terms of the GNU General Public License\n");
printf("as published by the Free Software Foundation; either version 2,\n");
diff --git a/src/os/linux/Makefile.am b/src/os/linux/Makefile.am
index 542094e..83e7dfe 100644
--- a/src/os/linux/Makefile.am
+++ b/src/os/linux/Makefile.am
@@ -20,7 +20,7 @@
##
SUBDIRS = @arch@
-DIST_SUBDIRS = powerpc arm i386 x86_64 parisc mips
+DIST_SUBDIRS = powerpc arm i386 x86_64 parisc mips aarch64
noinst_LTLIBRARIES = libos.la
libos_la_SOURCES = os.c
diff --git a/src/os/linux/aarch64/Makefile.am b/src/os/linux/aarch64/Makefile.am
new file mode 100644
index 0000000..0e5134f
--- /dev/null
+++ b/src/os/linux/aarch64/Makefile.am
@@ -0,0 +1,28 @@
+##
+## Copyright (C) 2003, 2004, 2005, 2006, 2007, 2010, 2011, 2012
+## Robert Lougher <rob@jamvm.org.uk>.
+##
+## File added by Simon South <simon@simonsouth.net>.
+##
+## This file is part of JamVM.
+##
+## This program is free software; you can redistribute it and/or
+## modify it under the terms of the GNU General Public License
+## as published by the Free Software Foundation; either version 2,
+## or (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+##
+
+noinst_LTLIBRARIES = libnative.la
+libnative_la_SOURCES = init.c dll_md.c callNative.S
+
+AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src
+AM_CCASFLAGS = -I$(top_builddir)/src
diff --git a/src/os/linux/aarch64/callNative.S b/src/os/linux/aarch64/callNative.S
new file mode 100644
index 0000000..e067c4f
--- /dev/null
+++ b/src/os/linux/aarch64/callNative.S
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2008, 2009, 2011, 2012 Robert Lougher <rob@jamvm.org.uk>.
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
+ *
+ * This file is part of JamVM.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2,
+ * or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#ifndef USE_FFI
+ .text
+ .arch armv8-a
+ .align 2
+ .global callJNIMethod
+ .type callJNIMethod,function
+
+/*
+ * Arguments passed in:
+ *
+ * x0 JNIEnv
+ * x1 class or NULL
+ * x2 sig
+ * w3 extra arg
+ * x4 ostack
+ * x5 function pntr
+ * w6 args count
+ */
+
+/* Register usage:
+ *
+ * x20 ostack
+ * x19 sig pntr
+ * x16 function pntr
+ * x15 ostack pntr
+ * x14 args pntr
+ * x13 float/double handler
+ * x12 int/long handler
+ * w11 fp regs remaining
+ * w10 int regs remaining
+ * x9 scratch
+ * x2-x7 outgoing int args
+ * x1 outgoing class or this pntr
+ * x0 outgoing JNIEnv (as passed in)
+ *
+ * d0 - d7 outgoing float args
+ */
+
+callJNIMethod:
+ stp x29, x30, [sp, #-32]!
+ mov x29, sp
+ stp x19, x20, [x29, #16]
+
+ sub sp, sp, w3 /* allocate room for stacked args */
+ mov x14, sp
+
+ mov x20, x4 /* preserve ostack */
+ add x19, x2, #1 /* init sig pntr -- skipping '(' */
+
+ mov x16, x5 /* save function pntr */
+ mov x15, x20 /* init ostack pntr */
+
+ adr x13, fp_reg_handlers-8
+ adr x12, int_reg_handlers-8
+
+ mov w11, #8 /* fp regs remaining */
+ mov w10, #6 /* int regs remaining */
+
+ cbnz x1, scan_sig /* is method non-static? */
+ ldr x1, [x15], #8 /* yes, load x1 with "this" */
+
+scan_sig:
+ ldrb w9, [x19], #1 /* get next sig char */
+
+ cmp w9, #41 /* ')' */
+ b.eq done
+
+ cmp w9, #74 /* 'J' */
+ b.eq long
+
+ cmp w9, #70 /* 'F' */
+ b.eq float
+
+ cmp w9, #68 /* 'D' */
+ b.eq double
+
+skip_brackets:
+ cmp w9, #91 /* '[' */
+ b.ne 1f
+ ldrb w9, [x19], #1
+ b skip_brackets
+1:
+ cmp w9, #76 /* 'L' */
+ b.ne int
+
+skip_ref:
+ ldrb w9, [x19], #1
+ cmp w9, #59 /* ';' */
+ b.ne skip_ref
+
+int:
+ ldr x9, [x15], #8
+ cbz w10, stack_push
+
+load_int_reg:
+ sub w10, w10, #1
+ add x12, x12, #8
+ br x12
+
+int_reg_handlers:
+ mov x2, x9
+ b scan_sig
+ mov x3, x9
+ b scan_sig
+ mov x4, x9
+ b scan_sig
+ mov x5, x9
+ b scan_sig
+ mov x6, x9
+ b scan_sig
+ mov x7, x9
+ b scan_sig
+
+long:
+ ldr x9, [x15], #16
+ cbz w10, stack_push
+ b load_int_reg
+
+float:
+ ldr w9, [x15], #8
+ cbz w11, stack_push
+ b load_fp_reg
+
+double:
+ ldr x9, [x15], #16
+ cbz w11, stack_push
+
+load_fp_reg:
+ sub w11, w11, #1
+ add x13, x13, #8
+ br x13
+
+fp_reg_handlers:
+ fmov d0, x9
+ b scan_sig
+ fmov d1, x9
+ b scan_sig
+ fmov d2, x9
+ b scan_sig
+ fmov d3, x9
+ b scan_sig
+ fmov d4, x9
+ b scan_sig
+ fmov d5, x9
+ b scan_sig
+ fmov d6, x9
+ b scan_sig
+ fmov d7, x9
+ b scan_sig
+
+stack_push:
+ str x9, [x14], #8
+ b scan_sig
+
+done:
+ /* Call the function */
+ blr x16
+
+ mov sp, x29 /* Pop argument area */
+
+ ldrb w9, [x19] /* Return type */
+
+ cmp w9, #86 /* 'V' */
+ b.eq return
+
+ cmp w9, #68 /* 'D' */
+ b.ne 2f
+ str d0, [x20], #16
+ b return
+2:
+ cmp w9, #70 /* 'F' */
+ b.ne 3f
+ str s0, [x20], #8
+ b return
+3:
+ cmp w9, #74 /* 'J' */
+ b.ne 4f
+ str x0, [x20], #16
+ b return
+4:
+ str x0, [x20], #8
+
+return:
+ mov x0, x20 /* return ostack */
+
+ ldp x19, x20, [x29, #16]
+ ldp x29, x30, [sp], #32
+ ret
+#endif
diff --git a/src/os/linux/aarch64/dll_md.c b/src/os/linux/aarch64/dll_md.c
new file mode 100644
index 0000000..189f8a8
--- /dev/null
+++ b/src/os/linux/aarch64/dll_md.c
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011
+ * Robert Lougher <rob@jamvm.org.uk>.
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
+ *
+ * This file is part of JamVM.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2,
+ * or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include "jam.h"
+
+#ifndef USE_FFI
+
+int nativeExtraArg(MethodBlock *mb) {
+ char *sig = mb->type;
+ int stack_args = 0;
+ int int_args = 6;
+ int fp_args = 8;
+
+ while(*++sig != ')')
+ switch(*sig) {
+ case 'F':
+ case 'D':
+ if(fp_args == 0)
+ stack_args += 8;
+ else
+ fp_args--;
+
+ default:
+ if(int_args == 0)
+ stack_args += 8;
+ else
+ int_args--;
+
+ if(*sig == '[')
+ while(*++sig == '[');
+ if(*sig == 'L')
+ while(*++sig != ';');
+ break;
+ }
+
+ /* Ensure the stack remains 16 byte aligned. */
+ return (stack_args + 15) & ~15;
+}
+
+#endif
diff --git a/src/os/linux/aarch64/init.c b/src/os/linux/aarch64/init.c
new file mode 100644
index 0000000..b21dc55
--- /dev/null
+++ b/src/os/linux/aarch64/init.c
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007
+ * Robert Lougher <rob@jamvm.org.uk>.
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
+ *
+ * This file is part of JamVM.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2,
+ * or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include "arch/aarch64.h"
+
+/* Length in bytes of the smallest line in the host system's data cache */
+unsigned char aarch64_data_cache_line_len;
+
+/* Mask used to align a virtual address to a line in the data cache */
+uintptr_t aarch64_data_cache_line_mask;
+
+/* Length in bytes of the smallest line in the host system's instruction
+ cache */
+unsigned char aarch64_instruction_cache_line_len;
+
+/* Mask used to align a virtual address to a line in the instruction cache */
+uintptr_t aarch64_instruction_cache_line_mask;
+
+void initialisePlatform() {
+ unsigned int cache_type;
+
+ /* Extract information from the cache-type register, which describes aspects
+ of the host's cache configuration */
+ __asm__ ("mrs %0, ctr_el0" : "=r" (cache_type));
+
+ aarch64_data_cache_line_len = 4 << ((cache_type >> 16) & 0x0f);
+ aarch64_data_cache_line_mask = ~(aarch64_data_cache_line_len - 1);
+
+ aarch64_instruction_cache_line_len = 4 << (cache_type & 0x0f);
+ aarch64_instruction_cache_line_mask =
+ ~(aarch64_instruction_cache_line_len - 1);
+}
--
2.26.2

View File

@ -0,0 +1,35 @@
From ca11b53896365c948426974cb90e8f71c70d123b Mon Sep 17 00:00:00 2001
From: Simon South <simon@simonsouth.net>
Date: Sun, 31 May 2020 20:36:43 -0400
Subject: [PATCH] Guard floating-point opcodes with explicit memory barrier
---
src/interp/engine/interp-inlining.h | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/interp/engine/interp-inlining.h b/src/interp/engine/interp-inlining.h
index 3339b0e..4ee5c5a 100644
--- a/src/interp/engine/interp-inlining.h
+++ b/src/interp/engine/interp-inlining.h
@@ -78,8 +78,17 @@
4.3, we need to insert a label, and ensure its address
is taken (to stop it being optimised out). However,
this reduces performance on PowerPC by approx 1 - 2%.
+
+ With gcc 5 and newer an asm statement with a "memory"
+ clobber argument explicitly sets a memory barrier for the
+ compiler, preventing it from reordering memory accesses
+ in a way that breaks decaching.
*/
-#if (__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)
+#if (__GNUC__ > 4)
+#define DEF_GUARD_TABLE(level) /* none */
+#define GUARD(opcode, level) __asm__("" ::: "memory");
+#define GUARD_TBLS /* none */
+#elif (__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)
#define DEF_GUARD_TABLE(level) DEF_HANDLER_TABLE(level, GUARD)
#define GUARD(opcode, level) label(opcode, level, GUARD)
#define GUARD_TBLS , HNDLR_TBLS(GUARD)
--
2.26.2

View File

@ -11,7 +11,7 @@ SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="1.5"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
DEPEND="dev-java/gnu-classpath:0.93"
@ -30,6 +30,7 @@ src_prepare() {
src_configure() {
export JAVAC="${EPREFIX}/usr/bin/jikes-bin"
epatch "${FILESDIR}/classes-location.patch"
epatch "${FILESDIR}/${P}-aarch64-support.patch"
sed -i -e "s/return CLASSPATH_INSTALL_DIR\"\/lib\/classpath\";/return CLASSPATH_INSTALL_DIR\"\/$(get_libdir)\/classpath\";/g" src/dll.c || die "Sed failed!"
eautoreconf

View File

@ -11,7 +11,7 @@ SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="2.0-2"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
IUSE="libffi"
DEPEND="dev-java/gnu-classpath:0.99-devel
@ -22,8 +22,10 @@ DEPEND="dev-java/gnu-classpath:0.99-devel
RDEPEND="${DEPEND}"
PATCHES=(
"${FILESDIR}"/"${P}-2-classes-location.patch"
"${FILESDIR}"/"${P}-noexecstack.patch"
"${FILESDIR}/${P}-2-classes-location.patch"
"${FILESDIR}/${P}-noexecstack.patch"
"${FILESDIR}/${P}-aarch64-support.patch"
"${FILESDIR}/${P}-opcode-guard.patch"
)
src_prepare() {

View File

@ -11,7 +11,7 @@ SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="2.0-3"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
IUSE="libffi"
DEPEND="dev-java/gnu-classpath:0.99-devel
@ -22,8 +22,10 @@ DEPEND="dev-java/gnu-classpath:0.99-devel
RDEPEND="${DEPEND}"
PATCHES=(
"${FILESDIR}"/"${P}-3-classes-location.patch"
"${FILESDIR}"/"${P}-noexecstack.patch"
"${FILESDIR}/${P}-3-classes-location.patch"
"${FILESDIR}/${P}-noexecstack.patch"
"${FILESDIR}/${P}-aarch64-support.patch"
"${FILESDIR}/${P}-opcode-guard.patch"
)
src_prepare() {

View File

@ -11,7 +11,7 @@ SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="2.0"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
IUSE="libffi"
DEPEND="dev-java/gnu-classpath:0.99
@ -22,8 +22,10 @@ DEPEND="dev-java/gnu-classpath:0.99
RDEPEND="${DEPEND}"
PATCHES=(
"${FILESDIR}"/"${P}-classes-location.patch"
"${FILESDIR}"/"${P}-noexecstack.patch"
"${FILESDIR}/${P}-classes-location.patch"
"${FILESDIR}/${P}-noexecstack.patch"
"${FILESDIR}/${P}-aarch64-support.patch"
"${FILESDIR}/${P}-opcode-guard.patch"
)
src_prepare() {

View File

@ -2,5 +2,5 @@ AUX compiler-settings 147 BLAKE2B 699ec782bb528c1da7d1b825fca9d4c9075bdd46e0f615
AUX deprecated.patch 995 BLAKE2B ce8856e45ecab3dd69c5a044bdc966f00c3b5764f7ea42b7c542985168d36b0cff3fb436a93f5b63a9a6bd99fc3ea513e1016e9a337e6188b1a3d4a4b111c265 SHA512 a99d25d3cb588677695d5ce549ef476b3bededd8ea2e84835fb9e3af57c182fc2a87ca539991e963a9aae22ff437e453a8e2e20f15e08dbcdfbf83a44d084a18
AUX jikes 393 BLAKE2B 827f7b3dc28da8e751057695e9e7d1403b0671db07443457833da5043f75270fa51fae9ffa16fa0c5788a139ffe500018f4723cf9d5977dbc4bd278cd6777110 SHA512 d3ee8ae832cd026535b547cc1850e8a786d004ab76c9776be5ddfa9a9bbb32aa06a004b0a08cd61abb78ccb2202fafe79cc1e8ee7dc625e36943b8c5e99176c4
DIST jikes-1.22.tar.bz2 616655 BLAKE2B a4b69c014394c511aab2b52284eeae5d2ec3209d4edc315102f233d1053ced214612d7c8879c4c88140b26e7be852736c69b8a699c8ce831cd579d8ee8fea56e SHA512 6b318f49f075da0cf0558512748bd77072f5b5b0428160538bcba01201c94719ec0f4b0cd0159ddb04fb3a86c323c8f11f09dc4b31cf880fb94e00c1ee0bbc58
EBUILD jikes-1.22-r13.ebuild 837 BLAKE2B 5b2ff2698d888a47547fb6f603e7238d9f866f00a4972691b554691f2cd91772b5f43399c368b6dda7a30ae3f1bf4ab2366610688b324568c49c8d2131df5199 SHA512 837c759d92f8052a625e71bc4e6698798ccd7e84257157d7c8f5bc427f644d90cef0c66df2bc37c313545d224592d14d0fea34a27c5e51b41ccc70393ca08219
EBUILD jikes-1.22-r13.ebuild 836 BLAKE2B 6ee6bb2bbf7f8a54ef6813d1fa413be494d574fc790a02a35a3b334f46c4c7b093b09e24fa19f8e0820c7171ced3f2a8963022449c2566726b83f395fa06e2dc SHA512 24b74001cc52d2e8e8507637b236b76c06c888b4d57419fa062c18ff8562ed083765e8b85eb4285c63ea17862b540d4ac44d7a572ef9cc89f7019e35c317b98c
MISC metadata.xml 390 BLAKE2B c6509d0728b476d3bc7d596a11e7477b75cae7c3c3918e18ae0f6bb5fdd04edb62e22f1dca148843d82760406ef2e9f4da43e3348b396801dbb3f07a322e5fae SHA512 ab625d234114a10cf0074c97cc4ec2fe9a191be282c9faca739964d36fc790199f4a6d6788fe4f6d3e9279e80b44f909aacfb3c5a595334b3b4bcc19f5f343e4

View File

@ -10,7 +10,7 @@ HOMEPAGE="http://jikes.sourceforge.net/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2"
LICENSE="IBM"
SLOT="0"
KEYWORDS="amd64 ~arm64"
KEYWORDS="amd64 arm64"
RDEPEND=">=dev-java/java-config-2.0.0"
src_unpack() {

View File

@ -1,4 +1,4 @@
EBUILD jdk-1.4.ebuild 228 BLAKE2B b8d13df90ece66eacbd60e27632b8c24792374fb8bac3cd8a0bd15c6c351aedc122447b979a8af6774cc0f600ea0f6105105b6954c3c92058a5bf39aaf3f8b73 SHA512 28fc9af3aee5105d8a62cce67d6ec39b024f3443d2a311d683445b7a0d89f0bd357c5278a3968d48edf5136fe4b0010a46efffa93e74931b90278fa21e7ed93f
EBUILD jdk-1.5.ebuild 299 BLAKE2B 7afa97c8d9c66930a366d3028ffea4bc17d14f16a06fc26be0e12b8c0b461948d67a6f2abb1d00e822fa01aadbd276d6802ff8aebc066e3b7b63ff778d3bab1d SHA512 17951a5d0a4eb79bd35ee30d60ec55029a9d3744e6eaffba8a545330b9b68fac2480bc9c6a17d39cdae5ccbd5229bb2999046fe3550f547cb3c3313f99f2be4d
EBUILD jdk-1.6.ebuild 307 BLAKE2B 0e31699224424cd04a701d4f4d4b9eb90361c8c78e3c659a5f81f42086e8f7765ddb2e00c0d093213588200a9a9b83ddd3bf3087d119e78e90d30939662f3b52 SHA512 7affd522fadb5f3ae118228ed9d7d00bbe45d5359ece6b36782a608e3793f9dd060be36173da86584585bb494a09721a4625ea115aa6e68ff9bca2f5c2dd7680
EBUILD jdk-1.4.ebuild 234 BLAKE2B 601d5970f79820627ca26c4ecbda709e2e6a2b49dae9a6738e13cef92520a383e1a210cc57279d45b4668323870af4082b3f7c4a00bd5833edb13b4322418a67 SHA512 cddaef73827a336ad746a650d0b8bce63482d6786b3d727e7998ef24ac4a4ffe77859482dd657b9d301ae26a7161c2e4f4d6ec45245ff7f33835e33b9649af2d
EBUILD jdk-1.5.ebuild 305 BLAKE2B 7d73f2566dfcfdde7d1875232bc095133025872e508e749851553d837b838661ec6068bbda5c5463f000f19141a81483d61c0bba41828c2328af964c9d6fdf0d SHA512 5a5e6b8c05e0aa300878498b7605a0c6936d23c95dbdd3ce4042600b9c94423656438cefd7ad0ddb02c395482e475eb5ada9d9193f7676ec4e40127a873ab76a
EBUILD jdk-1.6.ebuild 313 BLAKE2B e6fa5c4e97874baba34d7ad99015cef0a69fa0601bf7c267de37e69a88fbf37d328761a491a06e5198f4a4bbc4e00928d5aeea1bd488c913c6aef0fcf5efe41e SHA512 332f4532b82f32f3c3199bbd8b07525bc514cf4f5b6a018eaa01d4668021abc0a03da9d9c2ba451f5a91336bd4797fb561b521f8323a9713a493be6f91d13464
MISC metadata.xml 252 BLAKE2B a3a36edd6c0b4e630f0e38d236ff4133a5c6b4aa42f5525d8a0978ecdbbe3d53602d3fcde02cf1a495bfabb4fd06f914826df44bda7f542ce8543b32fd7bbfe2 SHA512 1ab83f56876901e45f2b34aa5c81bd1d7b243009236d238b49fca2d49ec167c596ea589de6df1c8dfe1a6b834a2e0e493409ee65d499bd2b6ecaf687ae71df69

View File

@ -5,6 +5,6 @@ EAPI="7"
DESCRIPTION="Virtual for Java Development Kit (JDK)"
SLOT="${PV}"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
RDEPEND="dev-java/jamvm:1.5"

View File

@ -5,7 +5,7 @@ EAPI="7"
DESCRIPTION="Virtual for Java Development Kit (JDK)"
SLOT="${PV}"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
RDEPEND="dev-java/jamvm:2.0
dev-java/eclipse-ecj:3.2

View File

@ -5,7 +5,7 @@ EAPI="7"
DESCRIPTION="Virtual for Java Development Kit (JDK)"
SLOT="${PV}"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
RDEPEND="dev-java/jamvm:2.0-3
dev-java/eclipse-ecj:4.2

View File

@ -1,4 +1,4 @@
EBUILD jre-1.4.ebuild 254 BLAKE2B 1f647e1884b94c0371f77d006cc00c1231a8ee8839f7e9010eccfb50edd785c62386bacd289df04173e460313aa66dae87967d0cd5269f25d53f6b0d4e73c924 SHA512 b944e9a74449795561e28c34f0dab19a529a2ebb7813efedb6a721956f91df379faa1a7416641b19f43129e1d50d3ad1b138b0c824daefef1b96ac009d13298e
EBUILD jre-1.5.ebuild 254 BLAKE2B 15695c42ab53e92ac36e94e1a180660caf4a9096ac04071f5b6a7a8241924e3f376b731a0da61ceedda287b6c2d46c3de54ea6bc70206daf98dae00037f7f050 SHA512 0660c4aefc799ac147af86b8a1bc0e3ccdd25ce0c44579f2b1ff0f5ead90622829e36a2c10c8d97f4438848c7844f8c01504e5d5918601d3ac4d6067cb9c547c
EBUILD jre-1.6.ebuild 235 BLAKE2B 65f9dcfc8e1b2918e90022e55b5724f612a47516b213417ec8fdd498436e5246167d95669f75754664513a103a2c5b7f54b5b5372d0dc0205fe31fe3e0ae886c SHA512 5534dd2be6bd69e6e4b8897b204c1dc7ffe77b9454fd11db9296b2d26c4cf5aa9b1a23f88e3f51f365c3aee56c87221eb39569fa9c608d3c013a7edfd08aaafb
EBUILD jre-1.4.ebuild 260 BLAKE2B 15efa7a3014f74cf604d09bb292ee4abce7e5666ea719d8009963c1280801296ff9d94559951c2a705a7761784b1b06fabf7e079cede54447f3c143e917d1e56 SHA512 b484cb1151a38f458fbf7100e087b29ce1c33013c412a3098c1586c82f2c3e436bce587c0456a712aadd15cf83d1fc26d9e4be0685a6f94056cdccc0d210fb28
EBUILD jre-1.5.ebuild 260 BLAKE2B 9a4d870bba9f0d01234eb1790b0a291c5894a1a0f2a918d9472d2c44435be54149fbc1c8951e2e23ec3f9b188be5f7549fa9a341513530f353a32e2b6fe051b5 SHA512 10f6a82d241f0241cfc7ac6082630e22618fe9756d35e6326ae082186f65310630a4f9183891675735a8180b82870d25421a46c3fd0c3b35183aa79e8cdd3e34
EBUILD jre-1.6.ebuild 241 BLAKE2B 6541bc97ce1235035d91492ae3606f3cc52dd4077f93c0b3581d4a9b296a8291359a62e981790d9535849498881b35b78240606e54137c5540c0b93759ef9ab7 SHA512 07984efd4c1ce70ff95541a5073a86eb9cb3653e20767c6d0af54f079b8be0445d0d34d576696f54cac20b762cde707db9f5af0e0aaacfcf4b228c867254c1c1
MISC metadata.xml 252 BLAKE2B a3a36edd6c0b4e630f0e38d236ff4133a5c6b4aa42f5525d8a0978ecdbbe3d53602d3fcde02cf1a495bfabb4fd06f914826df44bda7f542ce8543b32fd7bbfe2 SHA512 1ab83f56876901e45f2b34aa5c81bd1d7b243009236d238b49fca2d49ec167c596ea589de6df1c8dfe1a6b834a2e0e493409ee65d499bd2b6ecaf687ae71df69

View File

@ -5,7 +5,7 @@ EAPI=7
DESCRIPTION="Virtual for Java Runtime Environment (JRE)"
SLOT="${PV}"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
RDEPEND="
virtual/jdk:${SLOT}

View File

@ -5,7 +5,7 @@ EAPI=7
DESCRIPTION="Virtual for Java Runtime Environment (JRE)"
SLOT="${PV}"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
RDEPEND="
virtual/jdk:${SLOT}

View File

@ -5,7 +5,7 @@ EAPI=7
DESCRIPTION="Virtual for Java Runtime Environment (JRE)"
SLOT="${PV}"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
RDEPEND="
dev-java/jamvm:2.0-2