diff -Nru qt4-x11-4.8.5+git192-g085f851+dfsg/debian/changelog qt4-x11-4.8.5+git192-g085f851+dfsg/debian/changelog
--- qt4-x11-4.8.5+git192-g085f851+dfsg/debian/changelog	2013-12-06 19:38:48.000000000 +0000
+++ qt4-x11-4.8.5+git192-g085f851+dfsg/debian/changelog	2063-04-30 00:08:35.000000000 +0000
@@ -1,3 +1,9 @@
+qt4-x11 (4:4.8.5+git192-g085f851+dfsg-2arm64) unstable; urgency=low
+
+  * Add arm64/aarch64 support
+
+ --  <wookey@linaro.org>  Mon, 30 Apr 2063 00:00:20 +0000
+
 qt4-x11 (4:4.8.5+git192-g085f851+dfsg-2) unstable; urgency=low
 
   * Fix typo created when refreshing a patch for s390x which created a FTBFS.
diff -Nru qt4-x11-4.8.5+git192-g085f851+dfsg/debian/control qt4-x11-4.8.5+git192-g085f851+dfsg/debian/control
--- qt4-x11-4.8.5+git192-g085f851+dfsg/debian/control	2013-10-11 23:49:32.000000000 +0000
+++ qt4-x11-4.8.5+git192-g085f851+dfsg/debian/control	2063-04-30 00:53:04.000000000 +0000
@@ -9,6 +9,7 @@
            Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>,
            Timo Jyrinki <timo@debian.org>
 Build-Depends: debhelper (>= 9),
+	       autotools-dev,
                dpkg-dev (>= 1.16.1),
                firebird-dev [amd64 armel i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sh4 sparc],
                flex,
diff -Nru qt4-x11-4.8.5+git192-g085f851+dfsg/debian/patches/aarch64.patch qt4-x11-4.8.5+git192-g085f851+dfsg/debian/patches/aarch64.patch
--- qt4-x11-4.8.5+git192-g085f851+dfsg/debian/patches/aarch64.patch	1970-01-01 00:00:00.000000000 +0000
+++ qt4-x11-4.8.5+git192-g085f851+dfsg/debian/patches/aarch64.patch	2063-04-30 01:11:32.000000000 +0000
@@ -0,0 +1,653 @@
+Index: qt4-x11-4.8.5+git192-g085f851+dfsg/configure
+===================================================================
+--- qt4-x11-4.8.5+git192-g085f851+dfsg.orig/configure	2063-04-29 23:57:10.000000000 +0000
++++ qt4-x11-4.8.5+git192-g085f851+dfsg/configure	2063-04-29 23:57:10.000000000 +0000
+@@ -264,6 +264,9 @@
+ 	armhf)
+ 		UNAME_MACHINE="armv6"
+ 	;;
++	arm64)
++		UNAME_MACHINE="aarch64"
++	;;
+ 	hppa)
+ 		UNAME_MACHINE="parisc"
+ 	;;
+@@ -2856,6 +2859,9 @@
+             *86_64)
+                 PLATFORM=qws/linux-x86_64-g++
+                 ;;
++            aarch64)
++                PLATFORM=linux-g++-aarch64
++                ;;
+             *)
+                 PLATFORM=qws/linux-generic-g++
+                 ;;
+@@ -3294,6 +3300,12 @@
+             echo "    ARM (arm)"
+         fi
+         CFG_HOST_ARCH=arm
++	;;
++    *:*:aarch64*)
++        if [ "$OPT_VERBOSE" = "yes" ]; then
++            echo "    AArch64 (aarch64)"
++        fi
++        CFG_HOST_ARCH=aarch64
+         ;;
+     Linux:*:sparc*)
+         if [ "$OPT_VERBOSE" = "yes" ]; then
+Index: qt4-x11-4.8.5+git192-g085f851+dfsg/mkspecs/linux-g++-aarch64/qmake.conf
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ qt4-x11-4.8.5+git192-g085f851+dfsg/mkspecs/linux-g++-aarch64/qmake.conf	2063-04-29 23:57:10.000000000 +0000
+@@ -0,0 +1,28 @@
++#
++# qmake configuration for linux-g++
++#
++# Written for GNU/Linux platforms that have both lib and lib64 directories,
++# like the AMD Opteron.
++#
++
++MAKEFILE_GENERATOR	= UNIX
++TARGET_PLATFORM		= unix
++TEMPLATE		= app
++CONFIG			+= qt warn_on release incremental link_prl gdb_dwarf_index
++QT			+= core gui
++QMAKE_INCREMENTAL_STYLE = sublib
++
++QMAKE_CFLAGS		= -fpermissive
++QMAKE_LFLAGS		=
++
++QMAKE_CFLAGS_RELEASE   += -O2
++
++include(../common/linux.conf)
++include(../common/gcc-base-unix.conf)
++include(../common/g++-unix.conf)
++
++
++QMAKE_LIBDIR_X11      = /usr/X11R6/lib64
++QMAKE_LIBDIR_OPENGL   = /usr/X11R6/lib64
++
++load(qt_config)
+Index: qt4-x11-4.8.5+git192-g085f851+dfsg/mkspecs/linux-g++-aarch64/qplatformdefs.h
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ qt4-x11-4.8.5+git192-g085f851+dfsg/mkspecs/linux-g++-aarch64/qplatformdefs.h	2063-04-29 23:57:10.000000000 +0000
+@@ -0,0 +1,42 @@
++/****************************************************************************
++**
++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
++** Contact: http://www.qt-project.org/legal
++**
++** This file is part of the qmake spec of the Qt Toolkit.
++**
++** $QT_BEGIN_LICENSE:LGPL$
++** Commercial License Usage
++** Licensees holding valid commercial Qt licenses may use this file in
++** accordance with the commercial license agreement provided with the
++** Software or, alternatively, in accordance with the terms contained in
++** a written agreement between you and Digia.  For licensing terms and
++** conditions see http://qt.digia.com/licensing.  For further information
++** use the contact form at http://qt.digia.com/contact-us.
++**
++** GNU Lesser General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU Lesser
++** General Public License version 2.1 as published by the Free Software
++** Foundation and appearing in the file LICENSE.LGPL included in the
++** packaging of this file.  Please review the following information to
++** ensure the GNU Lesser General Public License version 2.1 requirements
++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
++**
++** In addition, as a special exception, Digia gives you certain additional
++** rights.  These rights are described in the Digia Qt LGPL Exception
++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
++**
++** GNU General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU
++** General Public License version 3.0 as published by the Free Software
++** Foundation and appearing in the file LICENSE.GPL included in the
++** packaging of this file.  Please review the following information to
++** ensure the GNU General Public License version 3.0 requirements will be
++** met: http://www.gnu.org/copyleft/gpl.html.
++**
++**
++** $QT_END_LICENSE$
++**
++****************************************************************************/
++
++#include "../linux-g++/qplatformdefs.h"
+Index: qt4-x11-4.8.5+git192-g085f851+dfsg/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h
+===================================================================
+--- qt4-x11-4.8.5+git192-g085f851+dfsg.orig/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h	2063-04-29 23:57:10.000000000 +0000
++++ qt4-x11-4.8.5+git192-g085f851+dfsg/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h	2063-04-29 23:58:18.000000000 +0000
+@@ -238,6 +238,11 @@
+ 
+ #endif
+ 
++/* CPU(AARCH64) - AArch64 */
++#if defined(__aarch64__)
++#define WTF_CPU_AARCH64 1
++#endif
++
+ #define WTF_ARM_ARCH_AT_LEAST(N) (CPU(ARM) && WTF_ARM_ARCH_VERSION >= N)
+ 
+ /* Set WTF_ARM_ARCH_VERSION */
+@@ -907,7 +912,7 @@
+ #endif
+ 
+ #if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64)
+-#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(S390X)
++#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(S390X) || CPU(AARCH64)
+ #define WTF_USE_JSVALUE64 1
+ #elif CPU(ARM) || CPU(PPC64)
+ #define WTF_USE_JSVALUE32 1
+Index: qt4-x11-4.8.5+git192-g085f851+dfsg/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
+===================================================================
+--- qt4-x11-4.8.5+git192-g085f851+dfsg.orig/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h	2063-04-29 23:57:10.000000000 +0000
++++ qt4-x11-4.8.5+git192-g085f851+dfsg/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h	2063-04-29 23:57:10.000000000 +0000
+@@ -365,10 +365,15 @@
+ 
+ #endif /* ARM */
+ 
+-#if CPU(ARM) || CPU(MIPS) || CPU(SH4)
++#if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(AARCH64)
+ #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1
+ #endif
+ 
++/* CPU(AARCH64) - Aarch64 */
++#if defined(__aarch64__)
++#define WTF_CPU_AARCH64 1
++#endif
++
+ /* ==== OS() - underlying operating system; only to be used for mandated low-level services like 
+    virtual memory, not to choose a GUI toolkit ==== */
+ 
+@@ -998,7 +1003,8 @@
+     || CPU(ALPHA) \
+     || CPU(SPARC64) \
+     || CPU(S390X) \
+-    || CPU(PPC64)
++    || CPU(PPC64) \
++    || CPU(AARCH64)
+ #define WTF_USE_JSVALUE64 1
+ #else
+ #define WTF_USE_JSVALUE32_64 1
+Index: qt4-x11-4.8.5+git192-g085f851+dfsg/src/corelib/arch/aarch64/arch.pri
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ qt4-x11-4.8.5+git192-g085f851+dfsg/src/corelib/arch/aarch64/arch.pri	2063-04-29 23:57:10.000000000 +0000
+@@ -0,0 +1,4 @@
++#
++# AArch64 architecture
++#
++SOURCES += $$QT_ARCH_CPP/qatomic_aarch64.cpp
+Index: qt4-x11-4.8.5+git192-g085f851+dfsg/src/corelib/arch/aarch64/qatomic_aarch64.cpp
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ qt4-x11-4.8.5+git192-g085f851+dfsg/src/corelib/arch/aarch64/qatomic_aarch64.cpp	2063-04-29 23:57:10.000000000 +0000
+@@ -0,0 +1,70 @@
++/****************************************************************************
++**
++** Copyright (C) 2012, 2013 Digia Plc and/or its subsidiary(-ies).
++** Contact: http://www.qt-project.org/legal
++**
++** This file is part of the QtCore module of the Qt Toolkit.
++**
++** $QT_BEGIN_LICENSE:LGPL$
++** Commercial License Usage
++** Licensees holding valid commercial Qt licenses may use this file in
++** accordance with the commercial license agreement provided with the
++** Software or, alternatively, in accordance with the terms contained in
++** a written agreement between you and Digia.  For licensing terms and
++** conditions see http://qt.digia.com/licensing.  For further information
++** use the contact form at http://qt.digia.com/contact-us.
++**
++** GNU Lesser General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU Lesser
++** General Public License version 2.1 as published by the Free Software
++** Foundation and appearing in the file LICENSE.LGPL included in the
++** packaging of this file.  Please review the following information to
++** ensure the GNU Lesser General Public License version 2.1 requirements
++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
++**
++** In addition, as a special exception, Digia gives you certain additional
++** rights.  These rights are described in the Digia Qt LGPL Exception
++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
++**
++** GNU General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU
++** General Public License version 3.0 as published by the Free Software
++** Foundation and appearing in the file LICENSE.GPL included in the
++** packaging of this file.  Please review the following information to
++** ensure the GNU General Public License version 3.0 requirements will be
++** met: http://www.gnu.org/copyleft/gpl.html.
++**
++**
++** $QT_END_LICENSE$
++**
++****************************************************************************/
++
++#include <QtCore/qglobal.h>
++
++#include <unistd.h>
++#ifdef _POSIX_PRIORITY_SCHEDULING
++# include <sched.h>
++#endif
++#include <time.h>
++
++QT_BEGIN_NAMESPACE
++
++QT_USE_NAMESPACE
++
++Q_CORE_EXPORT void qt_atomic_yield(int *count)
++{
++#ifdef _POSIX_PRIORITY_SCHEDULING
++    if((*count)++ < 50) {
++        sched_yield();
++    } else
++#endif
++    {
++        struct timespec tm;
++        tm.tv_sec = 0;
++        tm.tv_nsec = 2000001;
++        nanosleep(&tm, NULL);
++        *count = 0;
++    }
++}
++
++QT_END_NAMESPACE
+Index: qt4-x11-4.8.5+git192-g085f851+dfsg/src/corelib/arch/arch.pri
+===================================================================
+--- qt4-x11-4.8.5+git192-g085f851+dfsg.orig/src/corelib/arch/arch.pri	2063-04-29 23:57:10.000000000 +0000
++++ qt4-x11-4.8.5+git192-g085f851+dfsg/src/corelib/arch/arch.pri	2063-04-29 23:57:10.000000000 +0000
+@@ -31,7 +31,9 @@
+                        arch/qatomic_s390.h \
+                        arch/qatomic_x86_64.h \
+                        arch/qatomic_sh.h \
+-                       arch/qatomic_sh4a.h
++                       arch/qatomic_sh4a.h \
++                       arch/qatomic_aarch64.h \
++
+ 
+ QT_ARCH_CPP = $$QT_SOURCE_TREE/src/corelib/arch/$$QT_ARCH
+ DEPENDPATH += $$QT_ARCH_CPP
+Index: qt4-x11-4.8.5+git192-g085f851+dfsg/src/corelib/arch/qatomic_aarch64.h
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ qt4-x11-4.8.5+git192-g085f851+dfsg/src/corelib/arch/qatomic_aarch64.h	2063-04-30 00:50:49.000000000 +0000
+@@ -0,0 +1,335 @@
++/****************************************************************************
++**
++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
++** Contact: http://www.qt-project.org/legal
++**
++** This file is part of the QtCore module of the Qt Toolkit.
++**
++** $QT_BEGIN_LICENSE:LGPL$
++** Commercial License Usage
++** Licensees holding valid commercial Qt licenses may use this file in
++** accordance with the commercial license agreement provided with the
++** Software or, alternatively, in accordance with the terms contained in
++** a written agreement between you and Digia.  For licensing terms and
++** conditions see http://qt.digia.com/licensing.  For further information
++** use the contact form at http://qt.digia.com/contact-us.
++**
++** GNU Lesser General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU Lesser
++** General Public License version 2.1 as published by the Free Software
++** Foundation and appearing in the file LICENSE.LGPL included in the
++** packaging of this file.  Please review the following information to
++** ensure the GNU Lesser General Public License version 2.1 requirements
++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
++**
++** In addition, as a special exception, Digia gives you certain additional
++** rights.  These rights are described in the Digia Qt LGPL Exception
++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
++**
++** GNU General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU
++** General Public License version 3.0 as published by the Free Software
++** Foundation and appearing in the file LICENSE.GPL included in the
++** packaging of this file.  Please review the following information to
++** ensure the GNU General Public License version 3.0 requirements will be
++** met: http://www.gnu.org/copyleft/gpl.html.
++**
++**
++** $QT_END_LICENSE$
++**
++****************************************************************************/
++
++#ifndef QATOMIC_AARCH64_H
++#define QATOMIC_AARCH64_H
++
++QT_BEGIN_HEADER
++
++QT_BEGIN_NAMESPACE
++
++#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
++
++inline bool QBasicAtomicInt::isReferenceCountingNative()
++{ return true; }
++inline bool QBasicAtomicInt::isReferenceCountingWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE
++
++inline bool QBasicAtomicInt::isTestAndSetNative()
++{ return true; }
++inline bool QBasicAtomicInt::isTestAndSetWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE
++
++inline bool QBasicAtomicInt::isFetchAndStoreNative()
++{ return true; }
++inline bool QBasicAtomicInt::isFetchAndStoreWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE
++
++inline bool QBasicAtomicInt::isFetchAndAddNative()
++{ return true; }
++inline bool QBasicAtomicInt::isFetchAndAddWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetNative()
++{ return true; }
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreNative()
++{ return true; }
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddNative()
++{ return true; }
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
++{ return false; }
++
++#ifndef Q_DATA_MEMORY_BARRIER
++# define Q_DATA_MEMORY_BARRIER asm volatile("dmb sy\n":::"memory")
++#endif
++#ifndef Q_COMPILER_MEMORY_BARRIER
++# define Q_COMPILER_MEMORY_BARRIER asm volatile("":::"memory")
++#endif
++
++inline bool QBasicAtomicInt::ref()
++{
++    int newValue;
++
++    Q_COMPILER_MEMORY_BARRIER;
++    newValue = __atomic_add_fetch(&_q_value, 1, __ATOMIC_ACQ_REL);
++    Q_COMPILER_MEMORY_BARRIER;
++
++    return newValue != 0;
++}
++
++inline bool QBasicAtomicInt::deref()
++{
++    int newValue;
++
++    Q_COMPILER_MEMORY_BARRIER;
++    newValue = __atomic_sub_fetch(&_q_value, 1, __ATOMIC_ACQ_REL);
++    Q_COMPILER_MEMORY_BARRIER;
++
++    return newValue != 0;
++}
++
++inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
++{
++    bool val;
++
++    Q_COMPILER_MEMORY_BARRIER;
++    val =  __atomic_compare_exchange_n (&_q_value, &expectedValue, &newValue,
++					false, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
++    Q_COMPILER_MEMORY_BARRIER;
++    return val;
++}
++
++inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
++{
++    int val;
++    Q_COMPILER_MEMORY_BARRIER;
++    val = __atomic_exchange_n(&_q_value, newValue, __ATOMIC_RELAXED);
++    Q_COMPILER_MEMORY_BARRIER;
++    return val;
++}
++
++inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
++{
++    int val;
++    Q_COMPILER_MEMORY_BARRIER;
++    val = __atomic_fetch_add(&_q_value, valueToAdd, __ATOMIC_RELAXED);
++    Q_COMPILER_MEMORY_BARRIER;
++    return val;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
++{
++    bool val;
++    Q_COMPILER_MEMORY_BARRIER;
++    val =  __atomic_compare_exchange_n (&_q_value, &expectedValue, &newValue,
++					false, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
++    Q_COMPILER_MEMORY_BARRIER;
++    return val;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
++{
++    T *val;
++    Q_COMPILER_MEMORY_BARRIER;
++    val = __atomic_exchange_n(&_q_value, newValue, __ATOMIC_RELAXED);
++    Q_COMPILER_MEMORY_BARRIER;
++    return val;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
++{
++    T *val;
++    Q_COMPILER_MEMORY_BARRIER;
++    val = __atomic_fetch_add(&_q_value, valueToAdd, __ATOMIC_RELAXED);
++    Q_COMPILER_MEMORY_BARRIER;
++    return val;
++}
++
++inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
++{
++    bool returnValue = testAndSetRelaxed(expectedValue, newValue);
++    Q_DATA_MEMORY_BARRIER;
++    return returnValue;
++}
++
++inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    return testAndSetRelaxed(expectedValue, newValue);
++}
++
++inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    bool returnValue = testAndSetRelaxed(expectedValue, newValue);
++    Q_COMPILER_MEMORY_BARRIER;
++    return returnValue;
++}
++
++inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
++{
++    int returnValue = fetchAndStoreRelaxed(newValue);
++    Q_DATA_MEMORY_BARRIER;
++    return returnValue;
++}
++
++inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    return fetchAndStoreRelaxed(newValue);
++}
++
++inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    int returnValue = fetchAndStoreRelaxed(newValue);
++    Q_COMPILER_MEMORY_BARRIER;
++    return returnValue;
++}
++
++inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
++{
++    int returnValue = fetchAndAddRelaxed(valueToAdd);
++    Q_DATA_MEMORY_BARRIER;
++    return returnValue;
++}
++
++inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
++{
++    Q_DATA_MEMORY_BARRIER;
++    return fetchAndAddRelaxed(valueToAdd);
++}
++
++inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
++{
++    Q_DATA_MEMORY_BARRIER;
++    int returnValue = fetchAndAddRelaxed(valueToAdd);
++    Q_COMPILER_MEMORY_BARRIER;
++    return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
++{
++    bool returnValue = testAndSetRelaxed(expectedValue, newValue);
++    Q_DATA_MEMORY_BARRIER;
++    return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    return testAndSetRelaxed(expectedValue, newValue);
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    bool returnValue = testAndSetAcquire(expectedValue, newValue);
++    Q_COMPILER_MEMORY_BARRIER;
++    return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
++{
++    T *returnValue = fetchAndStoreRelaxed(newValue);
++    Q_DATA_MEMORY_BARRIER;
++    return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    return fetchAndStoreRelaxed(newValue);
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    T *returnValue = fetchAndStoreRelaxed(newValue);
++    Q_COMPILER_MEMORY_BARRIER;
++    return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
++{
++    T *returnValue = fetchAndAddRelaxed(valueToAdd);
++    Q_DATA_MEMORY_BARRIER;
++    return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
++{
++    Q_DATA_MEMORY_BARRIER;
++    return fetchAndAddRelaxed(valueToAdd);
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
++{
++    Q_DATA_MEMORY_BARRIER;
++    T *returnValue = fetchAndAddRelaxed(valueToAdd);
++    Q_COMPILER_MEMORY_BARRIER;
++    return returnValue;
++}
++
++#undef Q_DATA_MEMORY_BARRIER
++#undef Q_COMPILER_MEMORY_BARRIER
++
++QT_END_NAMESPACE
++
++QT_END_HEADER
++
++#endif // QATOMIC_AARCH64_H
+Index: qt4-x11-4.8.5+git192-g085f851+dfsg/src/corelib/arch/qatomic_arch.h
+===================================================================
+--- qt4-x11-4.8.5+git192-g085f851+dfsg.orig/src/corelib/arch/qatomic_arch.h	2063-04-29 23:57:10.000000000 +0000
++++ qt4-x11-4.8.5+git192-g085f851+dfsg/src/corelib/arch/qatomic_arch.h	2063-04-29 23:57:10.000000000 +0000
+@@ -94,6 +94,8 @@
+ #  include "QtCore/qatomic_sh4a.h"
+ #elif defined(QT_ARCH_NACL)
+ #  include "QtCore/qatomic_generic.h"
++#elif defined(QT_ARCH_AARCH64)
++#  include "QtCore/qatomic_aarch64.h"
+ #else
+ #  error "Qt has not been ported to this architecture"
+ #endif
+Index: qt4-x11-4.8.5+git192-g085f851+dfsg/src/corelib/io/qfilesystemwatcher_inotify.cpp
+===================================================================
+--- qt4-x11-4.8.5+git192-g085f851+dfsg.orig/src/corelib/io/qfilesystemwatcher_inotify.cpp	2063-04-29 23:57:10.000000000 +0000
++++ qt4-x11-4.8.5+git192-g085f851+dfsg/src/corelib/io/qfilesystemwatcher_inotify.cpp	2063-04-29 23:57:10.000000000 +0000
+@@ -138,6 +138,11 @@
+ # define __NR_inotify_add_watch 285
+ # define __NR_inotify_rm_watch  286
+ # define __NR_inotify_init1     328
++#elif defined (__aarch64__)
++# define __NR_inotify_init1     26
++# define __NR_inotify_add_watch 27
++# define __NR_inotify_rm_watch  28
++// no inotify_init for aarch64
+ #else
+ # error "This architecture is not supported. Please talk to qt-bugs@trolltech.com"
+ #endif
+@@ -155,7 +160,11 @@
+ 
+ static inline int inotify_init()
+ {
++#ifdef __NR_inotify_init
+     return syscall(__NR_inotify_init);
++#else
++    return syscall(__NR_inotify_init1, 0);
++#endif
+ }
+ 
+ static inline int inotify_add_watch(int fd, const char *name, __u32 mask)
diff -Nru qt4-x11-4.8.5+git192-g085f851+dfsg/debian/patches/aarch64_fix_atomic_set.patch qt4-x11-4.8.5+git192-g085f851+dfsg/debian/patches/aarch64_fix_atomic_set.patch
--- qt4-x11-4.8.5+git192-g085f851+dfsg/debian/patches/aarch64_fix_atomic_set.patch	1970-01-01 00:00:00.000000000 +0000
+++ qt4-x11-4.8.5+git192-g085f851+dfsg/debian/patches/aarch64_fix_atomic_set.patch	2063-04-29 23:58:45.000000000 +0000
@@ -0,0 +1,29 @@
+Description: Fix aarch64 atomic test and set to set the right value.
+ QBasicAtomicInt::testAndSetRelaxed and
+ QBasicAtomicPointer<T>::testAndSetRelaxed would previously set the
+ target to a local stack frame pointer to the new value, rather than to
+ the new value itself.
+Author: William Grant <wgrant@ubuntu.com>
+
+Index: qt4-x11-4.8.4+dfsg/src/corelib/arch/qatomic_aarch64.h
+===================================================================
+--- qt4-x11-4.8.4+dfsg.orig/src/corelib/arch/qatomic_aarch64.h	2013-10-13 22:23:58.000000000 +1100
++++ qt4-x11-4.8.4+dfsg/src/corelib/arch/qatomic_aarch64.h	2013-10-13 22:24:56.810788571 +1100
+@@ -135,7 +135,7 @@
+     bool val;
+ 
+     Q_COMPILER_MEMORY_BARRIER;
+-    val =  __atomic_compare_exchange_n (&_q_value, &expectedValue, &newValue,
++    val =  __atomic_compare_exchange_n (&_q_value, &expectedValue, newValue,
+ 					false, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
+     Q_COMPILER_MEMORY_BARRIER;
+     return val;
+@@ -164,7 +164,7 @@
+ {
+     bool val;
+     Q_COMPILER_MEMORY_BARRIER;
+-    val =  __atomic_compare_exchange_n (&_q_value, &expectedValue, &newValue,
++    val =  __atomic_compare_exchange_n (&_q_value, &expectedValue, newValue,
+ 					false, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
+     Q_COMPILER_MEMORY_BARRIER;
+     return val;
diff -Nru qt4-x11-4.8.5+git192-g085f851+dfsg/debian/patches/series qt4-x11-4.8.5+git192-g085f851+dfsg/debian/patches/series
--- qt4-x11-4.8.5+git192-g085f851+dfsg/debian/patches/series	2013-12-05 19:29:51.000000000 +0000
+++ qt4-x11-4.8.5+git192-g085f851+dfsg/debian/patches/series	2063-04-29 23:58:45.000000000 +0000
@@ -43,3 +43,5 @@
 QTBUG-25324_assistant_segfault_on_start_with_gcc_4.7.patch
 qt-everywhere-opensource-src-4.8.5-QTBUG-22829.patch
 qtdoc-build-offline-docs.patch
+aarch64.patch
+aarch64_fix_atomic_set.patch
diff -Nru qt4-x11-4.8.5+git192-g085f851+dfsg/debian/rules qt4-x11-4.8.5+git192-g085f851+dfsg/debian/rules
--- qt4-x11-4.8.5+git192-g085f851+dfsg/debian/rules	2013-10-11 23:49:32.000000000 +0000
+++ qt4-x11-4.8.5+git192-g085f851+dfsg/debian/rules	2063-04-30 03:12:47.000000000 +0000
@@ -45,6 +45,11 @@
 	extra_configure_opts += -no-sql-sqlite2
 endif
 
+ifneq (,$(filter $(DEB_HOST_ARCH),arm64))
+        export CXXFLAGS := -fpermissive $(CXXFLAGS)
+        extra_configure_opts += -no-javascript-jit
+endif
+
 ifeq ($(DEB_HOST_ARCH),arm)
 	extra_configure_opts += -DQT_QLOCALE_USES_FCVT
 endif
@@ -70,7 +75,7 @@
 endif
 
 ifeq ($(DEB_HOST_ARCH_OS),linux)
-  ifneq (,$(filter $(DEB_HOST_ARCH),alpha ia64))
+  ifneq (,$(filter $(DEB_HOST_ARCH),alpha arm64 ia64))
 	platform_arg = linux-g++
   else ifeq ($(DEB_HOST_ARCH_BITS),64)
 	platform_arg = linux-g++-64
@@ -118,6 +123,8 @@
 	# syncqt and regenerating it.
 	rm -rf include
 
+	#update (3rdparty) autoconf files
+	dh_autotools-dev_updateconfig
 	./configure -confirm-license \
 	            -prefix "/usr" \
 	            -bindir "/usr/lib/$(DEB_HOST_MULTIARCH)/qt4/bin" \
@@ -184,6 +191,9 @@
 override_dh_auto_clean:
 	[ ! -f Makefile ] || $(MAKE) confclean distclean
 
+	# For freetype (3rdparty)
+	dh_autotools-dev_restoreconfig
+
 	# Extra stuff missed by confclean/distclean
 
 	# Misc. files
