]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Add support for arm64_linux26
authorAndrew Deason <adeason@sinenomine.net>
Sat, 7 Mar 2015 23:27:47 +0000 (17:27 -0600)
committerBenjamin Kaduk <kaduk@mit.edu>
Sat, 2 Jun 2018 22:45:09 +0000 (18:45 -0400)
Add support for the arm64/aarch64 architecture on Linux 2.6+. The
param header file is mostly combined from arm and amd64.

Note that the code for syscall interception has not been updated for
arm64, so this will not build on arm64 without support for kernel
keyrings. This also does not define any AFS syscall number, since no
number in the Linux arm64 syscall table is "free" for us to use, as
far as I am aware.

Adapted from initial patches from Micheal Waltz <mwaltz@qualcomm.com>.

Reviewed-on: https://gerrit.openafs.org/11940
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
(cherry picked from commit 4f7550dcaf9375046514cdd97cea0f667e955e9f)

Change-Id: I12988da1fbbc7e3733fddf4ca11ad65b96a9c02f
Reviewed-on: https://gerrit.openafs.org/13095
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
INSTALL
src/afs/afs_syscall.c
src/afs/sysincludes.h
src/cf/osconf.m4
src/cf/sysname.m4
src/config/afs_sysnames.h
src/config/param.arm64_linux26.h [new file with mode: 0644]

diff --git a/INSTALL b/INSTALL
index 3d802a72d3b413a06208af5b13a418dc6d64e653..920e23e615d3ff6e4ba59d4e556c748cede5468e 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -38,7 +38,7 @@ A  Configuring
          amd64_fbsd_93, amd64_fbsd_100, amd64_fbsd_101
       amd64_linux26
       amd64_nbsd20, amd64_nbsd30, amd64_nbsd40
-      arm_linux26
+      arm_linux26, arm64_linux26
       hp_ux11i, hp_ux110, hp_ux1123 (See notes below for information on
          getting missing header)
       hp_ux102 (Client port possible, but db servers and utilities work)
index b2b644ae1394d1542bc01cb4babdb3819adfd647..ce6afdf9a8677b8d0a207b2df832b1bbf22b528d 100644 (file)
@@ -141,6 +141,8 @@ copyin_afs_ioctl(caddr_t cmarg, struct afs_ioctl *dst)
     if (test_thread_flag(TIF_31BIT))
 #elif defined(AFS_S390X_LINUX20_ENV)
     if (current->thread.flags & S390_FLAG_31BIT)
+#elif defined(AFS_ARM64_LINUX26_ENV)
+    if (is_compat_task())
 
 #else
 #error pioctl32 not done for this linux
@@ -416,6 +418,8 @@ copyin_iparam(caddr_t cmarg, struct iparam *dst)
     if (test_thread_flag(TIF_31BIT))
 #elif defined(AFS_S390X_LINUX20_ENV)
     if (current->thread.flags & S390_FLAG_31BIT)
+#elif defined(AFS_ARM64_LINUX26_ENV)
+    if (is_compat_task())
 
 #else
 #error iparam32 not done for this linux platform
index 0e09271cdb83467dd634c030cd8f31e85aa2f59c..603773cfdd0960ee64751f645c0d524d5043dd00 100644 (file)
 # include <linux/kdev_t.h>
 # include <linux/ioctl.h>
 # if defined(AFS_LINUX26_ENV)
+#  include <linux/compat.h>
 #  include <linux/backing-dev.h>
 #  include <linux/pagemap.h>
 #  include <linux/namei.h>
index 214dc49b8cd15120479b6275fa3a6073d7bd0e71..469b92feb68e364c3ae40fc78f5aaeb10a5c471f 100644 (file)
@@ -69,7 +69,7 @@ case $AFS_SYSNAME in
                SHLIB_LINKER="${CC} -shared"
                ;;
 
-       arm_linux_24 | arm_linux26)
+       arm_linux_24 | arm_linux26 | arm64_linux26)
                CCOBJ="\$(CC) -fPIC"
                MT_CFLAGS='-pthread -D_REENTRANT'
                PAM_OPTMZ=-O2
index c4895a92a1f602d9d5284f17803cc5ef8eda06d3..ff15902dc49b3c4a7ce4faea7dffb0755a60b22c 100644 (file)
@@ -241,6 +241,9 @@ else
                 arm*-linux*)
                         AFS_SYSNAME="arm_linuxXX"
                         ;;
+                aarch64*-linux*)
+                        AFS_SYSNAME="arm64_linuxXX"
+                        ;;
                 parisc-*-linux-gnu|hppa-*-linux-gnu)
                         AFS_SYSNAME="parisc_linuxXX"
                         enable_pam="no"
index be27ae651e4b43d04a8de33c8be71a45503c5508..dc9e74aab188dcf7c7eb6611e933635f63af558d 100644 (file)
 #define SYS_NAME_ID_amd64_obsd53        4022
 #define SYS_NAME_ID_amd64_obsd54        4023
 
+#define SYS_NAME_ID_arm64_linux2       4100
+#define SYS_NAME_ID_arm64_linux26      4103
 
 #define        AFS_REALM_SZ    64
 
diff --git a/src/config/param.arm64_linux26.h b/src/config/param.arm64_linux26.h
new file mode 100644 (file)
index 0000000..02e867a
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2000, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ *
+ * This software has been released under the terms of the IBM Public
+ * License. For details, see the LICENSE file in the top-level source
+ * directory or online at http://www.openafs.org/dl/license10.html
+ */
+
+#ifndef AFS_PARAM_H
+#define AFS_PARAM_H
+
+#ifndef UKERNEL
+
+/* This section for kernel libafs compiles only */
+#define AFS_ARM64_LINUX26_ENV  1
+#define AFS_LINUX_64BIT_KERNEL 1
+#define AFS_64BITPOINTER_ENV   1       /* pointers are 64 bits */
+#define AFS_64BITUSERPOINTER_ENV       1
+#define AFS_MAXVCOUNT_ENV       1
+
+#else /* !defined(UKERNEL) */
+
+/* This section for user space compiles only */
+#define UKERNEL                        1       /* user space kernel */
+
+#endif /* !defined(UKERNEL) */
+
+#ifndef USE_UCONTEXT
+#define USE_UCONTEXT
+#endif
+
+/* Machine / Operating system information */
+#define SYS_NAME               "arm64_linux26"
+#define SYS_NAME_ID            SYS_NAME_ID_arm64_linux26
+#define AFSLITTLE_ENDIAN       1
+
+#endif /* AFS_PARAM_H */