summaryrefslogtreecommitdiffstats
path: root/meta-aarch64
diff options
context:
space:
mode:
authorTudor Florea <tudor.florea@enea.com>2015-10-08 22:46:13 +0200
committerTudor Florea <tudor.florea@enea.com>2015-10-08 22:46:13 +0200
commit8d89651ef729e560ad96dcfc002fcde6ff7f923b (patch)
treeeb5be01c25f735d12fe9881ee6327c9b7e8bbe39 /meta-aarch64
downloadmeta-linaro-dizzy-enea.tar.gz
initial commit for Enea Linux 5.0 armdizzy-enea
Signed-off-by: Tudor Florea <tudor.florea@enea.com>
Diffstat (limited to 'meta-aarch64')
-rw-r--r--meta-aarch64/conf/layer.conf14
-rw-r--r--meta-aarch64/conf/machine/genericarmv8.conf37
-rw-r--r--meta-aarch64/conf/machine/genericarmv8b.conf8
-rw-r--r--meta-aarch64/conf/machine/include/arm64/arch-armv8.inc20
-rw-r--r--meta-aarch64/recipes-core/openjdk/openjdk-8-common.inc267
-rw-r--r--meta-aarch64/recipes-core/openjdk/openjdk-8_0.1.bb29
-rw-r--r--meta-aarch64/recipes-core/packagegroups/packagegroup-core-sdk.bbappend16
-rw-r--r--meta-aarch64/recipes-kernel/kexec-tools/files/add-arm64-support.patch521
-rw-r--r--meta-aarch64/recipes-kernel/kexec-tools/kexec-tools_2.0.7.bbappend5
-rw-r--r--meta-aarch64/recipes-kernel/sysprof/sysprof_git.bbappend1
-rw-r--r--meta-aarch64/recipes-multimedia/pulseaudio/files/0001-libatomic_ops-Aarch64-basic-port.patch232
-rw-r--r--meta-aarch64/recipes-multimedia/pulseaudio/libatomics-ops_7.2.bbappend5
-rw-r--r--meta-aarch64/recipes-qt/qt4/files/aarch64.patch39
-rw-r--r--meta-aarch64/recipes-qt/qt4/qt4-x11-free_4.8.6.bbappend5
-rw-r--r--meta-aarch64/recipes-support/emacs/emacs_23.4.bbappend1
15 files changed, 1200 insertions, 0 deletions
diff --git a/meta-aarch64/conf/layer.conf b/meta-aarch64/conf/layer.conf
new file mode 100644
index 0000000..010a700
--- /dev/null
+++ b/meta-aarch64/conf/layer.conf
@@ -0,0 +1,14 @@
1BBPATH .= ":${LAYERDIR}"
2BBFILES += "\
3 ${LAYERDIR}/recipes*/*/*.bb \
4 ${LAYERDIR}/recipes*/*/*.bbappend \
5 "
6
7BBFILE_COLLECTIONS += "aarch64"
8BBFILE_PATTERN_aarch64 := "^${LAYERDIR}/"
9BBFILE_PRIORITY_aarch64 = "20"
10
11# do not error out on bbappends for missing recipes (mysql5)
12BB_DANGLINGAPPENDS_WARNONLY = "true"
13
14LAYERDEPENDS_aarch64 = "linaro linaro-toolchain"
diff --git a/meta-aarch64/conf/machine/genericarmv8.conf b/meta-aarch64/conf/machine/genericarmv8.conf
new file mode 100644
index 0000000..466900a
--- /dev/null
+++ b/meta-aarch64/conf/machine/genericarmv8.conf
@@ -0,0 +1,37 @@
1#@TYPE: Machine
2#@NAME: generic armv8 machine
3#@DESCRIPTION: generic machine to be used by linaro-media-create
4
5require conf/machine/include/arm64/arch-armv8.inc
6
7PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
8
9XSERVER ?= "xserver-xorg \
10 mesa-driver-swrast \
11 xf86-input-evdev \
12 xf86-input-mouse \
13 xf86-video-fbdev \
14 xf86-input-keyboard"
15
16MACHINE_FEATURES = ""
17
18# Don't include kernels in standard images
19RDEPENDS_kernel-base = ""
20
21PREFERRED_PROVIDER_virtual/kernel ?= "linux-linaro-aarch64"
22
23KERNEL_IMAGETYPE = "Image"
24
25# We have to disable SERIAL_CONSOLE due to auto-serial-console
26#SERIAL_CONSOLE = "115200 ttyAMA0"
27
28# Force auto-serial-console to be used by all image types
29# Ideally this would be part of core oe or as a bbclassappend,
30# but as we don't have an easy way to append a class, defining
31# it here
32EXTRA_IMAGE_FEATURES += "autoserial"
33FEATURE_PACKAGES_autoserial = "auto-serial-console"
34
35# we do not want to have getty running on tty1 as we run
36# auto-serial-console there
37USE_VT = "0"
diff --git a/meta-aarch64/conf/machine/genericarmv8b.conf b/meta-aarch64/conf/machine/genericarmv8b.conf
new file mode 100644
index 0000000..e70de08
--- /dev/null
+++ b/meta-aarch64/conf/machine/genericarmv8b.conf
@@ -0,0 +1,8 @@
1#@TYPE: Machine
2#@NAME: generic armv8 big endian machine
3#@DESCRIPTION: generic machine to be used by linaro-media-create
4DEFAULTTUNE = "aarch64_be"
5
6PREFERRED_PROVIDER_virtual/kernel ?= "linux-dummy"
7
8require conf/machine/genericarmv8.conf
diff --git a/meta-aarch64/conf/machine/include/arm64/arch-armv8.inc b/meta-aarch64/conf/machine/include/arm64/arch-armv8.inc
new file mode 100644
index 0000000..c86142a
--- /dev/null
+++ b/meta-aarch64/conf/machine/include/arm64/arch-armv8.inc
@@ -0,0 +1,20 @@
1DEFAULTTUNE ?= "aarch64"
2
3ARMPKGARCH ?= "aarch64"
4
5TUNEVALID[aarch64] = "Enable instructions for aarch64"
6TUNEVALID[bigendian] = "Enable big-endian mode."
7TUNECONFLICTS[aarch64] = ""
8MACHINEOVERRIDES .= "${@bb.utils.contains("TUNE_FEATURES", "aarch64", ":aarch64", "" ,d)}"
9
10# Little Endian base configs
11AVAILTUNES += "aarch64 aarch64_be"
12TUNE_FEATURES_tune-aarch64 ?= "aarch64"
13TUNE_FEATURES_tune-aarch64_be ?= "${TUNE_FEATURES_tune-aarch64} bigendian"
14
15ARMPKGSFX_ENDIAN = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "_be", "", d)}"
16
17TUNE_ARCH = "aarch64${ARMPKGSFX_ENDIAN}"
18TUNE_PKGARCH = "aarch64${ARMPKGSFX_ENDIAN}"
19
20PACKAGE_EXTRA_ARCHS = "aarch64${ARMPKGSFX_ENDIAN}"
diff --git a/meta-aarch64/recipes-core/openjdk/openjdk-8-common.inc b/meta-aarch64/recipes-core/openjdk/openjdk-8-common.inc
new file mode 100644
index 0000000..f251e14
--- /dev/null
+++ b/meta-aarch64/recipes-core/openjdk/openjdk-8-common.inc
@@ -0,0 +1,267 @@
1DESCRIPTION = "Java runtime based upon the OpenJDK8"
2HOMEPAGE = "http://openjdk.java.net/projects/jdk8"
3LICENSE = "GPL-2.0-with-classpath-exception"
4PRIORITY = "optional"
5SECTION = "libs"
6INHIBIT_PACKAGE_STRIP = "1"
7#INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
8
9INC_PR = "r16"
10
11SRC_URI = " \
12 ${OPENJDK_URI} \
13 "
14
15libdir_jvm ?= "${libdir}/jvm"
16
17JDKPN = "openjdk-8"
18JDK_DIR = "java-8-openjdk"
19JDK_HOME = "${libdir_jvm}/${JDK_DIR}"
20
21PN = "${JDKPN}-jre"
22PROVIDES += "${JDKPN}"
23
24DEPENDS = " \
25 zip-native \
26 zlib \
27 jpeg libpng giflib \
28 gtk+ glib-2.0 \
29 cups fontconfig \
30 libxt libxinerama libxrender libxtst libxi \
31 freetype alsa-lib libffi libxt \
32 "
33
34# No package should directly depend on this (it should require
35# java2-runtime instead).
36PRIVATE_LIBS = "\
37 libunpack.so libverify.so libjava.so libzip.so libnpt.so \
38 libjava_crw_demo.so libhprof.so libnet.so libnio.so \
39 libmanagement.so libinstrument.so libjsound.so libjsoundalsa.so \
40 libj2pcsc.so libj2pkcs11.so libj2gss.so libmlib_image.so \
41 libawt.so libsplashscreen.so libfreetype.so.6 libfontmanager.so \
42 libjpeg.so liblcms.so librmi.so libjawt.so libjaas_unix.so \
43 libattach.so libjdwp.so libdt_socket.so libhpi.so libjli.so \
44 libmawt.so libjvm.so \
45 libversionCheck.so libcompiledMethodLoad.so libgctest.so \
46 libheapViewer.so libheapTracker.so libminst.so libmtrace.so \
47 libwaiters.so libhprof.so \
48 "
49
50COMPATIBLE_HOST = "(aarch64).*-linux"
51JAVA_HOME[unexport] = "1"
52S="${WORKDIR}/openjdk8-aarch64-port-snapshot"
53
54# The compiler tests in do_configure seem to drop TARGET_CC_ARCH from $CC, so add it into CFLAGS.
55CFLAGS =+ "${TARGET_CC_ARCH} ${TOOLCHAIN_OPTIONS}"
56CXXFLAGS =+ "${TARGET_CC_ARCH} ${TOOLCHAIN_OPTIONS}"
57export EXTRA_CFLAGS = "${TOOLCHAIN_OPTIONS}"
58ASNEEDED = ""
59
60do_configure() {
61 unset MAKE
62 bash ./configure --with-debug-level=release --with-jvm-variants=client,server --with-sys-root=${STAGING_DIR_TARGET} --openjdk-target=${TARGET_SYS} --with-zlib=system --with-stdc++lib=dynamic --disable-ccache --disable-zip-debug-info
63}
64
65do_compile() {
66 make \
67 LOG=debug \
68 ALT_SDT_H=/openjdk/path/to/a/nonexistent/directory \
69 EXTRA_CFLAGS='${EXTRA_CFLAGS}' \
70 CC='${CC}' \
71 CXX='${CXX}' \
72 LD='${CC} ${LDFLAGS}' \
73 LDCXX='${CXX} ${LDFLAGS}' \
74 LDEXE='${CC} ${LDFLAGS}' \
75 LDEXECXX='${CXX} ${LDFLAGS}' \
76 images
77
78}
79
80do_install() {
81 install -d ${D}${libdir_jvm}
82 install -d ${D}${JDK_HOME}/jtreg
83 install -d ${D}${JDK_HOME}/jtreg/hotspot
84 install -d ${D}${JDK_HOME}/jtreg/jdk
85 cp -R ${S}/build/${BUILD_DIR}/j2sdk-image/* ${D}${JDK_HOME}
86 cp -R ${S}/hotspot/test ${D}${JDK_HOME}/jtreg/hotspot
87 cp -R ${S}/jdk/test ${D}${JDK_HOME}/jtreg/jdk
88# The OpenJDK build does its own thing with debuginfo files; as we
89# default to a 'release' build we remove these files.
90 find ${D}${JDK_HOME} -name \*.debuginfo -print | xargs rm
91# The upstream Mercurial repo has various incompatible binaries checked in.
92# Remove these otherwise bitbake complains about mismatched architecture, et al.
93 find ${D}${JDK_HOME}/jtreg -name \*.so -print | xargs rm
94 rm ${D}${JDK_HOME}/jtreg/jdk/test/sun/management/jmxremote/bootstrap/linux-i586/launcher
95 rm ${D}${JDK_HOME}/jtreg/jdk/test/sun/management/jmxremote/bootstrap/linux-amd64/launcher
96 rm ${D}${JDK_HOME}/jtreg/jdk/test/sun/management/jmxremote/bootstrap/solaris-sparcv9/launcher
97 rm ${D}${JDK_HOME}/jtreg/jdk/test/sun/management/jmxremote/bootstrap/solaris-amd64/launcher
98 chmod -R u+rw,go+r ${D}${JDK_HOME}
99}
100
101PACKAGES = " \
102 ${JDKPN}-jdk \
103 ${JDKPN}-doc \
104 ${JDKPN}-source \
105 ${JDKPN}-demo \
106 ${JDKPN}-jtreg \
107 ${JDKPN}-jre \
108 "
109
110FILES_${JDKPN}-jdk = " \
111 ${JDK_HOME}/bin \
112 ${JDK_HOME}/lib \
113 ${JDK_HOME}/include \
114 ${JDK_HOME}/ASSEMBLY_EXCEPTION \
115 ${JDK_HOME}/release \
116 ${JDK_HOME}/THIRD_PARTY_README \
117 ${JDK_HOME}/LICENSE \
118 "
119
120FILES_${JDKPN}-doc = " \
121 ${JDK_HOME}/man \
122 "
123
124FILES_${JDKPN}-source = " \
125 ${JDK_HOME}/src.zip \
126 "
127
128FILES_${JDKPN}-demo = " \
129 ${JDK_HOME}/demo \
130 ${JDK_HOME}/sample \
131 "
132
133FILES_${JDKPN}-jtreg = " \
134 ${JDK_HOME}/jtreg \
135 "
136
137FILES_${PN} = " \
138 ${JDK_HOME}/jre \
139 "
140
141INSANE_SKIP_${JDKPN}-jdk = "dev-so"
142INSANE_SKIP_${JDKPN}-jre = "dev-so"
143
144RPROVIDES_${JDKPN}-jre = "java2-runtime java2-vm"
145RPROVIDES_${JDKPN}-jdk = "java2-runtime java2-vm"
146RDEPENDS_${JDKPN}-demo = "java2-runtime"
147
148RRECOMMENDS_${JDKPN}-jre = "liberation-fonts"
149RRECOMMENDS_${JDKPN}-jdk = "liberation-fonts"
150
151inherit update-alternatives
152
153pkg_postinst_${JDKPN}-jre () {
154 update-alternatives --install ${bindir}/java java ${JDK_HOME}/jre/bin/java 75
155 update-alternatives --install ${bindir}/jjs jjs ${JDK_HOME}/jre/bin/jjs 75
156 update-alternatives --install ${bindir}/keytool keytool ${JDK_HOME}/jre/bin/keytool 75
157 update-alternatives --install ${bindir}/orbd orbd ${JDK_HOME}/jre/bin/orbd 75
158 update-alternatives --install ${bindir}/pack200 pack200 ${JDK_HOME}/jre/bin/pack200 75
159 update-alternatives --install ${bindir}/policytool policytool ${JDK_HOME}/jre/bin/policytool 75
160 update-alternatives --install ${bindir}/rmid rmid ${JDK_HOME}/jre/bin/rmid 75
161 update-alternatives --install ${bindir}/rmiregistry rmiregistry ${JDK_HOME}/jre/bin/rmiregistry 75
162 update-alternatives --install ${bindir}/servertool servertool ${JDK_HOME}/jre/bin/servertool 75
163 update-alternatives --install ${bindir}/tnameserv tnameserv ${JDK_HOME}/jre/bin/tnameserv 75
164 update-alternatives --install ${bindir}/unpack200 unpack200 ${JDK_HOME}/jre/bin/unpack200 75
165}
166
167pkg_prerm_${JDKPN}-jre () {
168 update-alternatives --remove java ${JDK_HOME}/jre/bin/java
169 update-alternatives --remove jjs ${JDK_HOME}/jre/bin/jjs
170 update-alternatives --remove keytool ${JDK_HOME}/jre/bin/keytool
171 update-alternatives --remove orbd ${JDK_HOME}/jre/bin/orbd
172 update-alternatives --remove pack200 ${JDK_HOME}/jre/bin/pack200
173 update-alternatives --remove policytool ${JDK_HOME}/jre/bin/policytool
174 update-alternatives --remove rmid ${JDK_HOME}/jre/bin/rmid
175 update-alternatives --remove rmiregistry ${JDK_HOME}/jre/bin/rmiregistry
176 update-alternatives --remove servertool ${JDK_HOME}/jre/bin/servertool
177 update-alternatives --remove tnameserv ${JDK_HOME}/jre/bin/tnameserv
178 update-alternatives --remove unpack200 ${JDK_HOME}/jre/bin/unpack200
179}
180
181pkg_postinst_${JDKPN}-jdk () {
182 update-alternatives --install ${bindir}/appletviewer appletviewer ${JDK_HOME}/bin/appletviewer 100
183 update-alternatives --install ${bindir}/extcheck extcheck ${JDK_HOME}/bin/extcheck 100
184 update-alternatives --install ${bindir}/idlj idlj ${JDK_HOME}/bin/idlj 100
185 update-alternatives --install ${bindir}/jar jar ${JDK_HOME}/bin/jar 100
186 update-alternatives --install ${bindir}/jarsigner jarsigner ${JDK_HOME}/bin/jarsigner 100
187 update-alternatives --install ${bindir}/java java ${JDK_HOME}/bin/java 100
188 update-alternatives --install ${bindir}/javac javac ${JDK_HOME}/bin/javac 100
189 update-alternatives --install ${bindir}/javadoc javadoc ${JDK_HOME}/bin/javadoc 100
190 update-alternatives --install ${bindir}/javah javah ${JDK_HOME}/bin/javah 100
191 update-alternatives --install ${bindir}/javap javap ${JDK_HOME}/bin/javap 100
192 update-alternatives --install ${bindir}/java-rmi.cgi java-rmi.cgi ${JDK_HOME}/bin/java-rmi.cgi 100
193 update-alternatives --install ${bindir}/jcmd jcmd ${JDK_HOME}/bin/jcmd 100
194 update-alternatives --install ${bindir}/jconsole jconsole ${JDK_HOME}/bin/jconsole 100
195 update-alternatives --install ${bindir}/jdb jdb ${JDK_HOME}/bin/jdb 100
196 update-alternatives --install ${bindir}/jdeps jdeps ${JDK_HOME}/bin/jdeps 100
197 update-alternatives --install ${bindir}/jhat jhat ${JDK_HOME}/bin/jhat 100
198 update-alternatives --install ${bindir}/jinfo jinfo ${JDK_HOME}/bin/jinfo 100
199 update-alternatives --install ${bindir}/jjs jjs ${JDK_HOME}/bin/jjs 100
200 update-alternatives --install ${bindir}/jmap jmap ${JDK_HOME}/bin/jmap 100
201 update-alternatives --install ${bindir}/jps jps ${JDK_HOME}/bin/jps 100
202 update-alternatives --install ${bindir}/jrunscript jrunscript ${JDK_HOME}/bin/jrunscript 100
203 update-alternatives --install ${bindir}/jsadebugd jsadebugd ${JDK_HOME}/bin/jsadebugd 100
204 update-alternatives --install ${bindir}/jstack jstack ${JDK_HOME}/bin/jstack 100
205 update-alternatives --install ${bindir}/jstat jstat ${JDK_HOME}/bin/jstat 100
206 update-alternatives --install ${bindir}/jstatd jstatd ${JDK_HOME}/bin/jstatd 100
207 update-alternatives --install ${bindir}/keytool keytool ${JDK_HOME}/bin/keytool 100
208 update-alternatives --install ${bindir}/native2ascii native2ascii ${JDK_HOME}/bin/native2ascii 100
209 update-alternatives --install ${bindir}/orbd orbd ${JDK_HOME}/bin/orbd 100
210 update-alternatives --install ${bindir}/pack200 pack200 ${JDK_HOME}/bin/pack200 100
211 update-alternatives --install ${bindir}/policytool policytool ${JDK_HOME}/bin/policytool 100
212 update-alternatives --install ${bindir}/rmic rmic ${JDK_HOME}/bin/rmic 100
213 update-alternatives --install ${bindir}/rmid rmid ${JDK_HOME}/bin/rmid 100
214 update-alternatives --install ${bindir}/rmiregistry rmiregistry ${JDK_HOME}/bin/rmiregistry 100
215 update-alternatives --install ${bindir}/schemagen schemagen ${JDK_HOME}/bin/schemagen 100
216 update-alternatives --install ${bindir}/serialver serialver ${JDK_HOME}/bin/serialver 100
217 update-alternatives --install ${bindir}/servertool servertool ${JDK_HOME}/bin/servertool 100
218 update-alternatives --install ${bindir}/tnameserv tnameserv ${JDK_HOME}/bin/tnameserv 100
219 update-alternatives --install ${bindir}/unpack200 unpack200 ${JDK_HOME}/bin/unpack200 100
220 update-alternatives --install ${bindir}/wsgen wsgen ${JDK_HOME}/bin/wsgen 100
221 update-alternatives --install ${bindir}/wsimport wsimport ${JDK_HOME}/bin/wsimport 100
222 update-alternatives --install ${bindir}/xjc xjc ${JDK_HOME}/bin/xjc 100
223}
224
225pkg_prerm_${JDKPN}-jdk () {
226 update-alternatives --remove appletviewer ${JDK_HOME}/bin/appletviewer
227 update-alternatives --remove extcheck ${JDK_HOME}/bin/extcheck
228 update-alternatives --remove idlj ${JDK_HOME}/bin/idlj
229 update-alternatives --remove jar ${JDK_HOME}/bin/jar
230 update-alternatives --remove jarsigner ${JDK_HOME}/bin/jarsigner
231 update-alternatives --remove java ${JDK_HOME}/bin/java
232 update-alternatives --remove javac ${JDK_HOME}/bin/javac
233 update-alternatives --remove javadoc ${JDK_HOME}/bin/javadoc
234 update-alternatives --remove javah ${JDK_HOME}/bin/javah
235 update-alternatives --remove javap ${JDK_HOME}/bin/javap
236 update-alternatives --remove java-rmi.cgi ${JDK_HOME}/bin/java-rmi.cgi
237 update-alternatives --remove jcmd ${JDK_HOME}/bin/jcmd
238 update-alternatives --remove jconsole ${JDK_HOME}/bin/jconsole
239 update-alternatives --remove jdb ${JDK_HOME}/bin/jdb
240 update-alternatives --remove jdeps ${JDK_HOME}/bin/jdeps
241 update-alternatives --remove jhat ${JDK_HOME}/bin/jhat
242 update-alternatives --remove jinfo ${JDK_HOME}/bin/jinfo
243 update-alternatives --remove jjs ${JDK_HOME}/bin/jjs
244 update-alternatives --remove jmap ${JDK_HOME}/bin/jmap
245 update-alternatives --remove jps ${JDK_HOME}/bin/jps
246 update-alternatives --remove jrunscript ${JDK_HOME}/bin/jrunscript
247 update-alternatives --remove jsadebugd ${JDK_HOME}/bin/jsadebugd
248 update-alternatives --remove jstack ${JDK_HOME}/bin/jstack
249 update-alternatives --remove jstat ${JDK_HOME}/bin/jstat
250 update-alternatives --remove jstatd ${JDK_HOME}/bin/jstatd
251 update-alternatives --remove keytool ${JDK_HOME}/bin/keytool
252 update-alternatives --remove native2ascii ${JDK_HOME}/bin/native2ascii
253 update-alternatives --remove orbd ${JDK_HOME}/bin/orbd
254 update-alternatives --remove pack200 ${JDK_HOME}/bin/pack200
255 update-alternatives --remove policytool ${JDK_HOME}/bin/policytool
256 update-alternatives --remove rmic ${JDK_HOME}/bin/rmic
257 update-alternatives --remove rmid ${JDK_HOME}/bin/rmid
258 update-alternatives --remove rmiregistry ${JDK_HOME}/bin/rmiregistry
259 update-alternatives --remove schemagen ${JDK_HOME}/bin/schemagen
260 update-alternatives --remove serialver ${JDK_HOME}/bin/serialver
261 update-alternatives --remove servertool ${JDK_HOME}/bin/servertool
262 update-alternatives --remove tnameserv ${JDK_HOME}/bin/tnameserv
263 update-alternatives --remove unpack200 ${JDK_HOME}/bin/unpack200
264 update-alternatives --remove wsgen ${JDK_HOME}/bin/wsgen
265 update-alternatives --remove wsimport ${JDK_HOME}/bin/wsimport
266 update-alternatives --remove xjc ${JDK_HOME}/bin/xjc
267}
diff --git a/meta-aarch64/recipes-core/openjdk/openjdk-8_0.1.bb b/meta-aarch64/recipes-core/openjdk/openjdk-8_0.1.bb
new file mode 100644
index 0000000..44eef03
--- /dev/null
+++ b/meta-aarch64/recipes-core/openjdk/openjdk-8_0.1.bb
@@ -0,0 +1,29 @@
1require openjdk-8-common.inc
2
3PR = "${INC_PR}.0"
4
5OPENJDK_URI = "\
6 hg://hg.openjdk.java.net/aarch64-port;protocol=http;destsuffix=hg/jdk8;name=jdk8;module=jdk8 \
7 hg://hg.openjdk.java.net/aarch64-port;protocol=http;destsuffix=hg/corba;name=corba;module=jdk8/corba \
8 hg://hg.openjdk.java.net/aarch64-port;protocol=http;destsuffix=hg/hotspot;name=hotspot;module=jdk8/hotspot \
9 hg://hg.openjdk.java.net/aarch64-port;protocol=http;destsuffix=hg/jaxp;name=jaxp;module=jdk8/jaxp \
10 hg://hg.openjdk.java.net/aarch64-port;protocol=http;destsuffix=hg/jaxws;name=jaxws;module=jdk8/jaxws \
11 hg://hg.openjdk.java.net/aarch64-port;protocol=http;destsuffix=hg/jdk;name=jdk;module=jdk8/jdk \
12 hg://hg.openjdk.java.net/aarch64-port;protocol=http;destsuffix=hg/langtools;name=langtools;module=jdk8/langtools \
13 hg://hg.openjdk.java.net/aarch64-port;protocol=http;destsuffix=hg/nashorn;name=nashorn;module=jdk8/nashorn \
14 "
15
16SRCREV_jdk8 = "${AUTOREV}"
17SRCREV_corba = "${AUTOREV}"
18SRCREV_hotspot = "${AUTOREV}"
19SRCREV_jaxp = "${AUTOREV}"
20SRCREV_jaxws = "${AUTOREV}"
21SRCREV_jdk = "${AUTOREV}"
22SRCREV_langtools = "${AUTOREV}"
23SRCREV_nashorn = "${AUTOREV}"
24
25S = "${WORKDIR}/jdk8"
26
27LIC_FILES_CHKSUM="file://LICENSE;md5=7b4baeedfe2d40cb03536573bc2c89b1"
28
29BUILD_DIR="linux-aarch64-normal-clientANDserver-release/images"
diff --git a/meta-aarch64/recipes-core/packagegroups/packagegroup-core-sdk.bbappend b/meta-aarch64/recipes-core/packagegroups/packagegroup-core-sdk.bbappend
new file mode 100644
index 0000000..5d50b62
--- /dev/null
+++ b/meta-aarch64/recipes-core/packagegroups/packagegroup-core-sdk.bbappend
@@ -0,0 +1,16 @@
1INCPR = "1"
2
3RDEPENDS_packagegroup-core-sdk = "\
4 packagegroup-core-buildessential \
5 coreutils \
6 ccache \
7 diffutils \
8 intltool \
9 perl-module-re \
10 perl-module-text-wrap \
11 findutils \
12 quilt \
13 less \
14 ldd \
15 file \
16 tcl"
diff --git a/meta-aarch64/recipes-kernel/kexec-tools/files/add-arm64-support.patch b/meta-aarch64/recipes-kernel/kexec-tools/files/add-arm64-support.patch
new file mode 100644
index 0000000..30b0229
--- /dev/null
+++ b/meta-aarch64/recipes-kernel/kexec-tools/files/add-arm64-support.patch
@@ -0,0 +1,521 @@
1From 98215763db92c85668fd217cfc719322ce54e704 Mon Sep 17 00:00:00 2001
2From: Geoff Levand <geoff.levand@linaro.org>
3Date: Tue, 13 May 2014 10:59:52 -0700
4Subject: [PATCH 1/1] Add arm64 support
5
6Signed-off-by: Geoff Levand <geoff.levand@linaro.org>
7Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
8---
9 configure.ac | 3
10 kexec/Makefile | 1
11 kexec/arch/arm64/Makefile | 31 +++++
12 kexec/arch/arm64/include/arch/options.h | 30 ++++
13 kexec/arch/arm64/kexec-arm64.c | 194 ++++++++++++++++++++++++++++++++
14 kexec/arch/arm64/kexec-arm64.h | 28 ++++
15 kexec/arch/arm64/kexec-elf-arm64.c | 147 ++++++++++++++++++++++++
16 kexec/kexec-syscall.h | 9 +
17 8 files changed, 441 insertions(+), 2 deletions(-)
18 create mode 100644 kexec/arch/arm64/Makefile
19 create mode 100644 kexec/arch/arm64/include/arch/options.h
20 create mode 100644 kexec/arch/arm64/kexec-arm64.c
21 create mode 100644 kexec/arch/arm64/kexec-arm64.h
22 create mode 100644 kexec/arch/arm64/kexec-elf-arm64.c
23
24--- a/configure.ac
25+++ b/configure.ac
26@@ -35,6 +35,9 @@ case $target_cpu in
27 ARCH="ppc64"
28 SUBARCH="LE"
29 ;;
30+ aarch64* )
31+ ARCH="arm64"
32+ ;;
33 arm* )
34 ARCH="arm"
35 ;;
36--- a/kexec/Makefile
37+++ b/kexec/Makefile
38@@ -71,6 +71,7 @@ KEXEC_SRCS += $($(ARCH)_FS2DT)
39
40 include $(srcdir)/kexec/arch/alpha/Makefile
41 include $(srcdir)/kexec/arch/arm/Makefile
42+include $(srcdir)/kexec/arch/arm64/Makefile
43 include $(srcdir)/kexec/arch/i386/Makefile
44 include $(srcdir)/kexec/arch/ia64/Makefile
45 include $(srcdir)/kexec/arch/m68k/Makefile
46--- /dev/null
47+++ b/kexec/arch/arm64/Makefile
48@@ -0,0 +1,31 @@
49+
50+arm64_FS2DT += kexec/fs2dt.c
51+arm64_FS2DT_INCLUDE += -include $(srcdir)/kexec/arch/arm64/kexec-arm64.h
52+
53+arm64_KEXEC_SRCS += \
54+ kexec/arch/arm64/kexec-arm64.c \
55+ kexec/arch/arm64/kexec-elf-arm64.c
56+
57+arm64_ARCH_REUSE_INITRD =
58+arm64_ADD_SEGMENT =
59+arm64_VIRT_TO_PHYS =
60+
61+dist += $(arm64_KEXEC_SRCS) \
62+ kexec/arch/arm64/Makefile \
63+ kexec/arch/arm64/kexec-arm64.h
64+
65+ifdef HAVE_LIBFDT
66+
67+LIBS += -lfdt
68+
69+else
70+
71+include $(srcdir)/kexec/libfdt/Makefile.libfdt
72+
73+libfdt_SRCS += $(LIBFDT_SRCS:%=kexec/libfdt/%)
74+
75+arm64_CPPFLAGS = -I$(srcdir)/kexec/libfdt
76+
77+arm64_KEXEC_SRCS += $(libfdt_SRCS)
78+
79+endif
80--- /dev/null
81+++ b/kexec/arch/arm64/include/arch/options.h
82@@ -0,0 +1,30 @@
83+#ifndef KEXEC_ARCH_ARM64_OPTIONS_H
84+#define KEXEC_ARCH_ARM64_OPTIONS_H
85+
86+#define OPT_APPEND ((OPT_MAX)+0)
87+#define OPT_RAMDISK ((OPT_MAX)+1)
88+#define OPT_DTB ((OPT_MAX)+2)
89+#define OPT_ARCH_MAX ((OPT_MAX)+3)
90+
91+#define KEXEC_ARCH_OPTIONS \
92+ KEXEC_OPTIONS \
93+ { "append", 1, NULL, OPT_APPEND }, \
94+ { "command-line", 1, NULL, OPT_APPEND }, \
95+ { "dtb", 1, NULL, OPT_DTB }, \
96+ { "initrd", 1, NULL, OPT_RAMDISK }, \
97+ { "ramdisk", 1, NULL, OPT_RAMDISK }, \
98+
99+#define KEXEC_ARCH_OPT_STR KEXEC_OPT_STR /* Only accept long arch options. */
100+
101+#define KEXEC_ALL_OPTIONS KEXEC_ARCH_OPTIONS
102+#define KEXEC_ALL_OPT_STR KEXEC_ARCH_OPT_STR
103+
104+struct arm64_opts {
105+ const char *command_line;
106+ const char *ramdisk;
107+ const char *dtb;
108+};
109+
110+struct arm64_opts arm64_opts;
111+
112+#endif /* KEXEC_ARCH_ARM64_OPTIONS_H */
113--- /dev/null
114+++ b/kexec/arch/arm64/kexec-arm64.c
115@@ -0,0 +1,194 @@
116+/*
117+ * ARM64 kexec support.
118+ */
119+
120+#define _GNU_SOURCE
121+
122+#include <dirent.h>
123+#include <errno.h>
124+#include <getopt.h>
125+#include <stdio.h>
126+#include <stddef.h>
127+
128+//#include <linux/kexec.h>
129+
130+#include "../../kexec.h"
131+#include "../../kexec-syscall.h"
132+#include "kexec-arm64.h"
133+#include "arch/options.h"
134+
135+/* Global varables the core kexec routines expect. */
136+
137+unsigned char reuse_initrd;
138+off_t initrd_base = 0;
139+off_t initrd_size = 0;
140+
141+struct memory_ranges usablemem_rgns = {
142+};
143+
144+const struct arch_map_entry arches[] = {
145+ { "aarch64", KEXEC_ARCH_ARM64 },
146+ { NULL, 0 },
147+};
148+
149+/* arm64 global varables. */
150+
151+struct arm64_opts arm64_opts;
152+
153+void arch_usage(void)
154+{
155+ fprintf(stderr, "%s:%d: ->\n", __func__, __LINE__);
156+
157+ printf(
158+" --append=STRING Set the kernel command line to STRING.\n"
159+" --command-line=STRING Set the kernel command line to STRING.\n"
160+" --dtb=FILE Use FILE as the device tree blob.\n"
161+" --initrd=FILE Use FILE as the kernel initial ramdisk.\n"
162+" --ramdisk=FILE Use FILE as the kernel initial ramdisk.\n");
163+
164+ fprintf(stderr, "%s:%d: <-\n", __func__, __LINE__);
165+}
166+
167+int arch_process_options(int argc, char **argv)
168+{
169+ static const char short_options[] = KEXEC_OPT_STR "";
170+ static const struct option options[] = {
171+ KEXEC_ARCH_OPTIONS
172+ { 0 }
173+ };
174+ int opt;
175+
176+ for (opt = 0; opt != -1; ) {
177+ opt = getopt_long(argc, argv, short_options, options, 0);
178+
179+ switch (opt) {
180+ case OPT_APPEND:
181+ arm64_opts.command_line = optarg;
182+ break;
183+ case OPT_RAMDISK:
184+ arm64_opts.ramdisk = optarg;
185+ break;
186+ case OPT_DTB:
187+ arm64_opts.dtb = optarg;
188+ break;
189+ default:
190+ break; /* Ignore core and unknown options */
191+ }
192+ }
193+
194+ dbgprintf("%s:%d: command_line: %s\n", __func__, __LINE__,
195+ arm64_opts.command_line);
196+ dbgprintf("%s:%d: ramdisk: %s\n", __func__, __LINE__,
197+ arm64_opts.ramdisk);
198+ dbgprintf("%s:%d: dtb: %s\n", __func__, __LINE__, arm64_opts.dtb);
199+
200+ return 0;
201+}
202+
203+void arch_reuse_initrd(void)
204+{
205+ fprintf(stderr, "%s:%d: ->\n", __func__, __LINE__);
206+ reuse_initrd = 1;
207+}
208+
209+unsigned long virt_to_phys(unsigned long v)
210+{
211+ const unsigned long memstart_addr = 0x080000000UL; // FIXME: get from memory_range/DT
212+ const unsigned long page_offset = 0xffffffc000000000UL; // FIXME: from where???
213+ unsigned long p = (v & ~page_offset) + memstart_addr;
214+
215+ fprintf(stderr, "%s:%d: %016lx -> %016lx\n", __func__, __LINE__, v, p);
216+ return p;
217+}
218+
219+void add_segment(struct kexec_info *info, const void *buf, size_t bufsz,
220+ unsigned long base, size_t memsz)
221+{
222+ fprintf(stderr, "%s:%d: ->\n", __func__, __LINE__);
223+ add_segment_phys_virt(info, buf, bufsz, base, memsz, 1);
224+ fprintf(stderr, "%s:%d: <-\n", __func__, __LINE__);
225+}
226+
227+int get_memory_ranges(struct memory_range **range, int *ranges,
228+ unsigned long kexec_flags)
229+{
230+ /* FIXME: Should get this info from device tree. */
231+ static struct memory_range memory_range[KEXEC_SEGMENT_MAX];
232+ const char *iomem;
233+ int range_count = 0;
234+ char line[MAX_LINE];
235+ FILE *fp;
236+
237+ iomem = proc_iomem();
238+ fp = fopen(iomem, "r");
239+
240+ if (!fp) {
241+ fprintf(stderr, "Cannot open %s: %s\n", iomem, strerror(errno));
242+ return -1;
243+ }
244+
245+ dbgprintf("memory ranges:\n");
246+
247+ while(fgets(line, sizeof(line), fp) != 0) {
248+ struct memory_range r;
249+ char *str;
250+ int consumed;
251+
252+ if (range_count >= KEXEC_SEGMENT_MAX)
253+ break;
254+
255+ if (sscanf(line, "%Lx-%Lx : %n", &r.start, &r.end, &consumed)
256+ != 2)
257+ continue;
258+
259+ str = line + consumed;
260+ r.end++;
261+
262+ if (memcmp(str, "System RAM\n", 11)) {
263+ dbgprintf(" Skip: %016Lx - %016Lx : %s", r.start, r.end,
264+ str);
265+ continue;
266+ }
267+
268+ r.type = RANGE_RAM;
269+ memory_range[range_count] = r;
270+ range_count++;
271+
272+ dbgprintf(" Add: %016Lx - %016Lx : %s", r.start, r.end, str);
273+ }
274+
275+ fclose(fp);
276+ *range = memory_range;
277+ *ranges = range_count;
278+
279+ return 0;
280+}
281+
282+struct file_type file_type[] = {
283+ { "elf-arm64", elf_arm64_probe, elf_arm64_load, elf_arm64_usage },
284+};
285+
286+int file_types = sizeof(file_type) / sizeof(file_type[0]);
287+
288+int arch_compat_trampoline(struct kexec_info *info)
289+{
290+ return 0;
291+}
292+int machine_verify_elf_rel(struct mem_ehdr *ehdr)
293+{
294+ return 0;
295+}
296+
297+void machine_apply_elf_rel(struct mem_ehdr *ehdr, unsigned long r_type,
298+ void *location, unsigned long address, unsigned long value)
299+{
300+}
301+
302+void arch_update_purgatory(struct kexec_info *UNUSED(info))
303+{
304+}
305+
306+int is_crashkernel_mem_reserved(void)
307+{
308+ return 0;
309+}
310--- /dev/null
311+++ b/kexec/arch/arm64/kexec-arm64.h
312@@ -0,0 +1,28 @@
313+/*
314+ * ARM64 kexec support.
315+ */
316+
317+#if !defined(KEXEC_ARM64_H)
318+#define KEXEC_ARM64_H
319+
320+/* #include <linux/kexec.h> FIXME: this is broken */
321+#include <sys/types.h>
322+
323+#include "../../kexec.h"
324+
325+#define KEXEC_SEGMENT_MAX 16 /* FIXME: this should come from <linux/kexec.h> */
326+
327+#define BOOT_BLOCK_VERSION 17
328+#define BOOT_BLOCK_LAST_COMP_VERSION 16
329+#define COMMAND_LINE_SIZE 512
330+
331+int elf_arm64_probe(const char *buf, off_t len);
332+int elf_arm64_load(int argc, char **argv, const char *buf, off_t len,
333+ struct kexec_info *info);
334+void elf_arm64_usage(void);
335+
336+struct memory_ranges usablemem_rgns;
337+off_t initrd_base;
338+off_t initrd_size;
339+
340+#endif
341--- /dev/null
342+++ b/kexec/arch/arm64/kexec-elf-arm64.c
343@@ -0,0 +1,147 @@
344+/*
345+ * ARM64 kexec support.
346+ */
347+
348+#define _GNU_SOURCE
349+
350+#include <elf.h>
351+#include <getopt.h>
352+#include <libfdt.h>
353+
354+#include "kexec-arm64.h"
355+
356+#include "../../kexec-syscall.h"
357+#include "../../fs2dt.h"
358+
359+#include "arch/options.h"
360+
361+#if !defined(EM_AARCH64)
362+# define EM_AARCH64 183
363+#endif
364+
365+int elf_arm64_probe(const char *buf, off_t len)
366+{
367+ int result;
368+ struct mem_ehdr ehdr;
369+
370+ fprintf(stderr, "%s:%d: ->\n", __func__, __LINE__);
371+
372+ result = build_elf_exec_info(buf, len, &ehdr, 0);
373+
374+ if (result < 0) {
375+ dbgprintf("Not an ELF executable\n");
376+ goto out;
377+ }
378+
379+ if (ehdr.e_machine != EM_AARCH64) {
380+ dbgprintf("Not an AARCH64 executable\n");
381+ result = -1;
382+ goto out;
383+ }
384+
385+ result = 0;
386+
387+out:
388+ free_elf_info(&ehdr);
389+ fprintf(stderr, "%s:%d: <-\n", __func__, __LINE__);
390+ return result;
391+}
392+
393+static off_t round_up(off_t v)
394+{
395+ return _ALIGN_DOWN(v + getpagesize(), getpagesize());
396+}
397+
398+int elf_arm64_load(int argc, char **argv, const char *buf, off_t len,
399+ struct kexec_info *info)
400+{
401+ char *dtb_buf;
402+ off_t dtb_base;
403+ off_t dtb_size;
404+ struct mem_ehdr ehdr;
405+ int result;
406+ //unsigned int command_line_len = strlen(arm64_opts.command_line) + 1;
407+
408+ fprintf(stderr, "%s:%d: ->\n", __func__, __LINE__);
409+
410+ if (info->kexec_flags & KEXEC_ON_CRASH) {
411+ fprintf(stderr, "kexec: kdump not yet supported on arm64\n");
412+ return -1;
413+ }
414+
415+ result = build_elf_exec_info(buf, len, &ehdr, 0);
416+
417+ if (result < 0) {
418+ free_elf_info(&ehdr);
419+ fprintf(stderr, "%s:%d: build_elf_exec_info failed\n", __func__,
420+ __LINE__);
421+ return result;
422+ }
423+
424+ elf_exec_build_load(info, &ehdr, buf, len, 0);
425+
426+ info->entry = (void*)0x80080000UL; // FIXME
427+
428+ initrd_base = 0;
429+ initrd_size = 0;
430+
431+ if (arm64_opts.ramdisk) {
432+ char *buf;
433+
434+ buf = slurp_file(arm64_opts.ramdisk, &initrd_size);
435+
436+ if (!buf)
437+ fprintf(stderr, "kexec: empty ramdisk file\n");
438+ else {
439+ initrd_base = locate_hole(info, initrd_size, 0, 0, -1, -1);
440+
441+ add_segment_phys_virt(info, buf, initrd_size, initrd_base,
442+ initrd_size, 0);
443+ }
444+ }
445+
446+ fprintf(stderr, "%s:%d: initrd_base: %lx, initrd_size: %lx\n", __func__,
447+ __LINE__, (unsigned long)initrd_base, (unsigned long)initrd_size);
448+
449+ if (arm64_opts.dtb)
450+ dtb_buf = slurp_file(arm64_opts.dtb, &dtb_size);
451+ else
452+ create_flatten_tree(&dtb_buf, &dtb_size,
453+ arm64_opts.command_line);
454+
455+ fprintf(stderr, "%s:%d: dt magic: %x : %x\n", __func__, __LINE__,
456+ fdt32_to_cpu(*(uint32_t*)dtb_buf), *(uint32_t*)dtb_buf);
457+
458+ result = fdt_check_header(dtb_buf);
459+
460+ if (result) {
461+ fprintf(stderr, "Invalid FDT.\n");
462+ return -1;
463+ }
464+
465+ if (arm64_opts.command_line) {
466+ // FIXME: need to handle command line...
467+ fprintf(stderr, "%s:%d: command line support TODO\n", __func__, __LINE__);
468+ }
469+
470+if (1) {
471+ dtb_base = (unsigned long)info->entry + round_up(0xA43FA0); // computed kernel mem size.
472+
473+ fprintf(stderr, "%s:%d: dtb_base: %lx, dtb_size: %lx\n", __func__,
474+ __LINE__, (unsigned long)dtb_base, (unsigned long)dtb_size);
475+} else {
476+ dtb_base = locate_hole(info, dtb_size, 0, 0, -1, -1);
477+
478+ fprintf(stderr, "%s:%d: dtb_base: %lx, dtb_size: %lx\n", __func__,
479+ __LINE__, (unsigned long)dtb_base, (unsigned long)dtb_size);
480+}
481+ add_segment_phys_virt(info, dtb_buf, dtb_size, dtb_base, dtb_size, 0);
482+
483+ fprintf(stderr, "%s:%d: <-\n", __func__, __LINE__);
484+ return 0;
485+}
486+
487+void elf_arm64_usage(void)
488+{
489+ fprintf(stderr, "%s:%d\n", __func__, __LINE__);
490+}
491--- a/kexec/kexec-syscall.h
492+++ b/kexec/kexec-syscall.h
493@@ -39,8 +39,8 @@
494 #ifdef __s390__
495 #define __NR_kexec_load 277
496 #endif
497-#ifdef __arm__
498-#define __NR_kexec_load __NR_SYSCALL_BASE + 347
499+#if defined(__arm__) || defined(__arm64__)
500+#define __NR_kexec_load __NR_SYSCALL_BASE + 347
501 #endif
502 #if defined(__mips__)
503 #define __NR_kexec_load 4311
504@@ -76,6 +76,8 @@ static inline long kexec_load(void *entr
505 #define KEXEC_ARCH_PPC64 (21 << 16)
506 #define KEXEC_ARCH_IA_64 (50 << 16)
507 #define KEXEC_ARCH_ARM (40 << 16)
508+#define KEXEC_ARCH_ARM64 (183 << 16)
509+/* #define KEXEC_ARCH_AARCH64 (183 << 16) */
510 #define KEXEC_ARCH_S390 (22 << 16)
511 #define KEXEC_ARCH_SH (42 << 16)
512 #define KEXEC_ARCH_MIPS_LE (10 << 16)
513@@ -121,5 +123,8 @@ static inline long kexec_load(void *entr
514 #ifdef __m68k__
515 #define KEXEC_ARCH_NATIVE KEXEC_ARCH_68K
516 #endif
517+#if defined(__arm64__)
518+#define KEXEC_ARCH_NATIVE KEXEC_ARCH_ARM64
519+#endif
520
521 #endif /* KEXEC_SYSCALL_H */
diff --git a/meta-aarch64/recipes-kernel/kexec-tools/kexec-tools_2.0.7.bbappend b/meta-aarch64/recipes-kernel/kexec-tools/kexec-tools_2.0.7.bbappend
new file mode 100644
index 0000000..6417ffa
--- /dev/null
+++ b/meta-aarch64/recipes-kernel/kexec-tools/kexec-tools_2.0.7.bbappend
@@ -0,0 +1,5 @@
1FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
2
3SRC_URI_append = " file://add-arm64-support.patch"
4
5COMPATIBLE_HOST = "(x86_64|i.86|arm|aarch64|powerpc|mips).*-(linux|freebsd.*)"
diff --git a/meta-aarch64/recipes-kernel/sysprof/sysprof_git.bbappend b/meta-aarch64/recipes-kernel/sysprof/sysprof_git.bbappend
new file mode 100644
index 0000000..8db9345
--- /dev/null
+++ b/meta-aarch64/recipes-kernel/sysprof/sysprof_git.bbappend
@@ -0,0 +1 @@
COMPATIBLE_HOST_aarch64 = "0"
diff --git a/meta-aarch64/recipes-multimedia/pulseaudio/files/0001-libatomic_ops-Aarch64-basic-port.patch b/meta-aarch64/recipes-multimedia/pulseaudio/files/0001-libatomic_ops-Aarch64-basic-port.patch
new file mode 100644
index 0000000..0769377
--- /dev/null
+++ b/meta-aarch64/recipes-multimedia/pulseaudio/files/0001-libatomic_ops-Aarch64-basic-port.patch
@@ -0,0 +1,232 @@
1From aac120d778ae5fc619b2fb8ef18ea18d3d5d20cc Mon Sep 17 00:00:00 2001
2From: Yvan Roux <yvan.roux@linaro.org>
3Date: Wed, 23 Jan 2013 17:14:16 +0100
4Subject: [PATCH] Aarch64 basic port
5
6Adapted-for-OpenEmbedded-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
7
8---
9 src/atomic_ops.h | 4
10 src/atomic_ops/sysdeps/Makefile.am | 1
11 src/atomic_ops/sysdeps/gcc/aarch64.h | 184 +++++++++++++++++++++++++++++++++++
12 3 files changed, 189 insertions(+)
13 create mode 100644 src/atomic_ops/sysdeps/gcc/aarch64.h
14
15--- libatomic_ops-7.2.orig/src/atomic_ops.h
16+++ libatomic_ops-7.2/src/atomic_ops.h
17@@ -242,10 +242,14 @@
18 # endif /* __m68k__ */
19 # if defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) \
20 || defined(__powerpc64__) || defined(__ppc64__)
21 # include "atomic_ops/sysdeps/gcc/powerpc.h"
22 # endif /* __powerpc__ */
23+# if defined(__aarch64__)
24+# include "atomic_ops/sysdeps/gcc/aarch64.h"
25+# define AO_CAN_EMUL_CAS
26+# endif /* __aarch64__ */
27 # if defined(__arm__) && !defined(AO_USE_PTHREAD_DEFS)
28 # include "atomic_ops/sysdeps/gcc/arm.h"
29 # define AO_CAN_EMUL_CAS
30 # endif /* __arm__ */
31 # if defined(__cris__) || defined(CRIS)
32--- libatomic_ops-7.2.orig/src/atomic_ops/sysdeps/Makefile.am
33+++ libatomic_ops-7.2/src/atomic_ops/sysdeps/Makefile.am
34@@ -24,10 +24,11 @@ nobase_sysdep_HEADERS= generic_pthread.h
35 standard_ao_double_t.h \
36 README \
37 \
38 armcc/arm_v6.h \
39 \
40+ gcc/aarch64.h \
41 gcc/alpha.h gcc/arm.h gcc/avr32.h gcc/cris.h \
42 gcc/hexagon.h gcc/hppa.h gcc/ia64.h gcc/m68k.h \
43 gcc/mips.h gcc/powerpc.h gcc/s390.h \
44 gcc/sh.h gcc/sparc.h gcc/x86.h gcc/x86_64.h \
45 \
46--- /dev/null
47+++ libatomic_ops-7.2/src/atomic_ops/sysdeps/gcc/aarch64.h
48@@ -0,0 +1,184 @@
49+/*
50+ * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved.
51+ * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved.
52+ * Copyright (c) 1999-2003 by Hewlett-Packard Company. All rights reserved.
53+ *
54+ *
55+ * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
56+ * OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
57+ *
58+ * Permission is hereby granted to use or copy this program
59+ * for any purpose, provided the above notices are retained on all copies.
60+ * Permission to modify the code and to distribute modified code is granted,
61+ * provided the above notices are retained, and a notice that the code was
62+ * modified is included with the above copyright notice.
63+ *
64+ */
65+
66+#include "../read_ordered.h"
67+
68+#include "../test_and_set_t_is_ao_t.h"
69+
70+AO_INLINE void
71+AO_nop_full(void)
72+{
73+# ifndef AO_UNIPROCESSOR
74+__sync_synchronize ();
75+# endif
76+}
77+#define AO_HAVE_nop_full
78+
79+AO_INLINE AO_t
80+AO_load(const volatile AO_t *addr)
81+{
82+ return __atomic_load_n (addr, __ATOMIC_RELAXED);
83+}
84+#define AO_HAVE_load
85+
86+AO_INLINE AO_t
87+AO_load_acquire(const volatile AO_t *addr)
88+{
89+ return __atomic_load_n (addr, __ATOMIC_ACQUIRE);
90+}
91+#define AO_HAVE_load_acquire
92+
93+AO_INLINE void
94+ AO_store(volatile AO_t *addr, AO_t value)
95+{
96+ __atomic_store_n(addr, value, __ATOMIC_RELAXED);
97+}
98+#define AO_HAVE_store
99+
100+AO_INLINE void
101+ AO_store_release(volatile AO_t *addr, AO_t value)
102+{
103+ __atomic_store_n(addr, value, __ATOMIC_RELEASE);
104+}
105+#define AO_HAVE_store_release
106+
107+AO_INLINE AO_TS_VAL_t
108+AO_test_and_set(volatile AO_TS_t *addr)
109+{
110+ return __atomic_test_and_set(addr, __ATOMIC_RELAXED);
111+}
112+# define AO_HAVE_test_and_set
113+
114+AO_INLINE AO_TS_VAL_t
115+AO_test_and_set_acquire(volatile AO_TS_t *addr)
116+{
117+ return __atomic_test_and_set(addr, __ATOMIC_ACQUIRE);
118+}
119+# define AO_HAVE_test_and_set_acquire
120+
121+AO_INLINE AO_TS_VAL_t
122+AO_test_and_set_release(volatile AO_TS_t *addr)
123+{
124+ return __atomic_test_and_set(addr, __ATOMIC_RELEASE);
125+}
126+# define AO_HAVE_test_and_set_release
127+
128+AO_INLINE AO_TS_VAL_t
129+AO_test_and_set_full(volatile AO_TS_t *addr)
130+{
131+ return __atomic_test_and_set(addr, __ATOMIC_SEQ_CST);
132+}
133+# define AO_HAVE_test_and_set_full
134+
135+AO_INLINE AO_t
136+AO_fetch_and_add(volatile AO_t *p, AO_t incr)
137+{
138+ return __atomic_fetch_add(p, incr, __ATOMIC_RELAXED);
139+}
140+#define AO_HAVE_fetch_and_add
141+
142+AO_INLINE AO_t
143+AO_fetch_and_add_acquire(volatile AO_t *p, AO_t incr)
144+{
145+ return __atomic_fetch_add(p, incr, __ATOMIC_ACQUIRE);
146+}
147+#define AO_HAVE_fetch_and_add_acquire
148+
149+AO_INLINE AO_t
150+AO_fetch_and_add_release(volatile AO_t *p, AO_t incr)
151+{
152+ return __atomic_fetch_add(p, incr, __ATOMIC_RELEASE);
153+}
154+#define AO_HAVE_fetch_and_add_release
155+
156+AO_INLINE AO_t
157+AO_fetch_and_add_full(volatile AO_t *p, AO_t incr)
158+{
159+ return __atomic_fetch_add(p, incr, __ATOMIC_SEQ_CST);
160+}
161+#define AO_HAVE_fetch_and_add_full
162+
163+AO_INLINE AO_t
164+AO_fetch_and_add1(volatile AO_t *p)
165+{
166+ return __atomic_fetch_add(p, 1, __ATOMIC_RELAXED);
167+}
168+#define AO_HAVE_fetch_and_add1
169+
170+AO_INLINE AO_t
171+AO_fetch_and_add1_acquire(volatile AO_t *p)
172+{
173+ return __atomic_fetch_add(p, 1, __ATOMIC_ACQUIRE);
174+}
175+#define AO_HAVE_fetch_and_add1_acquire
176+
177+AO_INLINE AO_t
178+AO_fetch_and_add1_release(volatile AO_t *p)
179+{
180+ return __atomic_fetch_add(p, 1, __ATOMIC_RELEASE);
181+}
182+#define AO_HAVE_fetch_and_add1_release
183+
184+AO_INLINE AO_t
185+AO_fetch_and_add1_full(volatile AO_t *p)
186+{
187+ return __atomic_fetch_add(p, 1, __ATOMIC_SEQ_CST);
188+}
189+#define AO_HAVE_fetch_and_add1_full
190+
191+AO_INLINE AO_t
192+AO_fetch_and_sub1(volatile AO_t *p)
193+{
194+ return __atomic_fetch_sub(p, 1, __ATOMIC_RELAXED);
195+}
196+#define AO_HAVE_fetch_and_sub1
197+
198+AO_INLINE AO_t
199+AO_fetch_and_sub1_acquire(volatile AO_t *p)
200+{
201+ return __atomic_fetch_sub(p, 1, __ATOMIC_ACQUIRE);
202+}
203+#define AO_HAVE_fetch_and_sub1_acquire
204+
205+AO_INLINE AO_t
206+AO_fetch_and_sub1_release(volatile AO_t *p)
207+{
208+ return __atomic_fetch_sub(p, 1, __ATOMIC_RELEASE);
209+}
210+#define AO_HAVE_fetch_and_sub1_release
211+
212+AO_INLINE AO_t
213+AO_fetch_and_sub1_full(volatile AO_t *p)
214+{
215+ return __atomic_fetch_sub(p, 1, __ATOMIC_SEQ_CST);
216+}
217+#define AO_HAVE_fetch_and_sub1_full
218+
219+/* Returns nonzero if the comparison succeeded. */
220+AO_INLINE int
221+AO_compare_and_swap(volatile AO_t *addr, AO_t old_val, AO_t new_val)
222+{
223+ return __sync_bool_compare_and_swap(addr, old_val, new_val);
224+}
225+# define AO_HAVE_compare_and_swap
226+
227+AO_INLINE AO_t
228+AO_fetch_compare_and_swap(volatile AO_t *addr, AO_t old_val, AO_t new_val)
229+{
230+ return __sync_val_compare_and_swap(addr, old_val, new_val);
231+}
232+# define AO_HAVE_fetch_compare_and_swap
diff --git a/meta-aarch64/recipes-multimedia/pulseaudio/libatomics-ops_7.2.bbappend b/meta-aarch64/recipes-multimedia/pulseaudio/libatomics-ops_7.2.bbappend
new file mode 100644
index 0000000..6a7932d
--- /dev/null
+++ b/meta-aarch64/recipes-multimedia/pulseaudio/libatomics-ops_7.2.bbappend
@@ -0,0 +1,5 @@
1FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
2
3SRC_URI_append = " \
4 file://0001-libatomic_ops-Aarch64-basic-port.patch \
5"
diff --git a/meta-aarch64/recipes-qt/qt4/files/aarch64.patch b/meta-aarch64/recipes-qt/qt4/files/aarch64.patch
new file mode 100644
index 0000000..2c970fe
--- /dev/null
+++ b/meta-aarch64/recipes-qt/qt4/files/aarch64.patch
@@ -0,0 +1,39 @@
1From d780ac54b5dd1cf45eb59103f014f811c407d38c Mon Sep 17 00:00:00 2001
2From: Koen Kooi <koen@dominion.thruhere.net>
3Date: Sun, 10 Aug 2014 10:35:33 +0200
4Subject: [PATCH] JavaScriptCore: add Aarch64 support
5
6Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
7---
8 src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h | 8 +++++++-
9 1 file changed, 7 insertions(+), 1 deletion(-)
10
11diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
12index e8b03be..01a839f 100644
13--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
14+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
15@@ -373,6 +373,11 @@
16 #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1
17 #endif
18
19+/* CPU(AARCH64) - Aarch64 */
20+#if defined(__aarch64__)
21+#define WTF_CPU_AARCH64 1
22+#endif
23+
24 /* ==== OS() - underlying operating system; only to be used for mandated low-level services like
25 virtual memory, not to choose a GUI toolkit ==== */
26
27@@ -1003,7 +1008,8 @@
28 || CPU(SPARC64) \
29 || CPU(S390X) \
30 || CPU(PPC64) \
31- || CPU(MIPS64)
32+ || CPU(MIPS64) \
33+ || CPU(AARCH64)
34 #define WTF_USE_JSVALUE64 1
35 #else
36 #define WTF_USE_JSVALUE32_64 1
37--
381.9.0
39
diff --git a/meta-aarch64/recipes-qt/qt4/qt4-x11-free_4.8.6.bbappend b/meta-aarch64/recipes-qt/qt4/qt4-x11-free_4.8.6.bbappend
new file mode 100644
index 0000000..d969143
--- /dev/null
+++ b/meta-aarch64/recipes-qt/qt4/qt4-x11-free_4.8.6.bbappend
@@ -0,0 +1,5 @@
1FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
2
3SRC_URI_append = " \
4 file://aarch64.patch \
5"
diff --git a/meta-aarch64/recipes-support/emacs/emacs_23.4.bbappend b/meta-aarch64/recipes-support/emacs/emacs_23.4.bbappend
new file mode 100644
index 0000000..8db9345
--- /dev/null
+++ b/meta-aarch64/recipes-support/emacs/emacs_23.4.bbappend
@@ -0,0 +1 @@
COMPATIBLE_HOST_aarch64 = "0"